From b8f760271a3e490729bd63b21964778e90288478 Mon Sep 17 00:00:00 2001 From: MartinGbz Date: Wed, 4 Dec 2024 10:34:37 +0100 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=94=A7=20wstETH=20reserve=20update?= =?UTF-8?q?=20(#540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ generate AIP * πŸ“ fix md * βœ… pushed tests * πŸ› fix snapshot links --- ...Lido_WstETHReserveUpdate_20241203_after.md | 35 ++++++++++ ...reum_WstETHReserveUpdate_20241203_after.md | 40 ++++++++++++ ...ereumLido_WstETHReserveUpdate_20241203.sol | 34 ++++++++++ ...eumLido_WstETHReserveUpdate_20241203.t.sol | 32 +++++++++ ...3Ethereum_WstETHReserveUpdate_20241203.sol | 34 ++++++++++ ...thereum_WstETHReserveUpdate_20241203.t.sol | 32 +++++++++ .../WstETHReserveUpdate.md | 59 +++++++++++++++++ .../WstETHReserveUpdate_20241203.s.sol | 65 +++++++++++++++++++ .../config.ts | 48 ++++++++++++++ 9 files changed, 379 insertions(+) create mode 100644 diffs/AaveV3EthereumLido_WstETHReserveUpdate_20241203_before_AaveV3EthereumLido_WstETHReserveUpdate_20241203_after.md create mode 100644 diffs/AaveV3Ethereum_WstETHReserveUpdate_20241203_before_AaveV3Ethereum_WstETHReserveUpdate_20241203_after.md create mode 100644 src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol create mode 100644 src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol create mode 100644 src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol create mode 100644 src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol create mode 100644 src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md create mode 100644 src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.s.sol create mode 100644 src/20241203_Multi_WstETHReserveUpdate/config.ts diff --git a/diffs/AaveV3EthereumLido_WstETHReserveUpdate_20241203_before_AaveV3EthereumLido_WstETHReserveUpdate_20241203_after.md b/diffs/AaveV3EthereumLido_WstETHReserveUpdate_20241203_before_AaveV3EthereumLido_WstETHReserveUpdate_20241203_after.md new file mode 100644 index 000000000..b63bada9d --- /dev/null +++ b/diffs/AaveV3EthereumLido_WstETHReserveUpdate_20241203_before_AaveV3EthereumLido_WstETHReserveUpdate_20241203_after.md @@ -0,0 +1,35 @@ +## Reserve changes + +### Reserves altered + +#### wstETH ([0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0](https://etherscan.io/address/0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0)) + +| description | value before | value after | +| --- | --- | --- | +| optimalUsageRatio | 80 % | 90 % | +| maxVariableBorrowRate | 87.25 % | 86.75 % | +| variableRateSlope1 | 2.25 % | 1.75 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=22500000000000000000000000&variableRateSlope2=850000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=872500000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=17500000000000000000000000&variableRateSlope2=850000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=867500000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0": { + "maxVariableBorrowRate": { + "from": "872500000000000000000000000", + "to": "867500000000000000000000000" + }, + "optimalUsageRatio": { + "from": "800000000000000000000000000", + "to": "900000000000000000000000000" + }, + "variableRateSlope1": { + "from": "22500000000000000000000000", + "to": "17500000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_WstETHReserveUpdate_20241203_before_AaveV3Ethereum_WstETHReserveUpdate_20241203_after.md b/diffs/AaveV3Ethereum_WstETHReserveUpdate_20241203_before_AaveV3Ethereum_WstETHReserveUpdate_20241203_after.md new file mode 100644 index 000000000..6b11c208f --- /dev/null +++ b/diffs/AaveV3Ethereum_WstETHReserveUpdate_20241203_before_AaveV3Ethereum_WstETHReserveUpdate_20241203_after.md @@ -0,0 +1,40 @@ +## Reserve changes + +### Reserves altered + +#### wstETH ([0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0](https://etherscan.io/address/0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0)) + +| description | value before | value after | +| --- | --- | --- | +| optimalUsageRatio | 45 % | 80 % | +| maxVariableBorrowRate | 82 % | 86.75 % | +| variableRateSlope1 | 2 % | 1.75 % | +| variableRateSlope2 | 80 % | 85 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=20000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=450000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=820000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=17500000000000000000000000&variableRateSlope2=850000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=867500000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0": { + "maxVariableBorrowRate": { + "from": "820000000000000000000000000", + "to": "867500000000000000000000000" + }, + "optimalUsageRatio": { + "from": "450000000000000000000000000", + "to": "800000000000000000000000000" + }, + "variableRateSlope1": { + "from": "20000000000000000000000000", + "to": "17500000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "850000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol b/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol new file mode 100644 index 000000000..b5a2d55cb --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumLidoAssets} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {AaveV3PayloadEthereumLido} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereumLido.sol'; +import {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; +/** + * @title wstETH Reserve Update + * @author ACI + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973 + */ +contract AaveV3EthereumLido_WstETHReserveUpdate_20241203 is AaveV3PayloadEthereumLido { + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumLidoAssets.wstETH_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 90_00, + baseVariableBorrowRate: 0, + variableRateSlope1: 1_75, + variableRateSlope2: 85_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol b/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol new file mode 100644 index 000000000..1a4f50983 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumLido} from 'aave-address-book/AaveV3EthereumLido.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3EthereumLido_WstETHReserveUpdate_20241203} from './AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol'; + +/** + * @dev Test for AaveV3EthereumLido_WstETHReserveUpdate_20241203 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol -vv + */ +contract AaveV3EthereumLido_WstETHReserveUpdate_20241203_Test is ProtocolV3TestBase { + AaveV3EthereumLido_WstETHReserveUpdate_20241203 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21322524); + proposal = new AaveV3EthereumLido_WstETHReserveUpdate_20241203(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3EthereumLido_WstETHReserveUpdate_20241203', + AaveV3EthereumLido.POOL, + address(proposal) + ); + } +} diff --git a/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol b/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol new file mode 100644 index 000000000..bb0494603 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol @@ -0,0 +1,34 @@ +// 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 {IAaveV3ConfigEngine} from 'aave-v3-origin/contracts/extensions/v3-config-engine/IAaveV3ConfigEngine.sol'; +/** + * @title wstETH Reserve Update + * @author ACI + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973 + */ +contract AaveV3Ethereum_WstETHReserveUpdate_20241203 is AaveV3PayloadEthereum { + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.wstETH_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 80_00, + baseVariableBorrowRate: 0, + variableRateSlope1: 1_75, + variableRateSlope2: 85_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol b/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol new file mode 100644 index 000000000..6c2de8f31 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol @@ -0,0 +1,32 @@ +// 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_WstETHReserveUpdate_20241203} from './AaveV3Ethereum_WstETHReserveUpdate_20241203.sol'; + +/** + * @dev Test for AaveV3Ethereum_WstETHReserveUpdate_20241203 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol -vv + */ +contract AaveV3Ethereum_WstETHReserveUpdate_20241203_Test is ProtocolV3TestBase { + AaveV3Ethereum_WstETHReserveUpdate_20241203 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21322520); + proposal = new AaveV3Ethereum_WstETHReserveUpdate_20241203(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Ethereum_WstETHReserveUpdate_20241203', + AaveV3Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md new file mode 100644 index 000000000..21ca59e95 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md @@ -0,0 +1,59 @@ +--- +title: "wstETH Reserve Update" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973" +snapshot: Direct-to-AIP +--- + +## Simple Summary + +The publication using the Direct-to-AIP process, proposes increasing the capital efficiency of the wstETH Reserve on both Prime and Core instances of Aave v3. This is a Direct to AIP proposal. + +## Motivation + +### Prime Instance + +The addition of ezETH has resulted in over $620M in direct deposits and approximately $520M in wstETH debt. With yield from EIGEN decreasing and Renzo’s Season 3 rewards nearing expiration, this publication proposes amending the wstETH Reserve parameters to enhance capital efficiency and support user retention. + +We have engaged with several builders and investors with significant capital deployed on the Prime instance. Currently, leveraged ezETH/wstETH users are primarily sustained by Renzo’s Season 3 rewards, which are set to expire soon. While an additional $100M of USDS is expected in the coming days, this alone will not be sufficient to retain existing users. + +### Core Instance + +Based on strong demand for wstETH following the rsETH onboarding, this proposal, when implemented, will make a larger portion of wstETH liquidity available. + +Discussions with the Kelp team and various investors indicate significant demand wstETH deb by rsETH holders. To accelerate Aave’s growth, the Uoptimal on the wstETH Reserve is be adjusted higher to make available a greater portion of the wstETH liquidity. + +## Specification + +### Prime Instance + +**wstETH Reserve** + +| Parameter | Current Value | Proposed Value | +| --------- | ------------- | -------------- | +| Uoptimal | 80.00% | 90.00% | +| Base | 0.00% | 0.00% | +| Slope1 | 2.25% | 1.75% | +| Slope2 | 85.00% | 85.00% | + +### Core Instance + +**wstETH Reserve** + +| Parameter | Current Value | Proposed Value | +| --------- | ------------- | -------------- | +| Uoptimal | 45.00% | 80.00% | +| Base | 0.00% | 0.00% | +| Slope1 | 2.00% | 1.75% | +| Slope2 | 85.00% | 85.00% | + +## References + +- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol) +- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol) +- Snapshot: Direct-to-AIP +- [Discussion](https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.s.sol b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.s.sol new file mode 100644 index 000000000..7ee7e3bc4 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.s.sol @@ -0,0 +1,65 @@ +// 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 {EthereumScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3Ethereum_WstETHReserveUpdate_20241203} from './AaveV3Ethereum_WstETHReserveUpdate_20241203.sol'; +import {AaveV3EthereumLido_WstETHReserveUpdate_20241203} from './AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=mainnet npx catapulta-verify -b broadcast/WstETHReserveUpdate_20241203.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Ethereum_WstETHReserveUpdate_20241203).creationCode + ); + address payload1 = GovV3Helpers.deployDeterministic( + type(AaveV3EthereumLido_WstETHReserveUpdate_20241203).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](2); + actions[0] = GovV3Helpers.buildAction(payload0); + actions[1] = GovV3Helpers.buildAction(payload1); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Create Proposal + * command: make deploy-ledger contract=src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate_20241203.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[](2); + actionsEthereum[0] = GovV3Helpers.buildAction( + type(AaveV3Ethereum_WstETHReserveUpdate_20241203).creationCode + ); + actionsEthereum[1] = GovV3Helpers.buildAction( + type(AaveV3EthereumLido_WstETHReserveUpdate_20241203).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile(vm, 'src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md') + ); + } +} diff --git a/src/20241203_Multi_WstETHReserveUpdate/config.ts b/src/20241203_Multi_WstETHReserveUpdate/config.ts new file mode 100644 index 000000000..b3101e140 --- /dev/null +++ b/src/20241203_Multi_WstETHReserveUpdate/config.ts @@ -0,0 +1,48 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3Ethereum', 'AaveV3EthereumLido'], + title: 'wstETH Reserve Update', + shortName: 'WstETHReserveUpdate', + date: '20241203', + author: 'ACI', + discussion: + 'https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973', + snapshot: '', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3Ethereum: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'wstETH', + params: { + optimalUtilizationRate: '80', + baseVariableBorrowRate: '0', + variableRateSlope1: '1.75', + variableRateSlope2: '85', + }, + }, + ], + }, + cache: {blockNumber: 21322520}, + }, + AaveV3EthereumLido: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'wstETH', + params: { + optimalUtilizationRate: '90', + baseVariableBorrowRate: '0', + variableRateSlope1: '1.75', + variableRateSlope2: '85', + }, + }, + ], + }, + cache: {blockNumber: 21322524}, + }, + }, +}; From abf32f2b47fce044f7e49b265db14dbb781116dd Mon Sep 17 00:00:00 2001 From: Cache bot Date: Wed, 4 Dec 2024 09:35:10 +0000 Subject: [PATCH 02/10] fix(cache): automated cache update [skip ci] --- src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md index 21ca59e95..572a72ff3 100644 --- a/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md +++ b/src/20241203_Multi_WstETHReserveUpdate/WstETHReserveUpdate.md @@ -49,8 +49,8 @@ Discussions with the Kelp team and various investors indicate significant demand ## References -- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol) -- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol) +- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b8f760271a3e490729bd63b21964778e90288478/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/b8f760271a3e490729bd63b21964778e90288478/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.sol) +- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b8f760271a3e490729bd63b21964778e90288478/src/20241203_Multi_WstETHReserveUpdate/AaveV3Ethereum_WstETHReserveUpdate_20241203.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/b8f760271a3e490729bd63b21964778e90288478/src/20241203_Multi_WstETHReserveUpdate/AaveV3EthereumLido_WstETHReserveUpdate_20241203.t.sol) - Snapshot: Direct-to-AIP - [Discussion](https://governance.aave.com/t/arfc-prime-core-instance-wsteth-reserve-update/19973) From 7c0c1d5c758400b7fecdf079aa669448d0165579 Mon Sep 17 00:00:00 2001 From: MartinGbz Date: Tue, 10 Dec 2024 11:36:30 +0100 Subject: [PATCH 03/10] =?UTF-8?q?=E2=9C=A8=20Onboard=20rsETH=20Lido=20inst?= =?UTF-8?q?ance=20(#542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ add AIP * πŸ“ fix md * πŸ› fix rsETH_ADMIN * πŸ”§ fix seed amount * πŸ› fix reserve factor * βœ… mock tests * πŸ”₯ remove mock * πŸ“ fix snapshot TODO * πŸ› fix emode * πŸ“ add emode specs * πŸ“ fix one last todo --- ...boardRsETHToLidoInstance_20241205_after.md | 156 ++++++++++++++++++ ...do_OnboardRsETHToLidoInstance_20241205.sol | 112 +++++++++++++ ..._OnboardRsETHToLidoInstance_20241205.t.sol | 64 +++++++ .../OnboardRsETHToLidoInstance.md | 66 ++++++++ .../OnboardRsETHToLidoInstance_20241205.s.sol | 60 +++++++ .../config.ts | 70 ++++++++ 6 files changed, 528 insertions(+) create mode 100644 diffs/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_before_AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_after.md create mode 100644 src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol create mode 100644 src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol create mode 100644 src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md create mode 100644 src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.s.sol create mode 100644 src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/config.ts diff --git a/diffs/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_before_AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_after.md b/diffs/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_before_AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_after.md new file mode 100644 index 000000000..b0f1a99ba --- /dev/null +++ b/diffs/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_before_AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_after.md @@ -0,0 +1,156 @@ +## Reserve changes + +### Reserves added + +#### rsETH ([0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7](https://etherscan.io/address/0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7)) + +| description | value | +| --- | --- | +| decimals | 18 | +| isActive | true | +| isFrozen | false | +| supplyCap | 10,000 rsETH | +| borrowCap | 1 rsETH | +| debtCeiling | 0 $ [0] | +| isSiloed | false | +| isFlashloanable | true | +| oracle | [0x47F52B2e43D0386cF161e001835b03Ad49889e3b](https://etherscan.io/address/0x47F52B2e43D0386cF161e001835b03Ad49889e3b) | +| oracleDecimals | 8 | +| oracleDescription | Capped rsETH / ETH / USD | +| oracleLatestAnswer | 4023.47907549 | +| usageAsCollateralEnabled | true | +| ltv | 0.05 % [5] | +| liquidationThreshold | 0.1 % [10] | +| liquidationBonus | 7.5 % | +| liquidationProtocolFee | 10 % [1000] | +| reserveFactor | 0.15 % [15] | +| aToken | [0x18eFE565A5373f430e2F809b97De30335B3ad96A](https://etherscan.io/address/0x18eFE565A5373f430e2F809b97De30335B3ad96A) | +| aTokenImpl | [0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2](https://etherscan.io/address/0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2) | +| variableDebtToken | [0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8](https://etherscan.io/address/0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8) | +| variableDebtTokenImpl | [0x3E59212c34588a63350142EFad594a20C88C2CEd](https://etherscan.io/address/0x3E59212c34588a63350142EFad594a20C88C2CEd) | +| borrowingEnabled | false | +| isBorrowableInIsolation | false | +| interestRateStrategy | [0x8958b1C39269167527821f8c276Ef7504883f2fa](https://etherscan.io/address/0x8958b1C39269167527821f8c276Ef7504883f2fa) | +| aTokenName | Aave Ethereum Lido rsETH | +| aTokenSymbol | aEthLidorsETH | +| aTokenUnderlyingBalance | 0.03 rsETH [30000000000000000] | +| id | 6 | +| isPaused | false | +| variableDebtTokenName | Aave Ethereum Lido Variable Debt rsETH | +| variableDebtTokenSymbol | variableDebtEthLidorsETH | +| virtualAccountingActive | true | +| virtualBalance | 0.03 rsETH [30000000000000000] | +| optimalUsageRatio | 1 % | +| maxVariableBorrowRate | 110 % | +| baseVariableBorrowRate | 0 % | +| variableRateSlope1 | 10 % | +| variableRateSlope2 | 100 % | +| interestRate | ![ir](https://dash.onaave.com/api/static?variableRateSlope1=100000000000000000000000000&variableRateSlope2=1000000000000000000000000000&optimalUsageRatio=10000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=1100000000000000000000000000) | + + +## Emodes changed + +### EMode: ETH correlated(id: 1) + + + +### EMode: LRT Stablecoins main(id: 2) + + + +### EMode: LRT wstETH main(id: 3) + + + +### EMode: sUSDe Stablecoins(id: 4) + + + +### EMode: rsETH LST main(id: 5) + +| description | value before | value after | +| --- | --- | --- | +| eMode.label | - | rsETH LST main | +| eMode.ltv | - | 92.5 % | +| eMode.liquidationThreshold | - | 94.5 % | +| eMode.liquidationBonus | - | 1 % | +| eMode.borrowableBitmap | - | wstETH | +| eMode.collateralBitmap | - | rsETH | + + +## Raw diff + +```json +{ + "eModes": { + "5": { + "from": null, + "to": { + "borrowableBitmap": "1", + "collateralBitmap": "64", + "eModeCategory": 5, + "label": "rsETH LST main", + "liquidationBonus": 10100, + "liquidationThreshold": 9450, + "ltv": 9250 + } + } + }, + "reserves": { + "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7": { + "from": null, + "to": { + "aToken": "0x18eFE565A5373f430e2F809b97De30335B3ad96A", + "aTokenImpl": "0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2", + "aTokenName": "Aave Ethereum Lido rsETH", + "aTokenSymbol": "aEthLidorsETH", + "aTokenUnderlyingBalance": "30000000000000000", + "borrowCap": 1, + "borrowingEnabled": false, + "debtCeiling": 0, + "decimals": 18, + "id": 6, + "interestRateStrategy": "0x8958b1C39269167527821f8c276Ef7504883f2fa", + "isActive": true, + "isBorrowableInIsolation": false, + "isFlashloanable": true, + "isFrozen": false, + "isPaused": false, + "isSiloed": false, + "liquidationBonus": 10750, + "liquidationProtocolFee": 1000, + "liquidationThreshold": 10, + "ltv": 5, + "oracle": "0x47F52B2e43D0386cF161e001835b03Ad49889e3b", + "oracleDecimals": 8, + "oracleDescription": "Capped rsETH / ETH / USD", + "oracleLatestAnswer": "402347907549", + "reserveFactor": 15, + "supplyCap": 10000, + "symbol": "rsETH", + "underlying": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "usageAsCollateralEnabled": true, + "variableDebtToken": "0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8", + "variableDebtTokenImpl": "0x3E59212c34588a63350142EFad594a20C88C2CEd", + "variableDebtTokenName": "Aave Ethereum Lido Variable Debt rsETH", + "variableDebtTokenSymbol": "variableDebtEthLidorsETH", + "virtualAccountingActive": true, + "virtualBalance": "30000000000000000" + } + } + }, + "strategies": { + "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7": { + "from": null, + "to": { + "address": "0x8958b1C39269167527821f8c276Ef7504883f2fa", + "baseVariableBorrowRate": "0", + "maxVariableBorrowRate": "1100000000000000000000000000", + "optimalUsageRatio": "10000000000000000000000000", + "variableRateSlope1": "100000000000000000000000000", + "variableRateSlope2": "1000000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol new file mode 100644 index 000000000..d3196ded2 --- /dev/null +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumLido, AaveV3EthereumLidoAssets, AaveV3EthereumLidoEModes} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {AaveV3PayloadEthereumLido} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereumLido.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'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; +/** + * @title Onboard rsETH to Lido Instance + * @author ACI + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-add-rseth-to-aave-v3-ethereum/17696/18 + */ +contract AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205 is AaveV3PayloadEthereumLido { + using SafeERC20 for IERC20; + + address public constant rsETH = 0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7; + uint256 public constant rsETH_SEED_AMOUNT = 0.03 * 1e18; + address public constant rsETH_ADMIN = 0xac140648435d03f784879cd789130F22Ef588Fcd; + + function _postExecute() internal override { + IERC20(rsETH).forceApprove(address(AaveV3EthereumLido.POOL), rsETH_SEED_AMOUNT); + AaveV3EthereumLido.POOL.supply( + rsETH, + rsETH_SEED_AMOUNT, + address(AaveV3EthereumLido.COLLECTOR), + 0 + ); + + (address arsETH, , ) = AaveV3EthereumLido.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses( + rsETH + ); + IEmissionManager(AaveV3EthereumLido.EMISSION_MANAGER).setEmissionAdmin(rsETH, rsETH_ADMIN); + IEmissionManager(AaveV3EthereumLido.EMISSION_MANAGER).setEmissionAdmin(arsETH, rsETH_ADMIN); + } + + function eModeCategoriesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.EModeCategoryUpdate[] memory) + { + IAaveV3ConfigEngine.EModeCategoryUpdate[] + memory eModeUpdates = new IAaveV3ConfigEngine.EModeCategoryUpdate[](1); + + eModeUpdates[0] = IAaveV3ConfigEngine.EModeCategoryUpdate({ + eModeCategory: 5, + ltv: 92_50, + liqThreshold: 94_50, + liqBonus: 1_00, + label: 'rsETH LST main' + }); + + return eModeUpdates; + } + function assetsEModeUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.AssetEModeUpdate[] memory) + { + IAaveV3ConfigEngine.AssetEModeUpdate[] + memory assetEModeUpdates = new IAaveV3ConfigEngine.AssetEModeUpdate[](2); + + assetEModeUpdates[0] = IAaveV3ConfigEngine.AssetEModeUpdate({ + asset: AaveV3EthereumLidoAssets.wstETH_UNDERLYING, + eModeCategory: 5, + borrowable: EngineFlags.ENABLED, + collateral: EngineFlags.DISABLED + }); + assetEModeUpdates[1] = IAaveV3ConfigEngine.AssetEModeUpdate({ + asset: rsETH, + eModeCategory: 5, + borrowable: EngineFlags.DISABLED, + collateral: EngineFlags.ENABLED + }); + + return assetEModeUpdates; + } + function newListings() public pure override returns (IAaveV3ConfigEngine.Listing[] memory) { + IAaveV3ConfigEngine.Listing[] memory listings = new IAaveV3ConfigEngine.Listing[](1); + + listings[0] = IAaveV3ConfigEngine.Listing({ + asset: rsETH, + assetSymbol: 'rsETH', + priceFeed: 0x47F52B2e43D0386cF161e001835b03Ad49889e3b, + enabledToBorrow: EngineFlags.DISABLED, + borrowableInIsolation: EngineFlags.DISABLED, + withSiloedBorrowing: EngineFlags.DISABLED, + flashloanable: EngineFlags.ENABLED, + ltv: 5, + liqThreshold: 10, + liqBonus: 7_50, + reserveFactor: 15, + supplyCap: 10_000, + borrowCap: 1, + debtCeiling: 0, + liqProtocolFee: 10_00, + rateStrategyParams: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 1_00, + baseVariableBorrowRate: 0, + variableRateSlope1: 10_00, + variableRateSlope2: 100_00 + }) + }); + + return listings; + } +} diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol new file mode 100644 index 000000000..44c64b415 --- /dev/null +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers} from 'aave-helpers/src/GovV3Helpers.sol'; +import {AaveV3EthereumLido} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205} from './AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol'; + +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; + +/** + * @dev Test for AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol -vv + */ +contract AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205_Test is ProtocolV3TestBase { + AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21365501); + + proposal = new AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205', + AaveV3EthereumLido.POOL, + address(proposal) + ); + } + + function test_collectorHasrsETHFunds() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address aTokenAddress, , ) = AaveV3EthereumLido + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(proposal.rsETH()); + assertGe( + IERC20(aTokenAddress).balanceOf(address(AaveV3EthereumLido.COLLECTOR)), + 0.03 * 10 ** 18 + ); + } + + function test_rsETHAdmin() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address arsETH, , ) = AaveV3EthereumLido.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses( + proposal.rsETH() + ); + assertEq( + IEmissionManager(AaveV3EthereumLido.EMISSION_MANAGER).getEmissionAdmin(proposal.rsETH()), + proposal.rsETH_ADMIN() + ); + assertEq( + IEmissionManager(AaveV3EthereumLido.EMISSION_MANAGER).getEmissionAdmin(arsETH), + proposal.rsETH_ADMIN() + ); + } +} diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md new file mode 100644 index 000000000..8b764cda9 --- /dev/null +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md @@ -0,0 +1,66 @@ +--- +title: "Onboard rsETH to Lido Instance" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-add-rseth-to-aave-v3-ethereum/17696/18" +snapshot: Direct-to-AIP +--- + +## Simple Summary + +The current ARFC Addendum seeks to onboard rsETH to Lido Instance. This integration aligns with the recent support for rsETH in Aave Mainnet Instance, as outlined in the ARFC proposal and the AIP that is live. + +This will be a Direct to Direct AIP Proposal so we can align with the final AIP and onboarding of rsETH in Mainnet Instance. + +## Motivation + +With rsETH set to become a reality on Aave v3 Ethereum, integrating it into the Lido Instance offers deeper liquidity, higher composability, and more strategic borrowing opportunities for users. Given the synergy between wstETH and rsETH as liquid staking derivatives (LSDs), enabling eMode will maximize capital efficiency for borrowers while maintaining a conservative risk approach. + +## Specification + +The table below illustrates the configured risk parameters for **rsETH** + +| Parameter | Value | +| ------------------------- | -----------------------------------------: | +| Isolation Mode | false | +| Borrowable | DISABLED | +| Collateral Enabled | true | +| Supply Cap (rsETH) | 10,000 | +| Borrow Cap (rsETH) | 1 | +| Debt Ceiling | USD 0 | +| LTV | 0.05 % | +| LT | 0.1 % | +| Liquidation Bonus | 7.5 % | +| Liquidation Protocol Fee | 10 % | +| Reserve Factor | 15 % | +| Base Variable Borrow Rate | 0 % | +| Variable Slope 1 | 10 % | +| Variable Slope 2 | 100 % | +| Uoptimal | 1 % | +| Flashloanable | ENABLED | +| Siloed Borrowing | DISABLED | +| Borrowable in Isolation | DISABLED | +| Oracle | 0x47F52B2e43D0386cF161e001835b03Ad49889e3b | + +Additionaly [0xac140648435d03f784879cd789130F22Ef588Fcd](https://etherscan.io/address/0xac140648435d03f784879cd789130F22Ef588Fcd) has been set as the emission admin for rsETH and the corresponding aToken. + +### E-mode Specification + +| **Parameter** | Value | **Value** | +| --------------------- | ------ | --------- | +| Asset | rsETH | wstETH | +| Collateral | Yes | No | +| Borrowable | No | Yes | +| Max LTV | 92.50% | - | +| Liquidation Threshold | 94.50% | - | +| Liquidation Bonus | 1.00% | - | + +## References + +- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol) +- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol) +- Snapshot: Direct-to-AIP +- [Discussion](https://governance.aave.com/t/arfc-add-rseth-to-aave-v3-ethereum/17696/18) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.s.sol b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.s.sol new file mode 100644 index 000000000..97f66ca03 --- /dev/null +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.s.sol @@ -0,0 +1,60 @@ +// 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 {EthereumScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205} from './AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=mainnet npx catapulta-verify -b broadcast/OnboardRsETHToLidoInstance_20241205.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205).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/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance_20241205.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(AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md' + ) + ); + } +} diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/config.ts b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/config.ts new file mode 100644 index 000000000..4fa60bd49 --- /dev/null +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/config.ts @@ -0,0 +1,70 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3EthereumLido'], + title: 'Onboard rsETH to Lido Instance', + shortName: 'OnboardRsETHToLidoInstance', + date: '20241205', + author: 'ACI', + discussion: 'https://governance.aave.com/t/arfc-add-rseth-to-aave-v3-ethereum/17696/18', + snapshot: '', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3EthereumLido: { + configs: { + EMODES_UPDATES: [ + { + eModeCategory: 5, + ltv: '92.5', + liqThreshold: '94.5', + liqBonus: '1', + label: 'rsETH LST main', + }, + ], + EMODES_ASSETS: [ + { + asset: 'wstETH', + eModeCategory: 'AaveV3EthereumLidoEModes.ETH_CORRELATED', + collateral: 'DISABLED', + borrowable: 'ENABLED', + }, + { + asset: 'ezETH', + eModeCategory: 'AaveV3EthereumLidoEModes.ETH_CORRELATED', + collateral: 'ENABLED', + borrowable: 'DISABLED', + }, + ], + ASSET_LISTING: [ + { + assetSymbol: 'rsETH', + decimals: 18, + priceFeed: '0x47F52B2e43D0386cF161e001835b03Ad49889e3b', + ltv: '0.05', + liqThreshold: '0.1', + liqBonus: '7.5', + debtCeiling: '0', + liqProtocolFee: '10', + enabledToBorrow: 'DISABLED', + flashloanable: 'ENABLED', + borrowableInIsolation: 'DISABLED', + withSiloedBorrowing: 'DISABLED', + reserveFactor: '15', + supplyCap: '10000', + borrowCap: '1', + rateStrategyParams: { + optimalUtilizationRate: '1', + baseVariableBorrowRate: '0', + variableRateSlope1: '10', + variableRateSlope2: '100', + }, + asset: '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7', + admin: '0xac140648435d03f784879cd789130F22Ef588Fcd', + }, + ], + }, + cache: {blockNumber: 21335607}, + }, + }, +}; From 3432202c68068f3bea881ae1b51e73f7428fb43c Mon Sep 17 00:00:00 2001 From: Cache bot Date: Tue, 10 Dec 2024 10:36:58 +0000 Subject: [PATCH 04/10] fix(cache): automated cache update [skip ci] --- .../OnboardRsETHToLidoInstance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md index 8b764cda9..1503a5dfd 100644 --- a/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md +++ b/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/OnboardRsETHToLidoInstance.md @@ -56,8 +56,8 @@ Additionaly [0xac140648435d03f784879cd789130F22Ef588Fcd](https://etherscan.io/ad ## References -- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol) -- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol) +- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/7c0c1d5c758400b7fecdf079aa669448d0165579/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.sol) +- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/7c0c1d5c758400b7fecdf079aa669448d0165579/src/20241205_AaveV3EthereumLido_OnboardRsETHToLidoInstance/AaveV3EthereumLido_OnboardRsETHToLidoInstance_20241205.t.sol) - Snapshot: Direct-to-AIP - [Discussion](https://governance.aave.com/t/arfc-add-rseth-to-aave-v3-ethereum/17696/18) From 2ccea23f34b42c480651aa629f810783e273b83f Mon Sep 17 00:00:00 2001 From: Lucas Wong <101302451+LucasWongC@users.noreply.github.com> Date: Tue, 10 Dec 2024 05:56:25 -0800 Subject: [PATCH 05/10] Add GHO & Migrate Merit Allowance - Prime Instance (#543) * onboard gho on lido instance & migrate streams & cancel allowance * variables updated * added snapshot link * swap part added * test added * test for swap * initial fund and parameters chagned * added emode updates * removed comments * merit allownce move * update md * update md * handle feedback * useAsCollaternal disabled * update md * moved merit allowance to execute function * removed usdc withdraw from v2 and withdrawed from v3 * modified md file * removed aave-swapper update part * updated params on gho listing * added initial function from collector * update md --- ...ateStreamsToLidoInstance_20241104_after.md | 158 ++++++++++++++ ...dMigrateStreamsToLidoInstance_20241104.sol | 192 +++++++++++++++++ ...igrateStreamsToLidoInstance_20241104.t.sol | 197 ++++++++++++++++++ ...boardGHOAndMigrateStreamsToLidoInstance.md | 110 ++++++++++ ...igrateStreamsToLidoInstance_20241104.s.sol | 60 ++++++ .../config.ts | 69 ++++++ 6 files changed, 786 insertions(+) create mode 100644 diffs/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_before_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_after.md create mode 100644 src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol create mode 100644 src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol create mode 100644 src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md create mode 100644 src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol create mode 100644 src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/config.ts diff --git a/diffs/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_before_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_after.md b/diffs/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_before_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_after.md new file mode 100644 index 000000000..ce94f0aba --- /dev/null +++ b/diffs/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_before_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_after.md @@ -0,0 +1,158 @@ +## Reserve changes + +### Reserves added + +#### GHO ([0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f](https://etherscan.io/address/0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f)) + +| description | value | +| --- | --- | +| decimals | 18 | +| isActive | true | +| isFrozen | false | +| supplyCap | 20,000,000 GHO | +| borrowCap | 2,500,000 GHO | +| debtCeiling | 0 $ [0] | +| isSiloed | false | +| isFlashloanable | true | +| oracle | [0xD110cac5d8682A3b045D5524a9903E031d70FCCd](https://etherscan.io/address/0xD110cac5d8682A3b045D5524a9903E031d70FCCd) | +| oracleDecimals | 8 | +| oracleLatestAnswer | 1 | +| usageAsCollateralEnabled | false | +| ltv | 0 % [0] | +| liquidationThreshold | 0 % [0] | +| liquidationBonus | 0 % | +| liquidationProtocolFee | 0 % [0] | +| reserveFactor | 10 % [1000] | +| aToken | [0x18eFE565A5373f430e2F809b97De30335B3ad96A](https://etherscan.io/address/0x18eFE565A5373f430e2F809b97De30335B3ad96A) | +| aTokenImpl | [0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2](https://etherscan.io/address/0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2) | +| variableDebtToken | [0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8](https://etherscan.io/address/0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8) | +| variableDebtTokenImpl | [0x3E59212c34588a63350142EFad594a20C88C2CEd](https://etherscan.io/address/0x3E59212c34588a63350142EFad594a20C88C2CEd) | +| borrowingEnabled | true | +| isBorrowableInIsolation | false | +| interestRateStrategy | [0x8958b1C39269167527821f8c276Ef7504883f2fa](https://etherscan.io/address/0x8958b1C39269167527821f8c276Ef7504883f2fa) | +| aTokenName | Aave Ethereum Lido GHO | +| aTokenSymbol | aEthLidoGHO | +| aTokenUnderlyingBalance | 3,000,000 GHO [3000000000000000000000000] | +| id | 6 | +| isPaused | false | +| variableDebtTokenName | Aave Ethereum Lido Variable Debt GHO | +| variableDebtTokenSymbol | variableDebtEthLidoGHO | +| virtualAccountingActive | true | +| virtualBalance | 3,000,000 GHO [3000000000000000000000000] | +| optimalUsageRatio | 92 % | +| maxVariableBorrowRate | 63.5 % | +| baseVariableBorrowRate | 10.5 % | +| variableRateSlope1 | 3 % | +| variableRateSlope2 | 50 % | +| interestRate | ![ir](https://dash.onaave.com/api/static?variableRateSlope1=30000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=105000000000000000000000000&maxVariableBorrowRate=635000000000000000000000000) | + + +## Emodes changed + +### EMode: ETH correlated(id: 1) + + + +### EMode: LRT Stablecoins main(id: 2) + +| description | value before | value after | +| --- | --- | --- | +| eMode.label (unchanged) | LRT Stablecoins main | LRT Stablecoins main | +| eMode.ltv (unchanged) | 75 % | 75 % | +| eMode.liquidationThreshold (unchanged) | 78 % | 78 % | +| eMode.liquidationBonus (unchanged) | 7.5 % | 7.5 % | +| eMode.borrowableBitmap | USDS | USDS, USDC, GHO | +| eMode.collateralBitmap (unchanged) | ezETH | ezETH | + + +### EMode: LRT wstETH main(id: 3) + + + +### EMode: sUSDe Stablecoins(id: 4) + +| description | value before | value after | +| --- | --- | --- | +| eMode.label (unchanged) | sUSDe Stablecoins | sUSDe Stablecoins | +| eMode.ltv (unchanged) | 90 % | 90 % | +| eMode.liquidationThreshold (unchanged) | 92 % | 92 % | +| eMode.liquidationBonus (unchanged) | 3 % | 3 % | +| eMode.borrowableBitmap | USDS, USDC | USDS, USDC, GHO | +| eMode.collateralBitmap (unchanged) | sUSDe | sUSDe | + + +## Raw diff + +```json +{ + "eModes": { + "2": { + "borrowableBitmap": { + "from": "4", + "to": "76" + } + }, + "4": { + "borrowableBitmap": { + "from": "12", + "to": "76" + } + } + }, + "reserves": { + "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f": { + "from": null, + "to": { + "aToken": "0x18eFE565A5373f430e2F809b97De30335B3ad96A", + "aTokenImpl": "0x7F8Fc14D462bdF93c681c1f2Fd615389bF969Fb2", + "aTokenName": "Aave Ethereum Lido GHO", + "aTokenSymbol": "aEthLidoGHO", + "aTokenUnderlyingBalance": "3000000000000000000000000", + "borrowCap": 2500000, + "borrowingEnabled": true, + "debtCeiling": 0, + "decimals": 18, + "id": 6, + "interestRateStrategy": "0x8958b1C39269167527821f8c276Ef7504883f2fa", + "isActive": true, + "isBorrowableInIsolation": false, + "isFlashloanable": true, + "isFrozen": false, + "isPaused": false, + "isSiloed": false, + "liquidationBonus": 0, + "liquidationProtocolFee": 0, + "liquidationThreshold": 0, + "ltv": 0, + "oracle": "0xD110cac5d8682A3b045D5524a9903E031d70FCCd", + "oracleDecimals": 8, + "oracleLatestAnswer": "100000000", + "reserveFactor": 1000, + "supplyCap": 20000000, + "symbol": "GHO", + "underlying": "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f", + "usageAsCollateralEnabled": false, + "variableDebtToken": "0x18577F0f4A0B2Ee6F4048dB51c7acd8699F97DB8", + "variableDebtTokenImpl": "0x3E59212c34588a63350142EFad594a20C88C2CEd", + "variableDebtTokenName": "Aave Ethereum Lido Variable Debt GHO", + "variableDebtTokenSymbol": "variableDebtEthLidoGHO", + "virtualAccountingActive": true, + "virtualBalance": "3000000000000000000000000" + } + } + }, + "strategies": { + "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f": { + "from": null, + "to": { + "address": "0x8958b1C39269167527821f8c276Ef7504883f2fa", + "baseVariableBorrowRate": "105000000000000000000000000", + "maxVariableBorrowRate": "635000000000000000000000000", + "optimalUsageRatio": "920000000000000000000000000", + "variableRateSlope1": "30000000000000000000000000", + "variableRateSlope2": "500000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol new file mode 100644 index 000000000..054e15780 --- /dev/null +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol @@ -0,0 +1,192 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {CollectorUtils, ICollector} from 'aave-helpers/src/CollectorUtils.sol'; +import {AaveSwapper} from 'aave-helpers/src/swaps/AaveSwapper.sol'; +import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; +import {AaveV2Ethereum, AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; +import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; +import {AaveV3EthereumLido, AaveV3EthereumLidoEModes} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {AaveV3PayloadEthereumLido} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereumLido.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'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol'; + +/** + * @title Onboard GHO and Migrate Streams to Lido Instance + * @author karpatkey_TokenLogic + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x5c27aa8f1de66a3e56f535d60e4c1666a5617a36f8f81c09df2b0ea184a90290 + * - Discussion: https://governance.aave.com/t/arfc-onboard-gho-and-migrate-streams-to-lido-instance/19686 + */ +contract AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104 is + AaveV3PayloadEthereumLido +{ + using SafeERC20 for IERC20; + using CollectorUtils for ICollector; + + uint256 public constant INITIAL_GHO_SUPPLY = 3_000_000e18; + + uint256 public constant A_USDT_WITHDRAW_AMOUNT = 1_500_000e6; + uint256 public constant A_ETH_USDT_WITHDRAW_AMOUNT = 500_000e6; + uint256 public constant A_ETH_USDC_WITHDRAW_AMOUNT = 1_000_000e6; + + // https://etherscan.io/address/0x060373D064d0168931dE2AB8DDA7410923d06E88 + address public constant MILKMAN = 0x060373D064d0168931dE2AB8DDA7410923d06E88; + // https://etherscan.io/address/0xe80a1C615F75AFF7Ed8F08c9F21f9d00982D666c + address public constant PRICE_CHECKER = 0xe80a1C615F75AFF7Ed8F08c9F21f9d00982D666c; + // https://etherscan.io/address/0x3f12643D3f6f874d39C2a4c9f2Cd6f2DbAC877FC + address public constant GHO_USD_FEED = 0x3f12643D3f6f874d39C2a4c9f2Cd6f2DbAC877FC; + + address public constant AGD_MULTISIG = 0x89C51828427F70D77875C6747759fB17Ba10Ceb0; + address public constant MERIT_MULTISIG = 0xdeadD8aB03075b7FBA81864202a2f59EE25B312b; + + function _postExecute() internal override { + // agd + if ( + IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + AGD_MULTISIG + ) > 0 + ) { + AaveV3EthereumLido.COLLECTOR.approve(AaveV3EthereumAssets.GHO_UNDERLYING, AGD_MULTISIG, 0); + } + + // merit + uint256 meritAllowance = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + MERIT_MULTISIG + ); + if (meritAllowance > 0) { + (address aTokenAddress, , ) = AaveV3EthereumLido + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(AaveV3EthereumAssets.GHO_UNDERLYING); + AaveV3EthereumLido.COLLECTOR.approve(AaveV3EthereumAssets.GHO_UNDERLYING, MERIT_MULTISIG, 0); + AaveV3EthereumLido.COLLECTOR.approve(aTokenAddress, MERIT_MULTISIG, meritAllowance); + } + + AaveV3EthereumLido.COLLECTOR.depositToV3( + CollectorUtils.IOInput({ + pool: address(AaveV3EthereumLido.POOL), + underlying: AaveV3EthereumAssets.GHO_UNDERLYING, + amount: INITIAL_GHO_SUPPLY + }) + ); + + // swap + // usdt + AaveV3Ethereum.COLLECTOR.withdrawFromV2( + CollectorUtils.IOInput({ + pool: address(AaveV2Ethereum.POOL), + underlying: AaveV3EthereumAssets.USDT_UNDERLYING, + amount: A_USDT_WITHDRAW_AMOUNT + }), + MiscEthereum.AAVE_SWAPPER + ); + AaveV3Ethereum.COLLECTOR.withdrawFromV3( + CollectorUtils.IOInput({ + pool: address(AaveV3Ethereum.POOL), + underlying: AaveV3EthereumAssets.USDT_UNDERLYING, + amount: A_ETH_USDT_WITHDRAW_AMOUNT + }), + MiscEthereum.AAVE_SWAPPER + ); + + AaveSwapper(MiscEthereum.AAVE_SWAPPER).swap( + MILKMAN, + PRICE_CHECKER, + AaveV3EthereumAssets.USDT_UNDERLYING, + AaveV3EthereumAssets.GHO_UNDERLYING, + AaveV3EthereumAssets.USDT_ORACLE, + GHO_USD_FEED, + address(AaveV3EthereumLido.COLLECTOR), + IERC20(AaveV3EthereumAssets.USDT_UNDERLYING).balanceOf(MiscEthereum.AAVE_SWAPPER), + 100 + ); + + // usdc + AaveV3Ethereum.COLLECTOR.withdrawFromV3( + CollectorUtils.IOInput({ + pool: address(AaveV3Ethereum.POOL), + underlying: AaveV3EthereumAssets.USDC_UNDERLYING, + amount: A_ETH_USDC_WITHDRAW_AMOUNT + }), + MiscEthereum.AAVE_SWAPPER + ); + + AaveSwapper(MiscEthereum.AAVE_SWAPPER).swap( + MILKMAN, + PRICE_CHECKER, + AaveV3EthereumAssets.USDC_UNDERLYING, + AaveV3EthereumAssets.GHO_UNDERLYING, + AaveV3EthereumAssets.USDC_ORACLE, + GHO_USD_FEED, + address(AaveV3EthereumLido.COLLECTOR), + IERC20(AaveV3EthereumAssets.USDC_UNDERLYING).balanceOf(MiscEthereum.AAVE_SWAPPER), + 100 + ); + } + + function newListings() public pure override returns (IAaveV3ConfigEngine.Listing[] memory) { + IAaveV3ConfigEngine.Listing[] memory listings = new IAaveV3ConfigEngine.Listing[](1); + + listings[0] = IAaveV3ConfigEngine.Listing({ + asset: AaveV3EthereumAssets.GHO_UNDERLYING, + assetSymbol: 'GHO', + priceFeed: AaveV3EthereumAssets.GHO_ORACLE, + enabledToBorrow: EngineFlags.ENABLED, + borrowableInIsolation: EngineFlags.DISABLED, + withSiloedBorrowing: EngineFlags.DISABLED, + flashloanable: EngineFlags.ENABLED, + ltv: 0, + liqThreshold: 0, + liqBonus: 0, + reserveFactor: 10_00, + supplyCap: 20_000_000, + borrowCap: 2_500_000, + debtCeiling: 0, + liqProtocolFee: 0, + rateStrategyParams: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 92_00, + baseVariableBorrowRate: 10_50, + variableRateSlope1: 3_00, + variableRateSlope2: 50_00 + }) + }); + + return listings; + } + + function assetsEModeUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.AssetEModeUpdate[] memory) + { + IAaveV3ConfigEngine.AssetEModeUpdate[] + memory assetEModeUpdates = new IAaveV3ConfigEngine.AssetEModeUpdate[](3); + + assetEModeUpdates[0] = IAaveV3ConfigEngine.AssetEModeUpdate({ + asset: AaveV3EthereumAssets.GHO_UNDERLYING, + eModeCategory: AaveV3EthereumLidoEModes.SUSDE_STABLECOINS, + borrowable: EngineFlags.ENABLED, + collateral: EngineFlags.DISABLED + }); + + assetEModeUpdates[1] = IAaveV3ConfigEngine.AssetEModeUpdate({ + asset: AaveV3EthereumAssets.USDC_UNDERLYING, + eModeCategory: AaveV3EthereumLidoEModes.LRT_STABLECOINS_MAIN, + borrowable: EngineFlags.ENABLED, + collateral: EngineFlags.DISABLED + }); + + assetEModeUpdates[2] = IAaveV3ConfigEngine.AssetEModeUpdate({ + asset: AaveV3EthereumAssets.GHO_UNDERLYING, + eModeCategory: AaveV3EthereumLidoEModes.LRT_STABLECOINS_MAIN, + borrowable: EngineFlags.ENABLED, + collateral: EngineFlags.DISABLED + }); + + return assetEModeUpdates; + } +} diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol new file mode 100644 index 000000000..58f46aee2 --- /dev/null +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol @@ -0,0 +1,197 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers} from 'aave-helpers/src/GovV3Helpers.sol'; +import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; +import {AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; +import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol'; +import {AaveV3EthereumLido, AaveV3EthereumLidoAssets} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104} from './AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol'; + +/** + * @dev Test for AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol -vv + */ +contract AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104_Test is + ProtocolV3TestBase +{ + event SwapRequested( + address milkman, + address indexed fromToken, + address indexed toToken, + address fromOracle, + address toOracle, + uint256 amount, + address indexed recipient, + uint256 slippage + ); + + AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21328964); + proposal = new AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104', + AaveV3EthereumLido.POOL, + address(proposal) + ); + } + + function test_swap() public { + uint256 collectorAUsdtBalanceBefore = IERC20(AaveV2EthereumAssets.USDT_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + uint256 collectorAEthUsdtBalanceBefore = IERC20(AaveV3EthereumAssets.USDT_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + uint256 collectorAEthUsdcBalanceBefore = IERC20(AaveV3EthereumAssets.USDC_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + + vm.expectEmit(true, true, true, true, MiscEthereum.AAVE_SWAPPER); + emit SwapRequested( + proposal.MILKMAN(), + AaveV3EthereumAssets.USDT_UNDERLYING, + AaveV3EthereumAssets.GHO_UNDERLYING, + AaveV3EthereumAssets.USDT_ORACLE, + proposal.GHO_USD_FEED(), + proposal.A_USDT_WITHDRAW_AMOUNT() + proposal.A_ETH_USDT_WITHDRAW_AMOUNT(), + address(AaveV3EthereumLido.COLLECTOR), + 100 + ); + + vm.expectEmit(true, true, true, true, MiscEthereum.AAVE_SWAPPER); + emit SwapRequested( + proposal.MILKMAN(), + AaveV3EthereumAssets.USDC_UNDERLYING, + AaveV3EthereumAssets.GHO_UNDERLYING, + AaveV3EthereumAssets.USDC_ORACLE, + proposal.GHO_USD_FEED(), + proposal.A_ETH_USDC_WITHDRAW_AMOUNT(), + address(AaveV3EthereumLido.COLLECTOR), + 100 + ); + + executePayload(vm, address(proposal)); + + uint256 collectorAUsdtBalanceAfter = IERC20(AaveV2EthereumAssets.USDT_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + uint256 collectorAEthUsdtBalanceAfter = IERC20(AaveV3EthereumAssets.USDT_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + uint256 collectorAEthUsdcBalanceAfter = IERC20(AaveV3EthereumAssets.USDC_A_TOKEN).balanceOf( + address(AaveV3Ethereum.COLLECTOR) + ); + + assertApproxEqAbs( + collectorAUsdtBalanceBefore, + collectorAUsdtBalanceAfter + proposal.A_USDT_WITHDRAW_AMOUNT(), + 1_000e6 + ); + assertApproxEqAbs( + collectorAEthUsdtBalanceBefore, + collectorAEthUsdtBalanceAfter + proposal.A_ETH_USDT_WITHDRAW_AMOUNT(), + 1e6 + ); + assertApproxEqAbs( + collectorAEthUsdcBalanceBefore, + collectorAEthUsdcBalanceAfter + proposal.A_ETH_USDC_WITHDRAW_AMOUNT(), + 1e6 + ); + + assertEq( + IERC20(AaveV3EthereumAssets.USDT_UNDERLYING).balanceOf( + 0x1D18380041Ba52ef4011e8264E2F9605D7a023Fe // milkmanInstance contract + ), + proposal.A_USDT_WITHDRAW_AMOUNT() + proposal.A_ETH_USDT_WITHDRAW_AMOUNT() + ); + assertEq( + IERC20(AaveV3EthereumAssets.USDC_UNDERLYING).balanceOf( + 0xe798354288DB1A06da83beF6e2915325a16A300a // milkmanInstance contract + ), + proposal.A_ETH_USDC_WITHDRAW_AMOUNT() + ); + } + + function test_initialFund() public { + uint256 initialGhoFund = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf( + address(AaveV3EthereumLido.COLLECTOR) + ); + + executePayload(vm, address(proposal)); + + (address aTokenAddress, , ) = AaveV3EthereumLido + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(AaveV3EthereumAssets.GHO_UNDERLYING); + + assertEq( + IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).balanceOf(address(AaveV3EthereumLido.COLLECTOR)), + initialGhoFund - proposal.INITIAL_GHO_SUPPLY() + ); + assertEq( + IERC20(aTokenAddress).balanceOf(address(AaveV3EthereumLido.COLLECTOR)), + proposal.INITIAL_GHO_SUPPLY() + ); + } + + function test_allowance() public { + address agdMultiSig = proposal.AGD_MULTISIG(); + + uint256 allowance = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + agdMultiSig + ); + assertGt(allowance, 0); + + uint256 meritGhoAllowanceBefore = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + proposal.MERIT_MULTISIG() + ); + + executePayload(vm, address(proposal)); + + (address aTokenAddress, , ) = AaveV3EthereumLido + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(AaveV3EthereumAssets.GHO_UNDERLYING); + + allowance = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + agdMultiSig + ); + assertEq(allowance, 0); + + vm.startPrank(agdMultiSig); + + vm.expectRevert(stdError.arithmeticError); + IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).transferFrom( + address(AaveV3Ethereum.COLLECTOR), + agdMultiSig, + 1e18 + ); + vm.stopPrank(); + + uint256 meritGhoAllowanceAfter = IERC20(AaveV3EthereumAssets.GHO_UNDERLYING).allowance( + address(AaveV3EthereumLido.COLLECTOR), + proposal.MERIT_MULTISIG() + ); + uint256 meritAEthGhoAllowanceAfter = IERC20(aTokenAddress).allowance( + address(AaveV3EthereumLido.COLLECTOR), + proposal.MERIT_MULTISIG() + ); + + assertEq(meritGhoAllowanceBefore, meritAEthGhoAllowanceAfter); + assertEq(meritGhoAllowanceAfter, 0); + } +} diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md new file mode 100644 index 000000000..d6a56da4d --- /dev/null +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md @@ -0,0 +1,110 @@ +--- +title: "Onboard GHO and Migrate Streams to Prime Instance" +author: "karpatkey_TokenLogic" +discussions: "https://governance.aave.com/t/arfc-onboard-gho-and-migrate-streams-to-lido-instance/19686" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0x5c27aa8f1de66a3e56f535d60e4c1666a5617a36f8f81c09df2b0ea184a90290" +--- + +## Simple Summary + +This publication proposes the following: + +- Onboarding GHO to the Prime instance of Aave v3 with 3M seed from Collector; +- Acquire 3M GHO from spot market and send to the Collector +- Migrate Merit allowance +- Cancel AGD GHO allowance + +## Motivation + +### Onboard GHO Prime Instance with 3M seed from Collector + +With the circulating supply nearing 180M and nearly 50M in DEX liquidity on Ethereum, this publication proposes adding GHO to the Prime instance of Aave v3. + +Adding GHO to the Prime instance of Aave v3 would provide the DAO with several opportunities: + +- Mint GHO through a Facilitator and deposit it into the Reserve to generate revenue; +- Enable Aave DAO to earn yield on existing GHO holdings; and, +- Establish a GHO reserve that provides an organic deposit yield. + +Each of these options offers clear advantages for the Aave DAO and GHO users. GHO is to be onboarded as a borrow-only asset, similar to the current configurations of USDC and USDS. + +The seeded 3M GHO should be sufficient to sustain two months of Merit, with a sufficient buffer to ensure timely fund withdrawals. Allowance will be migrated from Core to Prime market. + +### Acquire GHO from spot market and send to the collector + +3M GHO is to be acquired from spot market and sent to the Collector. + +Within this publication, the Aave Grants DAO GHO Allowance is to be cancelled. + +## Specification + +The below details the parameter configuration of the GHO Reserve on the Prime instance of Aave v3. + +| Parameter | Value | +| ------------------------- | -----------------------------------------: | +| Isolation Mode | false | +| Borrowable | ENABLED | +| Collateral Enabled | false | +| Supply Cap (GHO) | 20,000,000 | +| Borrow Cap (GHO) | 2,500,000 | +| Debt Ceiling | USD 0 | +| LTV | 0 % | +| LT | 0 % | +| Liquidation Bonus | 0 % | +| Liquidation Protocol Fee | 0 % | +| Reserve Factor | 10 % | +| Base Variable Borrow Rate | 10.50 % | +| Variable Slope 1 | 3.00 % | +| Variable Slope 2 | 50 % | +| Uoptimal | 92 % | +| Flashloanable | ENABLED | +| Siloed Borrowing | DISABLED | +| Borrowable in Isolation | DISABLED | +| Oracle | 0xD110cac5d8682A3b045D5524a9903E031d70FCCd | + +GHO is to be included in the sUSDe and ezETH eMode as shown below: + +**sUSDe eMode** + +| Parameter | Value | Value | Value | Value | +| :-------------------: | :---: | :---: | :---: | :---: | +| Asset | sUSDe | USDS | USDC | GHO | +| Collateral | Yes | No | No | No | +| Borrowable | No | Yes | Yes | Yes | +| Max LTV | 90% | - | - | - | +| Liquidation Threshold | 92% | - | - | - | +| Liquidation Bonus | 3.0% | - | - | - | + +**ezETH eMode** + +| Parameter | Value | Value | Value | Value | +| :-------------------: | :---: | :---: | :---: | :---: | +| Asset | ezETH | USDS | USDC | GHO | +| Collateral | Yes | No | No | No | +| Borrowable | No | Yes | Yes | Yes | +| Max LTV | 75% | - | - | - | +| Liquidation Threshold | 80% | - | - | - | +| Liquidation Bonus | 7.5% | - | - | - | + +This proposal includes swap the following asset for GHO: + +| Asset Holding | +| :-------------: | +| aUSDT (1.5M) | +| aEthUSDT (0.5M) | +| aEthUSDC (1.0M) | + +Cancel Aave Grants DAO GHO [Allowance](https://governance.aave.com/t/update-from-aave-grants-winding-down-agd-1-0-and-what-s-next/18707). + +Migrate Merit allowance from Core to Prime market. + +## References + +- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol) +- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x5c27aa8f1de66a3e56f535d60e4c1666a5617a36f8f81c09df2b0ea184a90290) +- [Discussion](https://governance.aave.com/t/arfc-onboard-gho-and-migrate-streams-to-lido-instance/19686) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol new file mode 100644 index 000000000..2bc76dc4e --- /dev/null +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol @@ -0,0 +1,60 @@ +// 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 {EthereumScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104} from './AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=mainnet npx catapulta-verify -b broadcast/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104).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/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance_20241104.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(AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md' + ) + ); + } +} diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/config.ts b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/config.ts new file mode 100644 index 000000000..8adbf0232 --- /dev/null +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/config.ts @@ -0,0 +1,69 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3EthereumLido'], + title: 'Onboard GHO and Migrate Streams to Lido Instance', + shortName: 'OnboardGHOAndMigrateStreamsToLidoInstance', + date: '20241104', + author: 'karpatkey_TokenLogic', + discussion: + 'https://governance.aave.com/t/arfc-onboard-gho-and-migrate-streams-to-lido-instance/19686', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0x5c27aa8f1de66a3e56f535d60e4c1666a5617a36f8f81c09df2b0ea184a90290', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3EthereumLido: { + configs: { + ASSET_LISTING: [ + { + assetSymbol: 'GHO', + decimals: 18, + priceFeed: '0xD110cac5d8682A3b045D5524a9903E031d70FCCd', + ltv: '0', + liqThreshold: '0', + liqBonus: '0', + debtCeiling: '0', + liqProtocolFee: '0', + enabledToBorrow: 'ENABLED', + flashloanable: 'ENABLED', + borrowableInIsolation: 'DISABLED', + withSiloedBorrowing: 'DISABLED', + reserveFactor: '10', + supplyCap: '20000000', + borrowCap: '2500000', + rateStrategyParams: { + optimalUtilizationRate: '92', + baseVariableBorrowRate: '10.50', + variableRateSlope1: '3.00', + variableRateSlope2: '50', + }, + asset: '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', + admin: '', + }, + ], + EMODES_ASSETS: [ + { + asset: 'GHO', + eModeCategory: 'AaveV3EthereumLidoEModes.SUSDE_STABLECOINS', + collateral: 'DISABLED', + borrowable: 'ENABLED', + }, + { + asset: 'USDC', + eModeCategory: 'AaveV3EthereumLidoEModes.LRT_STABLECOINS_MAIN', + collateral: 'DISABLED', + borrowable: 'ENABLED', + }, + { + asset: 'GHO', + eModeCategory: 'AaveV3EthereumLidoEModes.LRT_STABLECOINS_MAIN', + collateral: 'DISABLED', + borrowable: 'ENABLED', + }, + ], + }, + cache: {blockNumber: 21118528}, + }, + }, +}; From 21d49237fb5345506e14961902a5adef50462229 Mon Sep 17 00:00:00 2001 From: Cache bot Date: Tue, 10 Dec 2024 13:56:48 +0000 Subject: [PATCH 06/10] fix(cache): automated cache update [skip ci] --- .../OnboardGHOAndMigrateStreamsToLidoInstance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md index d6a56da4d..978059277 100644 --- a/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md +++ b/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/OnboardGHOAndMigrateStreamsToLidoInstance.md @@ -100,8 +100,8 @@ Migrate Merit allowance from Core to Prime market. ## References -- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol) -- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol) +- Implementation: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/2ccea23f34b42c480651aa629f810783e273b83f/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.sol) +- Tests: [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/2ccea23f34b42c480651aa629f810783e273b83f/src/20241104_AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance/AaveV3EthereumLido_OnboardGHOAndMigrateStreamsToLidoInstance_20241104.t.sol) - [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x5c27aa8f1de66a3e56f535d60e4c1666a5617a36f8f81c09df2b0ea184a90290) - [Discussion](https://governance.aave.com/t/arfc-onboard-gho-and-migrate-streams-to-lido-instance/19686) From b7dac56b973d2c43b6d535b15881abb118d08e49 Mon Sep 17 00:00:00 2001 From: Alice <121383428+Rozengarden@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:55:36 +0100 Subject: [PATCH 07/10] Aavechan/stablecoin slope1 (#541) * feat: set all stablecoin slope1 to 9.5% * feat: adjust slope1 for all stable * feat: bnb test * feat: CL recommendation * feat: test result * feat: +3% increase * feat: zksync payload * Update IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol * Update IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md * feat: latest parameters * Update IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md * feat: add usdc and frax on etherfi instance --------- Co-authored-by: MartinGbz --- ...nsAcrossAllAaveInstances_20241201_after.md | 86 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 173 +++++ ...nsAcrossAllAaveInstances_20241201_after.md | 104 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 81 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 58 ++ ...nsAcrossAllAaveInstances_20241201_after.md | 81 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 35 + ...nsAcrossAllAaveInstances_20241201_after.md | 196 ++++++ ...nsAcrossAllAaveInstances_20241201_after.md | 104 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 81 +++ ...nsAcrossAllAaveInstances_20241201_after.md | 150 +++++ ...nsAcrossAllAaveInstances_20241201_after.md | 127 ++++ ...nsAcrossAllAaveInstances_20241201_after.md | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 62 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 91 +++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 64 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 55 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 34 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 46 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 34 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 57 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 37 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 100 +++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 64 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 55 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 34 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 82 +++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 73 +++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...lecoinsAcrossAllAaveInstances_20241201.sol | 37 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 35 + ...1ToAllStablecoinsAcrossAllAaveInstances.md | 86 +++ ...coinsAcrossAllAaveInstances_20241201.s.sol | 391 +++++++++++ .../config.ts | 607 ++++++++++++++++++ ...lecoinsAcrossAllAaveInstances_20241201.sol | 46 ++ ...coinsAcrossAllAaveInstances_20241201.t.sol | 37 ++ ...coinsAcrossAllAaveInstances_20241201.s.sol | 38 ++ 45 files changed, 3791 insertions(+) create mode 100644 diffs/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 diffs/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol create mode 100644 src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/config.ts create mode 100644 zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol create mode 100644 zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol create mode 100644 zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol diff --git a/diffs/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..a5e7897bc --- /dev/null +++ b/diffs/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,86 @@ +## Reserve changes + +### Reserve altered + +#### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xA939B1f36E9a14B044B8149933184a18E0dFC17D](https://etherscan.io/address/0xA939B1f36E9a14B044B8149933184a18E0dFC17D) | [0x7011B47A142E2f462AB10F5bDBc8A478310EB0FD](https://etherscan.io/address/0x7011B47A142E2f462AB10F5bDBc8A478310EB0FD) | +| variableRateSlope1 | 5.5 % | 12.5 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0x6a8C8119b2BA9460162B8C999f5A8C84f28a033f](https://etherscan.io/address/0x6a8C8119b2BA9460162B8C999f5A8C84f28a033f) | [0x4e1494475048fa155F1D837B6bD51458bD170f48](https://etherscan.io/address/0x4e1494475048fa155F1D837B6bD51458bD170f48) | +| variableRateSlope1 | 5.5 % | 12.5 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | + +#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0xa8850b94E4A0B881c3b08aE065D189D87F34F175](https://etherscan.io/address/0xa8850b94E4A0B881c3b08aE065D189D87F34F175) | [0x869eF970878F96c130E14B46B024D2ca18b5b762](https://etherscan.io/address/0x869eF970878F96c130E14B46B024D2ca18b5b762) | +| variableRateSlope1 | 5.5 % | 12.5 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=1000000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=1000000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=undefined) | + +## Raw diff + +```json +{ + "reserves": { + "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "interestRateStrategy": { + "from": "0xA939B1f36E9a14B044B8149933184a18E0dFC17D", + "to": "0x7011B47A142E2f462AB10F5bDBc8A478310EB0FD" + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "interestRateStrategy": { + "from": "0x6a8C8119b2BA9460162B8C999f5A8C84f28a033f", + "to": "0x4e1494475048fa155F1D837B6bD51458bD170f48" + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "interestRateStrategy": { + "from": "0xa8850b94E4A0B881c3b08aE065D189D87F34F175", + "to": "0x869eF970878F96c130E14B46B024D2ca18b5b762" + } + } + }, + "strategies": { + "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "address": { + "from": "0xA939B1f36E9a14B044B8149933184a18E0dFC17D", + "to": "0x7011B47A142E2f462AB10F5bDBc8A478310EB0FD" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "address": { + "from": "0x6a8C8119b2BA9460162B8C999f5A8C84f28a033f", + "to": "0x4e1494475048fa155F1D837B6bD51458bD170f48" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "address": { + "from": "0xa8850b94E4A0B881c3b08aE065D189D87F34F175", + "to": "0x869eF970878F96c130E14B46B024D2ca18b5b762" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..b3c332bf2 --- /dev/null +++ b/diffs/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,173 @@ +## Reserve changes + +### Reserve altered + +#### FRAX ([0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F](https://arbiscan.io/address/0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### GHO ([0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33](https://arbiscan.io/address/0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 77 % | 52.5 % | +| variableRateSlope1 | 12 % | 12.5 % | +| variableRateSlope2 | 65 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=120000000000000000000000000&variableRateSlope2=650000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=770000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### LUSD ([0x93b346b6BC2548dA6A1E7d98E9a421B42541425b](https://arbiscan.io/address/0x93b346b6BC2548dA6A1E7d98E9a421B42541425b)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 92.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 87 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=870000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=925000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://arbiscan.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8](https://arbiscan.io/address/0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 86.5 % | 53.5 % | +| variableRateSlope1 | 6.5 % | 13.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=65000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=865000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=135000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=535000000000000000000000000) | + +#### USDT ([0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9](https://arbiscan.io/address/0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0xaf88d065e77c8cC2239327C5EDb3A432268e5831](https://arbiscan.io/address/0xaf88d065e77c8cC2239327C5EDb3A432268e5831)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33": { + "maxVariableBorrowRate": { + "from": "770000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "120000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "650000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x93b346b6BC2548dA6A1E7d98E9a421B42541425b": { + "maxVariableBorrowRate": { + "from": "925000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "870000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8": { + "maxVariableBorrowRate": { + "from": "865000000000000000000000000", + "to": "535000000000000000000000000" + }, + "variableRateSlope1": { + "from": "65000000000000000000000000", + "to": "135000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xaf88d065e77c8cC2239327C5EDb3A432268e5831": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..25cae27b5 --- /dev/null +++ b/diffs/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,104 @@ +## Reserve changes + +### Reserve altered + +#### USDt ([0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7](https://snowtrace.io/address/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E](https://snowtrace.io/address/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### FRAX ([0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64](https://snowtrace.io/address/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### DAI.e ([0xd586E7F844cEa2F87f50152665BCbc2C279D8d70](https://snowtrace.io/address/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..f43cb2f99 --- /dev/null +++ b/diffs/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,81 @@ +## Reserve changes + +### Reserve altered + +#### USDT ([0x55d398326f99059fF775485246999027B3197955](https://bscscan.com/address/0x55d398326f99059fF775485246999027B3197955)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d](https://bscscan.com/address/0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### FDUSD ([0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409](https://bscscan.com/address/0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x55d398326f99059fF775485246999027B3197955": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..c31b306bc --- /dev/null +++ b/diffs/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,58 @@ +## Reserve changes + +### Reserve altered + +#### USDC ([0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDbC ([0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA](https://basescan.org/address/0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 90 % | 53.5 % | +| variableRateSlope1 | 10 % | 13.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=100000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=900000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=135000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=535000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": { + "maxVariableBorrowRate": { + "from": "900000000000000000000000000", + "to": "535000000000000000000000000" + }, + "variableRateSlope1": { + "from": "100000000000000000000000000", + "to": "135000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..a0fd306ae --- /dev/null +++ b/diffs/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,81 @@ +## Reserve changes + +### Reserve altered + +#### PYUSD ([0x6c3ea9036406852006290770BEdFcAbA0e23A0e8](https://etherscan.io/address/0x6c3ea9036406852006290770BEdFcAbA0e23A0e8)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 85.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=855000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### FRAX ([0x853d955aCEf822Db058eb8505911ED77F175b99e](https://etherscan.io/address/0x853d955aCEf822Db058eb8505911ED77F175b99e)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 85.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=855000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 66.5 % | 52.5 % | +| variableRateSlope1 | 6.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=65000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=665000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8": { + "maxVariableBorrowRate": { + "from": "855000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x853d955aCEf822Db058eb8505911ED77F175b99e": { + "maxVariableBorrowRate": { + "from": "855000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "maxVariableBorrowRate": { + "from": "665000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "65000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..594ba5cdc --- /dev/null +++ b/diffs/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,35 @@ +## Reserve changes + +### Reserves altered + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 47.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 35 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=350000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=475000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "475000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "350000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..93cd5769a --- /dev/null +++ b/diffs/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,196 @@ +## Reserve changes + +### Reserve altered + +#### USDe ([0x4c9EDD5852cd905f086C759E8383e09bff1E68B3](https://etherscan.io/address/0x4c9EDD5852cd905f086C759E8383e09bff1E68B3)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 84 % | 62.5 % | +| variableRateSlope1 | 9 % | 12.5 % | +| variableRateSlope2 | 75 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=90000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=840000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### LUSD ([0x5f98805A4E8be255a32880FDeC7F6728C6568bA0](https://etherscan.io/address/0x5f98805A4E8be255a32880FDeC7F6728C6568bA0)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 92.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 87 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=870000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=925000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### DAI ([0x6B175474E89094C44Da98b954EedeAC495271d0F](https://etherscan.io/address/0x6B175474E89094C44Da98b954EedeAC495271d0F)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 47.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 35 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=350000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=475000000000000000000000000) | + +#### PYUSD ([0x6c3ea9036406852006290770BEdFcAbA0e23A0e8](https://etherscan.io/address/0x6c3ea9036406852006290770BEdFcAbA0e23A0e8)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 85.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 80 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=855000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### FRAX ([0x853d955aCEf822Db058eb8505911ED77F175b99e](https://etherscan.io/address/0x853d955aCEf822Db058eb8505911ED77F175b99e)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 47.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 35 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=350000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=475000000000000000000000000) | + +#### USDT ([0xdAC17F958D2ee523a2206206994597C13D831ec7](https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 47.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 35 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=350000000000000000000000000&optimalUsageRatio=920000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=475000000000000000000000000) | + +#### crvUSD ([0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E](https://etherscan.io/address/0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 85.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 80 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=855000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3": { + "maxVariableBorrowRate": { + "from": "840000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "90000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0": { + "maxVariableBorrowRate": { + "from": "925000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "870000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0x6B175474E89094C44Da98b954EedeAC495271d0F": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "475000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "350000000000000000000000000" + } + }, + "0x6c3ea9036406852006290770BEdFcAbA0e23A0e8": { + "maxVariableBorrowRate": { + "from": "855000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0x853d955aCEf822Db058eb8505911ED77F175b99e": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "475000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "350000000000000000000000000" + } + }, + "0xdAC17F958D2ee523a2206206994597C13D831ec7": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "475000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "350000000000000000000000000" + } + }, + "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E": { + "maxVariableBorrowRate": { + "from": "855000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "500000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..1b5761122 --- /dev/null +++ b/diffs/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,104 @@ +## Reserve changes + +### Reserve altered + +#### USDC.e ([0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0](https://gnosisscan.io/address/0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 84 % | 53.5 % | +| variableRateSlope1 | 9 % | 13.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=90000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=840000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=135000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=535000000000000000000000000) | + +#### USDC ([0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83](https://gnosisscan.io/address/0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### EURe ([0xcB444e90D8198415266c6a2724b7900fb12FC56E](https://gnosisscan.io/address/0xcB444e90D8198415266c6a2724b7900fb12FC56E)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### WXDAI ([0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d](https://gnosisscan.io/address/0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0": { + "maxVariableBorrowRate": { + "from": "840000000000000000000000000", + "to": "535000000000000000000000000" + }, + "variableRateSlope1": { + "from": "90000000000000000000000000", + "to": "135000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xcB444e90D8198415266c6a2724b7900fb12FC56E": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..bf1459031 --- /dev/null +++ b/diffs/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,81 @@ +## Reserve changes + +### Reserve altered + +#### m.DAI ([0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0](https://explorer.metis.io/address/0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 82 % | 62.5 % | +| variableRateSlope1 | 7 % | 12.5 % | +| variableRateSlope2 | 75 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=70000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=820000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### m.USDC ([0xEA32A96608495e54156Ae48931A7c20f0dcc1a21](https://explorer.metis.io/address/0xEA32A96608495e54156Ae48931A7c20f0dcc1a21)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 66 % | 52.5 % | +| variableRateSlope1 | 6 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=60000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=660000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### m.USDT ([0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC](https://explorer.metis.io/address/0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 81 % | 52.5 % | +| variableRateSlope1 | 6 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=60000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=810000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x4c078361FC9BbB78DF910800A991C7c3DD2F6ce0": { + "maxVariableBorrowRate": { + "from": "820000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "70000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0xEA32A96608495e54156Ae48931A7c20f0dcc1a21": { + "maxVariableBorrowRate": { + "from": "660000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "60000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xbB06DCA3AE6887fAbF931640f67cab3e3a16F4dC": { + "maxVariableBorrowRate": { + "from": "810000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "60000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..814c5d0dc --- /dev/null +++ b/diffs/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,150 @@ +## Reserve changes + +### Reserve altered + +#### USDC ([0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85](https://optimistic.etherscan.io/address/0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### USDC ([0x7F5c764cBc14f9669B88837ca1490cCa17c31607](https://optimistic.etherscan.io/address/0x7F5c764cBc14f9669B88837ca1490cCa17c31607)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 86.5 % | 53.5 % | +| variableRateSlope1 | 6.5 % | 13.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=65000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=865000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=135000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=535000000000000000000000000) | + +#### sUSD ([0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9](https://optimistic.etherscan.io/address/0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### USDT ([0x94b008aA00579c1307B0EF2c499aD98a8ce58e58](https://optimistic.etherscan.io/address/0x94b008aA00579c1307B0EF2c499aD98a8ce58e58)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### DAI ([0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1](https://optimistic.etherscan.io/address/0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### LUSD ([0xc40F949F8a4e094D1b49a23ea9241D289B7b2819](https://optimistic.etherscan.io/address/0xc40F949F8a4e094D1b49a23ea9241D289B7b2819)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 92.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 87 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=870000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=925000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x7F5c764cBc14f9669B88837ca1490cCa17c31607": { + "maxVariableBorrowRate": { + "from": "865000000000000000000000000", + "to": "535000000000000000000000000" + }, + "variableRateSlope1": { + "from": "65000000000000000000000000", + "to": "135000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xc40F949F8a4e094D1b49a23ea9241D289B7b2819": { + "maxVariableBorrowRate": { + "from": "925000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "870000000000000000000000000", + "to": "500000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..ea2ff95a0 --- /dev/null +++ b/diffs/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,127 @@ +## Reserve changes + +### Reserve altered + +#### USDC ([0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174](https://polygonscan.com/address/0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 90 % | 53.5 % | +| variableRateSlope1 | 10 % | 13.5 % | +| variableRateSlope2 | 80 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=100000000000000000000000000&variableRateSlope2=800000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=900000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=135000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=535000000000000000000000000) | + +#### USDC ([0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359](https://polygonscan.com/address/0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### DAI ([0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063](https://polygonscan.com/address/0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +#### EURS ([0xE111178A87A3BFf0c8d18DECBa5798827539Ae99](https://polygonscan.com/address/0xE111178A87A3BFf0c8d18DECBa5798827539Ae99)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 62.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 50 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=500000000000000000000000000&optimalUsageRatio=800000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=625000000000000000000000000) | + +#### USDT ([0xc2132D05D31c914a87C6611C10748AEb04B58e8F](https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 80.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 75 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=750000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=805000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": { + "maxVariableBorrowRate": { + "from": "900000000000000000000000000", + "to": "535000000000000000000000000" + }, + "variableRateSlope1": { + "from": "100000000000000000000000000", + "to": "135000000000000000000000000" + }, + "variableRateSlope2": { + "from": "800000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + }, + "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "625000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "500000000000000000000000000" + } + }, + "0xc2132D05D31c914a87C6611C10748AEb04B58e8F": { + "maxVariableBorrowRate": { + "from": "805000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "750000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/diffs/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md b/diffs/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md new file mode 100644 index 000000000..b79b7d146 --- /dev/null +++ b/diffs/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_before_AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_after.md @@ -0,0 +1,35 @@ +## Reserve changes + +### Reserves altered + +#### USDC ([0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4](https://scrollscan.com/address/0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4)) + +| description | value before | value after | +| --- | --- | --- | +| maxVariableBorrowRate | 65.5 % | 52.5 % | +| variableRateSlope1 | 5.5 % | 12.5 % | +| variableRateSlope2 | 60 % | 40 % | +| interestRate | ![before](https://dash.onaave.com/api/static?variableRateSlope1=55000000000000000000000000&variableRateSlope2=600000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=655000000000000000000000000) | ![after](https://dash.onaave.com/api/static?variableRateSlope1=125000000000000000000000000&variableRateSlope2=400000000000000000000000000&optimalUsageRatio=900000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=525000000000000000000000000) | + +## Raw diff + +```json +{ + "strategies": { + "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4": { + "maxVariableBorrowRate": { + "from": "655000000000000000000000000", + "to": "525000000000000000000000000" + }, + "variableRateSlope1": { + "from": "55000000000000000000000000", + "to": "125000000000000000000000000" + }, + "variableRateSlope2": { + "from": "600000000000000000000000000", + "to": "400000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..c81a9625d --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2EthereumAssets} from 'aave-address-book/AaveV2Ethereum.sol'; +import {AaveV2PayloadEthereum} from 'aave-helpers/src/v2-config-engine/AaveV2PayloadEthereum.sol'; +import {EngineFlags} from 'aave-v3-origin/contracts/extensions/v3-config-engine/EngineFlags.sol'; +import {IAaveV2ConfigEngine} from 'aave-helpers/src/v2-config-engine/IAaveV2ConfigEngine.sol'; +import {IV2RateStrategyFactory} from 'aave-helpers/src/v2-config-engine/IV2RateStrategyFactory.sol'; +/** + * @title Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV2PayloadEthereum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV2ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV2ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV2ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAssets.USDT_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: _bpsToRay(12_50), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[1] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAssets.DAI_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: _bpsToRay(12_50), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + rateStrategies[2] = IAaveV2ConfigEngine.RateStrategyUpdate({ + asset: AaveV2EthereumAssets.USDC_UNDERLYING, + params: IV2RateStrategyFactory.RateStrategyParams({ + optimalUtilizationRate: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: _bpsToRay(12_50), + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..f0312ff03 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV2Ethereum} from 'aave-address-book/AaveV2Ethereum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV2TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV2TestBase.sol'; +import {AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV2TestBase +{ + AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21346502); + proposal = new AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV2Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..92d0b8a4f --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol'; +import {AaveV3PayloadArbitrum} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadArbitrum.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadArbitrum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](7); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.DAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 13_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.LUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.USDCn_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.FRAX_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.GHO_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..30d767208 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=arbitrum forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('arbitrum'), 282086445); + proposal = new AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Arbitrum.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..53c2a800a --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3AvalancheAssets} from 'aave-address-book/AaveV3Avalanche.sol'; +import {AaveV3PayloadAvalanche} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadAvalanche.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadAvalanche +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](4); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.DAIe_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.USDt_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3AvalancheAssets.FRAX_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..6a7a40f3e --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=avalanche forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('avalanche'), 54018606); + proposal = new AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Avalanche.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..5d0c3a2f3 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,55 @@ +// 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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadBNB +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3BNBAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3BNBAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3BNBAssets.FDUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..9551c337e --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.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_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=bnb forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('bnb'), 44648014); + proposal = new AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3BNB.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..e15b3fde9 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3BaseAssets} from 'aave-address-book/AaveV3Base.sol'; +import {AaveV3PayloadBase} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadBase.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadBase +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3BaseAssets.USDbC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 13_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3BaseAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..6d31259aa --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Base} from 'aave-address-book/AaveV3Base.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=base forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('base'), 23367782); + proposal = new AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Base.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..f6b67014e --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumEtherFiAssets} from 'aave-address-book/AaveV3EthereumEtherFi.sol'; +import {AaveV3PayloadEthereumEtherFi} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereumEtherFi.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadEthereumEtherFi +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumEtherFiAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumEtherFiAssets.PYUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumEtherFiAssets.FRAX_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..f7fdc137a --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumEtherFi} from 'aave-address-book/AaveV3EthereumEtherFi.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21346502); + proposal = new AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3EthereumEtherFi.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..6fa8c8022 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumLidoAssets} from 'aave-address-book/AaveV3EthereumLido.sol'; +import {AaveV3PayloadEthereumLido} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadEthereumLido.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadEthereumLido +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumLidoAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 35_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..65acf5041 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3EthereumLido} from 'aave-address-book/AaveV3EthereumLido.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21346502); + proposal = new AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3EthereumLido.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..291c63fa5 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,100 @@ +// 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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadEthereum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](8); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 35_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.DAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 35_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 35_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.LUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.FRAX_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.crvUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[6] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.PYUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[7] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3EthereumAssets.USDe_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..c6c3ac9ea --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// 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_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=mainnet forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 21346502); + proposal = new AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..829d403b2 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3GnosisAssets} from 'aave-address-book/AaveV3Gnosis.sol'; +import {AaveV3PayloadGnosis} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadGnosis.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadGnosis +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](4); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3GnosisAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3GnosisAssets.WXDAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3GnosisAssets.EURe_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3GnosisAssets.USDCe_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 13_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..f14fb5a47 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=gnosis forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('gnosis'), 37394270); + proposal = new AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Gnosis.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..882e23dea --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,55 @@ +// 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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadMetis +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](3); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3MetisAssets.mDAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3MetisAssets.mUSDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3MetisAssets.mUSDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..bcc9107d9 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.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_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=metis forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('metis'), 19121761); + proposal = new AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Metis.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..b7e92ec43 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol'; +import {AaveV3PayloadOptimism} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadOptimism.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadOptimism +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](6); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.DAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 13_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.sUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.LUSD_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[5] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3OptimismAssets.USDCn_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..2cfde6202 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=optimism forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('optimism'), 128963066); + proposal = new AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Optimism.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..ffe2b3d4a --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol'; +import {AaveV3PayloadPolygon} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadPolygon.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadPolygon +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](5); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.DAI_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 13_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[2] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[3] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.EURS_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 50_00 + }) + }); + rateStrategies[4] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3PolygonAssets.USDCn_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..a9a7ec179 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Polygon} from 'aave-address-book/AaveV3Polygon.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=polygon forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('polygon'), 65170205); + proposal = new AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Polygon.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..926b43b71 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ScrollAssets} from 'aave-address-book/AaveV3Scroll.sol'; +import {AaveV3PayloadScroll} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadScroll.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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadScroll +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ScrollAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..3838f60b4 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=scroll forge test --match-path=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('scroll'), 11705779); + proposal = new AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3Scroll.POOL, + address(proposal) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md new file mode 100644 index 000000000..8e575d5bd --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md @@ -0,0 +1,86 @@ +--- +title: "Increase Borrow Slope1 to all Stablecoins across all Aave Instances" +author: "Aave Chan Initiative" +discussions: "https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979" +--- + +## Simple Summary + +This proposal recommends increasing the **borrow slope1** parameter for stablecoins across all Aave V3 Instances and Aave V2 on mainnet to **12.5%**. This adjustment aims to align interest rate models with the updated **Stable Debt Reserve (SDR)** strategy, promoting sustainability, better risk management, and optimal utilization of the protocol’s resources. + +## Motivation + +The current market environment presents a unique opportunity to optimize Aave’s interest rate parameters. With the introduction of sUSDe as E-Mode collateral and general market sentiment leading to higher desire for borrowing, we are seeing significantly higher utilisation in the stablecoin market. This adjustment to the borrow slope1 will better align Aave’s interest rates with prevailing market conditions, potentially leading to: + +- Increased protocol revenue through better rate optimization +- Enhanced capital efficiency by maintaining competitive lending rates at lower volatility. + +Additionally, this change will ensure appropriate risk compensation for stablecoin lenders. + +## Specification + +| **Market** | **Asset** | **Current Slope1** | **Recommended Slope1** | **Current Slope2** | **Recommended Slope2** | +| ------------------- | --------- | ------------------ | ---------------------- | ------------------ | ---------------------- | +| Ethereum V2 | USDC | 5.5% | 12.5% | 60% | - | +| Ethereum V2 | USDT | 5.5% | 12.5% | 100% | - | +| Ethereum V2 | DAI | 5.5% | 12.5% | 75% | - | +| Ethereum V3 Core | USDC | 5.5% | 12.5% | 75% | 35% | +| Ethereum V3 Core | USDT | 5.5% | 12.5% | 75% | 35% | +| Ethereum V3 Core | USDe | 9.0% | 12.5% | 75% | 50% | +| Ethereum V3 Core | FRAX | 5.5% | 12.5% | 75% | 40% | +| Ethereum V3 Core | DAI | 5.5% | 12.5% | 75% | 35% | +| Ethereum V3 Core | LUSD | 5.5% | 12.5% | 87% | 50% | +| Ethereum V3 Core | PYUSD | 5.5% | 12.5% | 80% | 50% | +| Ethereum V3 Core | crvUSD | 5.5% | 12.5% | 80% | 50% | +| Ethereum V3 Prime | USDC | 5.5% | 12.5% | 60% | 35% | +| Ethereum V3 EtherFi | USDC | 6.5% | 12.5% | 60% | 40% | +| Ethereum V3 EtherFi | PYUSD | 5.5% | 12.5% | 80% | 40% | +| Ethereum V3 EtherFi | FRAX | 5.5% | 12.5% | 80% | 40% | +| Avalanche V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Avalanche V3 | USDT | 5.5% | 12.5% | 75% | 40% | +| Avalanche V3 | DAI | 5.5% | 12.5% | 75% | 40% | +| Avalanche V3 | FRAX | 5.5% | 12.5% | 75% | 40% | +| Polygon V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Polygon V3 | USDC.e | 10.0% | 13.5% | 80% | 40% | +| Polygon V3 | USDT | 5.5% | 12.5% | 75% | 40% | +| Polygon V3 | DAI | 5.5% | 12.5% | 75% | 40% | +| Polygon V3 | EURS | 5.5% | 12.5% | 75% | 50% | +| Optimism V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Optimism V3 | USDT | 5.5% | 12.5% | 75% | 40% | +| Optimism V3 | DAI | 5.5% | 12.5% | 75% | 40% | +| Optimism V3 | sUSD | 5.5% | 12.5% | 75% | 50% | +| Optimism V3 | LUSD | 5.5% | 12.5% | 87% | 50% | +| Optimism V3 | USDC.e | 6.5% | 13.5% | 80% | 40% | +| Arbitrum V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Arbitrum V3 | USDC.e | 6.5% | 13.5% | 80% | 40% | +| Arbitrum V3 | USDT | 5.5% | 12.5% | 75% | 40% | +| Arbitrum V3 | DAI | 5.5% | 12.5% | 75% | 40% | +| Arbitrum V3 | LUSD | 5.5% | 12.5% | 87% | 50% | +| Arbitrum V3 | FRAX | 5.5% | 12.5% | 75% | 40% | +| Arbitrum V3 | GHO | 12% | 12.5% | 65% | 40% | +| Base V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Base V3 | USDbC | 10.0% | 13.5% | 80% | 40% | +| Metis V3 | m.USDC | 6.0% | 12.5% | 60% | 40% | +| Metis V3 | m.USDT | 6.0% | 12.5% | 75% | 40% | +| Metis V3 | m.DAI | 7.0% | 12.5% | 75% | 50% | +| BNB Chain V3 | USDT | 5.5% | 12.5% | 75% | 40% | +| BNB Chain V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| BNB Chain V3 | FDUSD | 5.5% | 12.5% | 75% | 40% | +| Scroll V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| Gnosis V3 | WXDAI | 5.5% | 12.5% | 75% | 40% | +| Gnosis V3 | USDC | 5.5% | 12.5% | 75% | 40% | +| Gnosis V3 | EURe | 5.5% | 12.5% | 75% | 50% | +| Gnosis V3 | USDC.e | 9% | 13.5% | 75% | 40% | +| ZKSync V3 | USDC | 5.5% | 12.5% | 60% | 40% | +| ZKSync V3 | USDT | 5.5% | 12.5% | 60% | 40% | + +## References + +- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol) +- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol) +- Snapshot: Direct-to-AIP +- [Discussion](https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol new file mode 100644 index 000000000..9cb90812e --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol @@ -0,0 +1,391 @@ +// 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 {EthereumScript, PolygonScript, AvalancheScript, OptimismScript, ArbitrumScript, MetisScript, BaseScript, GnosisScript, ScrollScript, BNBScript, ChainIds} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; +import {AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployEthereum chain=mainnet + * verify-command: FOUNDRY_PROFILE=mainnet npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + address payload1 = GovV3Helpers.deployDeterministic( + type(AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + address payload2 = GovV3Helpers.deployDeterministic( + type(AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + address payload3 = GovV3Helpers.deployDeterministic( + type( + AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + ).creationCode + ); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](4); + actions[0] = GovV3Helpers.buildAction(payload0); + actions[1] = GovV3Helpers.buildAction(payload1); + actions[2] = GovV3Helpers.buildAction(payload2); + actions[3] = GovV3Helpers.buildAction(payload3); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} + +/** + * @dev Deploy Polygon + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployPolygon chain=polygon + * verify-command: FOUNDRY_PROFILE=polygon npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/137/run-latest.json + */ +contract DeployPolygon is PolygonScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Avalanche + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployAvalanche chain=avalanche + * verify-command: FOUNDRY_PROFILE=avalanche npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/43114/run-latest.json + */ +contract DeployAvalanche is AvalancheScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Optimism + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployOptimism chain=optimism + * verify-command: FOUNDRY_PROFILE=optimism npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/10/run-latest.json + */ +contract DeployOptimism is OptimismScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Arbitrum + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployArbitrum chain=arbitrum + * verify-command: FOUNDRY_PROFILE=arbitrum npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/42161/run-latest.json + */ +contract DeployArbitrum is ArbitrumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployMetis chain=metis + * verify-command: FOUNDRY_PROFILE=metis npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/1088/run-latest.json + */ +contract DeployMetis is MetisScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Base + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployBase chain=base + * verify-command: FOUNDRY_PROFILE=base npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/8453/run-latest.json + */ +contract DeployBase is BaseScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Gnosis + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployGnosis chain=gnosis + * verify-command: FOUNDRY_PROFILE=gnosis npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/100/run-latest.json + */ +contract DeployGnosis is GnosisScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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 Scroll + * deploy-command: make deploy-ledger contract=src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployScroll chain=scroll + * verify-command: FOUNDRY_PROFILE=scroll npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/534352/run-latest.json + */ +contract DeployScroll is ScrollScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployBNB chain=bnb + * verify-command: FOUNDRY_PROFILE=bnb npx catapulta-verify -b broadcast/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol/56/run-latest.json + */ +contract DeployBNB is BNBScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .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/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:CreateProposal chain=mainnet + */ +contract CreateProposal is EthereumScript { + function run() external { + // create payloads + PayloadsControllerUtils.Payload[] memory payloads = new PayloadsControllerUtils.Payload[](11); + + // compose actions for validation + IPayloadsControllerCore.ExecutionAction[] + memory actionsEthereum = new IPayloadsControllerCore.ExecutionAction[](4); + actionsEthereum[0] = GovV3Helpers.buildAction( + type(AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + actionsEthereum[1] = GovV3Helpers.buildAction( + type(AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + actionsEthereum[2] = GovV3Helpers.buildAction( + type(AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + actionsEthereum[3] = GovV3Helpers.buildAction( + type( + AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + ).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsPolygon = new IPayloadsControllerCore.ExecutionAction[](1); + actionsPolygon[0] = GovV3Helpers.buildAction( + type(AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[1] = GovV3Helpers.buildPolygonPayload(vm, actionsPolygon); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsAvalanche = new IPayloadsControllerCore.ExecutionAction[](1); + actionsAvalanche[0] = GovV3Helpers.buildAction( + type(AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[2] = GovV3Helpers.buildAvalanchePayload(vm, actionsAvalanche); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsOptimism = new IPayloadsControllerCore.ExecutionAction[](1); + actionsOptimism[0] = GovV3Helpers.buildAction( + type(AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[3] = GovV3Helpers.buildOptimismPayload(vm, actionsOptimism); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsArbitrum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsArbitrum[0] = GovV3Helpers.buildAction( + type(AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[4] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsMetis = new IPayloadsControllerCore.ExecutionAction[](1); + actionsMetis[0] = GovV3Helpers.buildAction( + type(AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[5] = GovV3Helpers.buildMetisPayload(vm, actionsMetis); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsBase = new IPayloadsControllerCore.ExecutionAction[](1); + actionsBase[0] = GovV3Helpers.buildAction( + type(AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[6] = GovV3Helpers.buildBasePayload(vm, actionsBase); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsGnosis = new IPayloadsControllerCore.ExecutionAction[](1); + actionsGnosis[0] = GovV3Helpers.buildAction( + type(AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[7] = GovV3Helpers.buildGnosisPayload(vm, actionsGnosis); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsScroll = new IPayloadsControllerCore.ExecutionAction[](1); + actionsScroll[0] = GovV3Helpers.buildAction( + type(AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[8] = GovV3Helpers.buildScrollPayload(vm, actionsScroll); + + IPayloadsControllerCore.ExecutionAction[] + memory actionsBNB = new IPayloadsControllerCore.ExecutionAction[](1); + actionsBNB[0] = GovV3Helpers.buildAction( + type(AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + payloads[9] = GovV3Helpers.buildBNBPayload(vm, actionsBNB); + + payloads[10] = PayloadsControllerUtils.Payload({ + chain: ChainIds.ZKSYNC, + accessLevel: PayloadsControllerUtils.AccessControl.Level_1, + payloadsController: address(GovernanceV3ZkSync.PAYLOADS_CONTROLLER), + payloadId: 9 + }); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md' + ) + ); + } +} diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/config.ts b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/config.ts new file mode 100644 index 000000000..bd44f9ca7 --- /dev/null +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/config.ts @@ -0,0 +1,607 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + configFile: + 'src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/config.ts', + update: true, + force: true, + author: 'Aave Chan Initiative', + pools: [ + 'AaveV2Ethereum', + 'AaveV3Ethereum', + 'AaveV3EthereumLido', + 'AaveV3EthereumEtherFi', + 'AaveV3Polygon', + 'AaveV3Avalanche', + 'AaveV3Optimism', + 'AaveV3Arbitrum', + 'AaveV3Metis', + 'AaveV3Base', + 'AaveV3Gnosis', + 'AaveV3Scroll', + 'AaveV3BNB', + 'AaveV3ZkSync', + ], + title: 'Increase Borrow Slope1 to all Stablecoins across all Aave Instances', + shortName: 'IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances', + date: '20241201', + discussion: + 'https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979', + snapshot: 'Direct-to-AIP', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV2Ethereum: { + configs: { + RATE_UPDATE_V2: [ + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '', + stableRateSlope1: '', + stableRateSlope2: '', + }, + }, + ], + }, + cache: {blockNumber: 21346502}, + }, + AaveV3Ethereum: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '35', + }, + }, + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '35', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '35', + }, + }, + { + asset: 'LUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'FRAX', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'crvUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'PYUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'USDe', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + ], + }, + cache: {blockNumber: 21346502}, + }, + AaveV3EthereumLido: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '35', + }, + }, + ], + }, + cache: {blockNumber: 21346502}, + }, + AaveV3EthereumEtherFi: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'PYUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'FRAX', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 21346502}, + }, + AaveV3Polygon: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '13.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'EURS', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'USDCn', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 65170205}, + }, + AaveV3Avalanche: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'DAIe', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDt', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'FRAX', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 54018606}, + }, + AaveV3Optimism: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '13.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'sUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'LUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'USDCn', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 128963066}, + }, + AaveV3Arbitrum: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'DAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '13.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'LUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'USDCn', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'FRAX', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'GHO', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 282086445}, + }, + AaveV3Metis: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'mDAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'mUSDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'mUSDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 19121761}, + }, + AaveV3Base: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDbC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '13.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 23367782}, + }, + AaveV3Gnosis: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'WXDAI', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'EURe', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '50', + }, + }, + { + asset: 'USDCe', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '13.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 37394270}, + }, + AaveV3Scroll: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 11705779}, + }, + AaveV3BNB: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'FDUSD', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 44648014}, + }, + AaveV3ZkSync: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'USDC', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + { + asset: 'USDT', + params: { + optimalUtilizationRate: '', + baseVariableBorrowRate: '', + variableRateSlope1: '12.5', + variableRateSlope2: '40', + }, + }, + ], + }, + cache: {blockNumber: 50675012}, + }, + }, +}; diff --git a/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol new file mode 100644 index 000000000..da938a35a --- /dev/null +++ b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol @@ -0,0 +1,46 @@ +// 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 Increase Borrow Slope1 to all Stablecoins across all Aave Instances + * @author Aave Chan Initiative + * - Snapshot: Direct-to-AIP + * - Discussion: https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979 + */ +contract AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 is + AaveV3PayloadZkSync +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](2); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ZkSyncAssets.USDC_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + rateStrategies[1] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ZkSyncAssets.USDT_UNDERLYING, + params: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: EngineFlags.KEEP_CURRENT, + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: 12_50, + variableRateSlope2: 40_00 + }) + }); + + return rateStrategies; + } +} diff --git a/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol new file mode 100644 index 000000000..8940ccaa8 --- /dev/null +++ b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol @@ -0,0 +1,37 @@ +// 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_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +/** + * @dev Test for AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + * command: FOUNDRY_PROFILE=zksync forge test --zksync --match-path=zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol -vv + */ +contract AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201_Test is + ProtocolV3TestBase +{ + AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 + internal proposal; + + function setUp() public override { + vm.createSelectFork(vm.rpcUrl('zksync'), 50675012); + proposal = new AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201(); + + super.setUp(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201', + AaveV3ZkSync.POOL, + address(proposal) + ); + } +} diff --git a/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol new file mode 100644 index 000000000..732c7728e --- /dev/null +++ b/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol @@ -0,0 +1,38 @@ +// 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_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201} from './AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol'; + +// @dev wrapper factory contract for deploying the payload +contract Deploy_AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201 { + address public immutable PAYLOAD; + + constructor() { + PAYLOAD = GovV3Helpers.deployDeterministicZkSync( + type(AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201) + .creationCode + ); + } +} + +/** + * @dev Deploy ZkSync + * deploy-command: make deploy-pk FOUNDRY_PROFILE=contract=zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.s.sol:DeployZkSync chain=zksync + */ +contract DeployZkSync is ZkSyncScript { + function run() external broadcast { + // deploy payloads + address payload0 = new Deploy_AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201() + .PAYLOAD(); + + // compose action + IPayloadsControllerCore.ExecutionAction[] + memory actions = new IPayloadsControllerCore.ExecutionAction[](1); + actions[0] = GovV3Helpers.buildAction(payload0); + + // register action at payloadsController + GovV3Helpers.createPayload(actions); + } +} From 6ad580a1d5417802d748b1fb3f9f6598df746194 Mon Sep 17 00:00:00 2001 From: Cache bot Date: Tue, 10 Dec 2024 16:56:06 +0000 Subject: [PATCH 08/10] fix(cache): automated cache update [skip ci] --- ...reaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md index 8e575d5bd..086bddd2b 100644 --- a/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md +++ b/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances.md @@ -76,8 +76,8 @@ Additionally, this change will ensure appropriate risk compensation for stableco ## References -- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol) -- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/main/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol) +- Implementation: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.sol) +- Tests: [AaveV2Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV2Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Ethereum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumLido](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumLido_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3EthereumEtherFi](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3EthereumEtherFi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Polygon](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Polygon_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Avalanche](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Avalanche_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Optimism_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Arbitrum_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Metis](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Metis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Base](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Base_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Gnosis](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Gnosis_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3Scroll_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3BNB](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3BNB_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol), [AaveV3ZkSync](https://github.com/bgd-labs/aave-proposals-v3/blob/b7dac56b973d2c43b6d535b15881abb118d08e49/zksync/src/20241201_Multi_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances/AaveV3ZkSync_IncreaseBorrowSlope1ToAllStablecoinsAcrossAllAaveInstances_20241201.t.sol) - Snapshot: Direct-to-AIP - [Discussion](https://governance.aave.com/t/arfc-increase-borrow-slope1-to-all-stablecoins-across-all-aave-instances/19979) From 954b89856136225da3f868e651cc9462b58c76cb Mon Sep 17 00:00:00 2001 From: MartinGbz Date: Thu, 12 Dec 2024 15:29:29 +0100 Subject: [PATCH 09/10] =?UTF-8?q?=E2=9C=A8=20Onboard=20SCR=20on=20AaveV3Sc?= =?UTF-8?q?roll=20(#539)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ Onboard SCR * πŸ› fix seed amount + mock SCR seed transfer + fix issue LM admin * βœ… run tests * πŸ“ update md --- ...OnboardSCRToAaveV3Scroll_20241203_after.md | 112 ++++++++++++++++++ ...roll_OnboardSCRToAaveV3Scroll_20241203.sol | 62 ++++++++++ ...ll_OnboardSCRToAaveV3Scroll_20241203.t.sol | 65 ++++++++++ .../OnboardSCRToAaveV3Scroll.md | 71 +++++++++++ .../OnboardSCRToAaveV3Scroll_20241203.s.sol | 61 ++++++++++ .../config.ts | 48 ++++++++ 6 files changed, 419 insertions(+) create mode 100644 diffs/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_before_AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_after.md create mode 100644 src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol create mode 100644 src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol create mode 100644 src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md create mode 100644 src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.s.sol create mode 100644 src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/config.ts diff --git a/diffs/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_before_AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_after.md b/diffs/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_before_AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_after.md new file mode 100644 index 000000000..caabe35de --- /dev/null +++ b/diffs/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_before_AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_after.md @@ -0,0 +1,112 @@ +## Reserve changes + +### Reserves added + +#### SCR ([0xd29687c813D741E2F938F4aC377128810E217b1b](https://scrollscan.com/address/0xd29687c813D741E2F938F4aC377128810E217b1b)) + +| description | value | +| --- | --- | +| decimals | 18 | +| isActive | true | +| isFrozen | false | +| supplyCap | 360,000 SCR | +| borrowCap | 180,000 SCR | +| debtCeiling | 0 $ [0] | +| isSiloed | false | +| isFlashloanable | true | +| oracle | [0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5](https://scrollscan.com/address/0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5) | +| oracleDecimals | 8 | +| oracleDescription | SCR / USD | +| oracleLatestAnswer | 0.929571 | +| usageAsCollateralEnabled | false | +| ltv | 0 % [0] | +| liquidationThreshold | 0 % [0] | +| liquidationBonus | 0 % | +| liquidationProtocolFee | 0 % [0] | +| reserveFactor | 20 % [2000] | +| aToken | [0x25718130C2a8eb94e2e1FAFB5f1cDd4b459aCf64](https://scrollscan.com/address/0x25718130C2a8eb94e2e1FAFB5f1cDd4b459aCf64) | +| aTokenImpl | [0x92EDe4ABd9df4Bfb49b4d723e4c932e35c47C54C](https://scrollscan.com/address/0x92EDe4ABd9df4Bfb49b4d723e4c932e35c47C54C) | +| variableDebtToken | [0xFFbA405BBF25B2e6C454d18165F2fd8786858c6B](https://scrollscan.com/address/0xFFbA405BBF25B2e6C454d18165F2fd8786858c6B) | +| variableDebtTokenImpl | [0x49bA16C08130FF8cFADE263B49387A8555bc057B](https://scrollscan.com/address/0x49bA16C08130FF8cFADE263B49387A8555bc057B) | +| borrowingEnabled | true | +| isBorrowableInIsolation | false | +| interestRateStrategy | [0xC37353E5766164D8654D3CB395acfDcA4c2E7Ddc](https://scrollscan.com/address/0xC37353E5766164D8654D3CB395acfDcA4c2E7Ddc) | +| aTokenName | Aave Scroll SCR | +| aTokenSymbol | aScrSCR | +| aTokenUnderlyingBalance | 100 SCR [100000000000000000000] | +| id | 4 | +| isPaused | false | +| variableDebtTokenName | Aave Scroll Variable Debt SCR | +| variableDebtTokenSymbol | variableDebtScrSCR | +| virtualAccountingActive | true | +| virtualBalance | 100 SCR [100000000000000000000] | +| optimalUsageRatio | 45 % | +| maxVariableBorrowRate | 307 % | +| baseVariableBorrowRate | 0 % | +| variableRateSlope1 | 7 % | +| variableRateSlope2 | 300 % | +| interestRate | ![ir](https://dash.onaave.com/api/static?variableRateSlope1=70000000000000000000000000&variableRateSlope2=3000000000000000000000000000&optimalUsageRatio=450000000000000000000000000&baseVariableBorrowRate=0&maxVariableBorrowRate=3070000000000000000000000000) | + + +## Raw diff + +```json +{ + "reserves": { + "0xd29687c813D741E2F938F4aC377128810E217b1b": { + "from": null, + "to": { + "aToken": "0x25718130C2a8eb94e2e1FAFB5f1cDd4b459aCf64", + "aTokenImpl": "0x92EDe4ABd9df4Bfb49b4d723e4c932e35c47C54C", + "aTokenName": "Aave Scroll SCR", + "aTokenSymbol": "aScrSCR", + "aTokenUnderlyingBalance": "100000000000000000000", + "borrowCap": 180000, + "borrowingEnabled": true, + "debtCeiling": 0, + "decimals": 18, + "id": 4, + "interestRateStrategy": "0xC37353E5766164D8654D3CB395acfDcA4c2E7Ddc", + "isActive": true, + "isBorrowableInIsolation": false, + "isFlashloanable": true, + "isFrozen": false, + "isPaused": false, + "isSiloed": false, + "liquidationBonus": 0, + "liquidationProtocolFee": 0, + "liquidationThreshold": 0, + "ltv": 0, + "oracle": "0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5", + "oracleDecimals": 8, + "oracleDescription": "SCR / USD", + "oracleLatestAnswer": "92957100", + "reserveFactor": 2000, + "supplyCap": 360000, + "symbol": "SCR", + "underlying": "0xd29687c813D741E2F938F4aC377128810E217b1b", + "usageAsCollateralEnabled": false, + "variableDebtToken": "0xFFbA405BBF25B2e6C454d18165F2fd8786858c6B", + "variableDebtTokenImpl": "0x49bA16C08130FF8cFADE263B49387A8555bc057B", + "variableDebtTokenName": "Aave Scroll Variable Debt SCR", + "variableDebtTokenSymbol": "variableDebtScrSCR", + "virtualAccountingActive": true, + "virtualBalance": "100000000000000000000" + } + } + }, + "strategies": { + "0xd29687c813D741E2F938F4aC377128810E217b1b": { + "from": null, + "to": { + "address": "0xC37353E5766164D8654D3CB395acfDcA4c2E7Ddc", + "baseVariableBorrowRate": "0", + "maxVariableBorrowRate": "3070000000000000000000000000", + "optimalUsageRatio": "450000000000000000000000000", + "variableRateSlope1": "70000000000000000000000000", + "variableRateSlope2": "3000000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol new file mode 100644 index 000000000..cc82e9d92 --- /dev/null +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol'; +import {AaveV3PayloadScroll} from 'aave-helpers/src/v3-config-engine/AaveV3PayloadScroll.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'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; +/** + * @title Onboard SCR to Aave V3 Scroll + * @author ACI + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xef7dfa4e96e5f6a7337648d2dd3882f7b10e969c9564c118a34ce99eccec9383 + * - Discussion: https://governance.aave.com/t/arfc-onboard-scr-to-aave-v3-scroll-instance/19688 + */ +contract AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203 is AaveV3PayloadScroll { + using SafeERC20 for IERC20; + + address public constant SCR = 0xd29687c813D741E2F938F4aC377128810E217b1b; + uint256 public constant SCR_SEED_AMOUNT = 100 * 1e18; + address public constant SCR_ADMIN = 0xac140648435d03f784879cd789130F22Ef588Fcd; + + function _postExecute() internal override { + IERC20(SCR).forceApprove(address(AaveV3Scroll.POOL), SCR_SEED_AMOUNT); + AaveV3Scroll.POOL.supply(SCR, SCR_SEED_AMOUNT, address(AaveV3Scroll.COLLECTOR), 0); + + (address aSCR, , ) = AaveV3Scroll.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses(SCR); + IEmissionManager(AaveV3Scroll.EMISSION_MANAGER).setEmissionAdmin(SCR, SCR_ADMIN); + IEmissionManager(AaveV3Scroll.EMISSION_MANAGER).setEmissionAdmin(aSCR, SCR_ADMIN); + } + + function newListings() public pure override returns (IAaveV3ConfigEngine.Listing[] memory) { + IAaveV3ConfigEngine.Listing[] memory listings = new IAaveV3ConfigEngine.Listing[](1); + + listings[0] = IAaveV3ConfigEngine.Listing({ + asset: SCR, + assetSymbol: 'SCR', + priceFeed: 0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5, + enabledToBorrow: EngineFlags.ENABLED, + borrowableInIsolation: EngineFlags.DISABLED, + withSiloedBorrowing: EngineFlags.DISABLED, + flashloanable: EngineFlags.ENABLED, + ltv: 0, + liqThreshold: 0, + liqBonus: 0, + reserveFactor: 20_00, + supplyCap: 360_000, + borrowCap: 180_000, + debtCeiling: 0, + liqProtocolFee: 0, + rateStrategyParams: IAaveV3ConfigEngine.InterestRateInputData({ + optimalUsageRatio: 45_00, + baseVariableBorrowRate: 0, + variableRateSlope1: 7_00, + variableRateSlope2: 300_00 + }) + }); + + return listings; + } +} diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol new file mode 100644 index 000000000..32c9af025 --- /dev/null +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers} from 'aave-helpers/src/GovV3Helpers.sol'; +import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol'; +import {GovernanceV3Scroll} from 'aave-address-book/GovernanceV3Scroll.sol'; +import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol'; +import {IEmissionManager} from 'aave-v3-origin/contracts/rewards/interfaces/IEmissionManager.sol'; + +import 'forge-std/Test.sol'; +import {ProtocolV3TestBase, ReserveConfig} from 'aave-helpers/src/ProtocolV3TestBase.sol'; +import {AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203} from './AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol'; + +/** + * @dev Test for AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203 + * command: FOUNDRY_PROFILE=scroll forge test --match-path=src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol -vv + */ +contract AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203_Test is ProtocolV3TestBase { + AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('scroll'), 11609572); + proposal = new AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203(); + + // Simulate SEED funds + address SCR_WHALE = 0x212499E4E77484E565E1965Ea220D30B1c469233; + vm.startPrank(SCR_WHALE); + IERC20(proposal.SCR()).transfer(GovernanceV3Scroll.EXECUTOR_LVL_1, proposal.SCR_SEED_AMOUNT()); + vm.stopPrank(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203', + AaveV3Scroll.POOL, + address(proposal) + ); + } + + function test_collectorHasSCRFunds() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address aTokenAddress, , ) = AaveV3Scroll + .AAVE_PROTOCOL_DATA_PROVIDER + .getReserveTokensAddresses(proposal.SCR()); + assertGe(IERC20(aTokenAddress).balanceOf(address(AaveV3Scroll.COLLECTOR)), 100 * 10 ** 18); + } + + function test_SCRAdmin() public { + GovV3Helpers.executePayload(vm, address(proposal)); + (address aSCR, , ) = AaveV3Scroll.AAVE_PROTOCOL_DATA_PROVIDER.getReserveTokensAddresses( + proposal.SCR() + ); + assertEq( + IEmissionManager(AaveV3Scroll.EMISSION_MANAGER).getEmissionAdmin(proposal.SCR()), + proposal.SCR_ADMIN() + ); + assertEq( + IEmissionManager(AaveV3Scroll.EMISSION_MANAGER).getEmissionAdmin(aSCR), + proposal.SCR_ADMIN() + ); + } +} diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md new file mode 100644 index 000000000..d0ac6518a --- /dev/null +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md @@ -0,0 +1,71 @@ +--- +title: "Onboard SCR to Aave V3 Scroll" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-onboard-scr-to-aave-v3-scroll-instance/19688" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0xef7dfa4e96e5f6a7337648d2dd3882f7b10e969c9564c118a34ce99eccec9383" +--- + +## Simple Summary + +The current ARFC aims to onboard SCR, the native token of Scroll, on the Aave V3 Scroll Instance. This onboarding will allow Aave users to supply and borrow SCR, thereby enhancing the utility and liquidity of the Scroll token within the DeFi ecosystem and more specifically, within the Aave ecosystem. + +## Motivation + +Scroll is an Ethereum Layer 2 chain which already has an Aave instance deployment and SCR is the governance token for the Scroll L2. By onboarding SCR to Aave V3, we aim to create new opportunities for Aave users to engage with this emerging staking ecosystem, while expanding SCR’s liquidity. + +**Benefits of listing this token:** + +Provide opportunities for Aave users to borrow against their SCR to unlock liquidity, or alternatively to borrow SCR against other collateral allowing them to participate in Scroll governance. + +**Market Impact:** + +We see no significant market impact from onboarding SCR except for providing new opportunities to Aave users which may cause users to switch from borrowing other tokens against their collateral. Overall we see onboarding SCR as net good for Aave users as it expands opportunities for them to engage in a new L2 ecosystem. + +**Chain to be deployed/listed:** + +Scroll. + +**Proof of Liquidity (POL) and Deposit Commitments:** + +POL and Deposit Commitments will be discussed at the ARFC stage. + +As disclosed by Marc Zeller, founder of ACI, the ACI Multisig has received 510K SCR on behalf of Aave DAO. Those funds will be coordinated with Karpatkey and Tokenlogic to define best usage of this airdrop. + +## Specification + +The table below illustrates the configured risk parameters for **SCR** + +| Parameter | Value | +| ------------------------- | -----------------------------------------: | +| Isolation Mode | false | +| Borrowable | ENABLED | +| Collateral Enabled | true | +| Supply Cap (SCR) | 360,000 | +| Borrow Cap (SCR) | 180,000 | +| Debt Ceiling | USD 0 | +| LTV | 0 % | +| LT | 0 % | +| Liquidation Bonus | 0 % | +| Liquidation Protocol Fee | 0 % | +| Reserve Factor | 20 % | +| Base Variable Borrow Rate | 0 % | +| Variable Slope 1 | 7 % | +| Variable Slope 2 | 300 % | +| Uoptimal | 45 % | +| Flashloanable | ENABLED | +| Siloed Borrowing | DISABLED | +| Borrowable in Isolation | DISABLED | +| Oracle | 0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5 | + +Additionaly [0xac140648435d03f784879cd789130F22Ef588Fcd](https://scrollscan.com/address/0xac140648435d03f784879cd789130F22Ef588Fcd) has been set as the emission admin for SCR and the corresponding aToken. + +## References + +- Implementation: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol) +- Tests: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xef7dfa4e96e5f6a7337648d2dd3882f7b10e969c9564c118a34ce99eccec9383) +- [Discussion](https://governance.aave.com/t/arfc-onboard-scr-to-aave-v3-scroll-instance/19688) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.s.sol b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.s.sol new file mode 100644 index 000000000..9c29184db --- /dev/null +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.s.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/src/GovV3Helpers.sol'; +import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol'; +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; +import {EthereumScript, ScrollScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol'; +import {AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203} from './AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol'; + +/** + * @dev Deploy Scroll + * deploy-command: make deploy-ledger contract=src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.s.sol:DeployScroll chain=scroll + * verify-command: FOUNDRY_PROFILE=scroll npx catapulta-verify -b broadcast/OnboardSCRToAaveV3Scroll_20241203.s.sol/534352/run-latest.json + */ +contract DeployScroll is ScrollScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203).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/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll_20241203.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 actionsScroll = new IPayloadsControllerCore.ExecutionAction[](1); + actionsScroll[0] = GovV3Helpers.buildAction( + type(AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203).creationCode + ); + payloads[0] = GovV3Helpers.buildScrollPayload(vm, actionsScroll); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md' + ) + ); + } +} diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/config.ts b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/config.ts new file mode 100644 index 000000000..8ade19731 --- /dev/null +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/config.ts @@ -0,0 +1,48 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3Scroll'], + title: 'Onboard SCR to Aave V3 Scroll', + shortName: 'OnboardSCRToAaveV3Scroll', + date: '20241203', + author: 'ACI', + discussion: 'https://governance.aave.com/t/arfc-onboard-scr-to-aave-v3-scroll-instance/19688', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0xef7dfa4e96e5f6a7337648d2dd3882f7b10e969c9564c118a34ce99eccec9383', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3Scroll: { + configs: { + ASSET_LISTING: [ + { + assetSymbol: 'SCR', + decimals: 18, + priceFeed: '0x26f6F7C468EE309115d19Aa2055db5A74F8cE7A5', + ltv: '0', + liqThreshold: '0', + liqBonus: '0', + debtCeiling: '0', + liqProtocolFee: '0', + enabledToBorrow: 'ENABLED', + flashloanable: 'ENABLED', + borrowableInIsolation: 'DISABLED', + withSiloedBorrowing: 'DISABLED', + reserveFactor: '20', + supplyCap: '360000', + borrowCap: '180000', + rateStrategyParams: { + optimalUtilizationRate: '45', + baseVariableBorrowRate: '0', + variableRateSlope1: '7', + variableRateSlope2: '300', + }, + asset: '0xd29687c813D741E2F938F4aC377128810E217b1b', + admin: '0xac140648435d03f784879cd789130F22Ef588Fcd', + }, + ], + }, + cache: {blockNumber: 11609572}, + }, + }, +}; From 7e54f902981d7d2a6f1b577467e6e95d18017224 Mon Sep 17 00:00:00 2001 From: Cache bot Date: Thu, 12 Dec 2024 14:29:53 +0000 Subject: [PATCH 10/10] fix(cache): automated cache update [skip ci] --- .../OnboardSCRToAaveV3Scroll.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md index d0ac6518a..956c1289e 100644 --- a/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md +++ b/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/OnboardSCRToAaveV3Scroll.md @@ -61,8 +61,8 @@ Additionaly [0xac140648435d03f784879cd789130F22Ef588Fcd](https://scrollscan.com/ ## References -- Implementation: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol) -- Tests: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol) +- Implementation: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/954b89856136225da3f868e651cc9462b58c76cb/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.sol) +- Tests: [AaveV3Scroll](https://github.com/bgd-labs/aave-proposals-v3/blob/954b89856136225da3f868e651cc9462b58c76cb/src/20241203_AaveV3Scroll_OnboardSCRToAaveV3Scroll/AaveV3Scroll_OnboardSCRToAaveV3Scroll_20241203.t.sol) - [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xef7dfa4e96e5f6a7337648d2dd3882f7b10e969c9564c118a34ce99eccec9383) - [Discussion](https://governance.aave.com/t/arfc-onboard-scr-to-aave-v3-scroll-instance/19688)