From 23873467c60a1c79bf5ed9a73c60e05ceaea6171 Mon Sep 17 00:00:00 2001 From: Marc Zeller Date: Fri, 1 Mar 2024 10:21:04 +0100 Subject: [PATCH] GHO BR increase 2024-02-29 - Review (#227) * GHO BR update * markdown cleanup --- ...86872b45a9cd8b31a38113050f5481468cb333.svg | 1 + ...rrowRateIncrease20240229_20240229_after.md | 43 ++++++++++++++ ...GHOBorrowRateIncrease20240229_20240229.sol | 20 +++++++ ...OBorrowRateIncrease20240229_20240229.t.sol | 32 ++++++++++ .../GHOBorrowRateIncrease20240229.md | 39 +++++++++++++ ...OBorrowRateIncrease20240229_20240229.s.sol | 58 +++++++++++++++++++ .../config.ts | 35 +++++++++++ 7 files changed, 228 insertions(+) create mode 100644 .assets/4986872b45a9cd8b31a38113050f5481468cb333.svg create mode 100644 diffs/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_before_AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_after.md create mode 100644 src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol create mode 100644 src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.t.sol create mode 100644 src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229.md create mode 100644 src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.s.sol create mode 100644 src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/config.ts diff --git a/.assets/4986872b45a9cd8b31a38113050f5481468cb333.svg b/.assets/4986872b45a9cd8b31a38113050f5481468cb333.svg new file mode 100644 index 000000000..85a982918 --- /dev/null +++ b/.assets/4986872b45a9cd8b31a38113050f5481468cb333.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stableUtilization Rate0%25%50%75%100%0%5%Optimal 0%Optimal 0% \ No newline at end of file diff --git a/diffs/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_before_AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_after.md b/diffs/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_before_AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_after.md new file mode 100644 index 000000000..55a74e365 --- /dev/null +++ b/diffs/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_before_AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_after.md @@ -0,0 +1,43 @@ +## Reserve changes + +### Reserves altered + +#### GHO ([0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f](https://etherscan.io/address/0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f)) + +| description | value before | value after | +| --- | --- | --- | +| interestRateStrategy | [0x00524e8E4C5FD2b8D8aa1226fA16b39Cad69B8A0](https://etherscan.io/address/0x00524e8E4C5FD2b8D8aa1226fA16b39Cad69B8A0) | [0x3a4D5316ec79622686a19f69CE546997cC8e8514](https://etherscan.io/address/0x3a4D5316ec79622686a19f69CE546997cC8e8514) | +| baseVariableBorrowRate | 6.22 % | 7.22 % | +| interestRate | ![before](/.assets/005b16eaa54199269ae451836387895a28c5d76e.svg) | ![after](/.assets/4986872b45a9cd8b31a38113050f5481468cb333.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f": { + "interestRateStrategy": { + "from": "0x00524e8E4C5FD2b8D8aa1226fA16b39Cad69B8A0", + "to": "0x3a4D5316ec79622686a19f69CE546997cC8e8514" + } + } + }, + "strategies": { + "0x3a4D5316ec79622686a19f69CE546997cC8e8514": { + "from": null, + "to": { + "baseStableBorrowRate": 0, + "baseVariableBorrowRate": "72200000000000000000000000", + "maxExcessStableToTotalDebtRatio": 0, + "maxExcessUsageRatio": 0, + "optimalStableToTotalDebtRatio": 0, + "optimalUsageRatio": 0, + "stableRateSlope1": 0, + "stableRateSlope2": 0, + "variableRateSlope1": 0, + "variableRateSlope2": 0 + } + } + } +} +``` \ No newline at end of file diff --git a/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol new file mode 100644 index 000000000..e76882bc5 --- /dev/null +++ b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol'; + +/** + * @title GHO Borrow Rate Increase 2024-02-29 + * @author ACI + * - Discussion: https://governance.aave.com/t/arfc-increase-gho-borrow-rate-29-02-2024/16787 + */ +contract AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229 { + address public constant INTEREST_RATE_STRATEGY = 0x3a4D5316ec79622686a19f69CE546997cC8e8514; + + function execute() external { + AaveV3Ethereum.POOL_CONFIGURATOR.setReserveInterestRateStrategyAddress( + AaveV3EthereumAssets.GHO_UNDERLYING, + INTEREST_RATE_STRATEGY + ); + } +} diff --git a/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.t.sol b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.t.sol new file mode 100644 index 000000000..d871732ce --- /dev/null +++ b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.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/ProtocolV3TestBase.sol'; +import {AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229} from './AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol'; + +/** + * @dev Test for AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229 + * command: make test-contract filter=AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229 + */ +contract AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229_Test is ProtocolV3TestBase { + AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('mainnet'), 19334429); + proposal = new AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229', + AaveV3Ethereum.POOL, + address(proposal) + ); + } +} diff --git a/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229.md b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229.md new file mode 100644 index 000000000..175d5d1a8 --- /dev/null +++ b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229.md @@ -0,0 +1,39 @@ +--- +title: "GHO Borrow Rate Increase 2024-02-29" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-increase-gho-borrow-rate-29-02-2024/16787" +--- + +## Simple Summary + +This ARFC proposes an increase in the GHO borrow rate from 6.22% APR to 7.22% APR to support the GHO peg restoration further, align borrowing costs with average market rates, and maintain its attractiveness as an option. The discounted rates remain unchanged at a 30% discount. + +## Motivation + +AIP-381 allows for 100 bps increases in the GHO borrow rate every 7 days while maintaining rates up to 9.5% APR if the monthly average price of GHO stays outside a 0,995<>1,005 price range. + +While the peg has improved, it is still outside of the target range. This ARFC continues with the previous proposals for a further increase in the GHO borrow rate. + +The GHO peg has shown more stability recently but is still slightly below the target. The average monthly borrow rate on Aave for DAI is 8.41%, LUSD is 7.34%, USDC is 9.01%, and USDT is 8.94%. + +Increasing the non-discounted borrow rate of GHO from 6.22% to 7.22% will keep it an attractive option, increase protocol revenue, and is not expected to negatively affect the peg. + +## Specification + +- **Current Borrow Rate:** 6.22% APR - ~6.35% APY +- **Proposed Borrow Rate:** 7.22% - ~7.48% APY (non-discounted) +- **Discounted Rates:** 30% discount +- **New Discounted Borrow Rate:** + - GHO: ~5.24% APY + +If required, ACI will monitor the GHO peg and use authorized discretion for further rate adjustments in coordination with Aave finance SPs. + +## References + +- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol) +- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.t.sol) +- [Discussion](https://governance.aave.com/t/arfc-increase-gho-borrow-rate-29-02-2024/16787) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.s.sol b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.s.sol new file mode 100644 index 000000000..7333881a4 --- /dev/null +++ b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.s.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol'; +import {EthereumScript} from 'aave-helpers/ScriptUtils.sol'; +import {AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229} from './AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229.sol'; + +/** + * @dev Deploy Ethereum + * deploy-command: make deploy-ledger contract=src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.s.sol:DeployEthereum chain=mainnet + * verify-command: npx catapulta-verify -b broadcast/GHOBorrowRateIncrease20240229_20240229.s.sol/1/run-latest.json + */ +contract DeployEthereum is EthereumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229).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/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229_20240229.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(AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229).creationCode + ); + payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/GHOBorrowRateIncrease20240229.md' + ) + ); + } +} diff --git a/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/config.ts b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/config.ts new file mode 100644 index 000000000..4c376b09d --- /dev/null +++ b/src/20240229_AaveV3Ethereum_GHOBorrowRateIncrease20240229/config.ts @@ -0,0 +1,35 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3Ethereum'], + title: 'GHO Borrow Rate Increase 2024-02-29', + shortName: 'GHOBorrowRateIncrease20240229', + date: '20240229', + author: 'ACI', + discussion: 'https://governance.aave.com/t/arfc-increase-gho-borrow-rate-29-02-2024/16787', + snapshot: '', + }, + poolOptions: { + AaveV3Ethereum: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'GHO', + params: { + optimalUtilizationRate: '0', + baseVariableBorrowRate: '7.22', + variableRateSlope1: '0', + variableRateSlope2: '0', + stableRateSlope1: '0', + stableRateSlope2: '0', + baseStableRateOffset: '0', + stableRateExcessOffset: '0', + optimalStableToTotalDebtRatio: '0', + }, + }, + ], + }, + cache: {blockNumber: 19334429}, + }, + }, +};