From 15298f4d41cd6165cc15d9c03d49c9affa7bbb4b Mon Sep 17 00:00:00 2001 From: Marc Zeller <21088542+marczeller@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:24:45 +0200 Subject: [PATCH 1/2] weETH risk params update - Review (#349) * weETH risk params update * Update src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol Co-authored-by: Harsh Pandey * Update src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol Co-authored-by: Harsh Pandey * updated MD * Update src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol Co-authored-by: Harsh Pandey * updated tests --------- Co-authored-by: marczeller Co-authored-by: Harsh Pandey --- ...aaf674e060809c81e8e6b0316631fac3bf3376.svg | 1 + ...8f8e9f35475a5e5187d5baf9a5a10770d874d4.svg | 1 + ...eCurveForWeETHOnArbitrum_20240603_after.md | 48 ++++++++++++++ ...stRateCurveForWeETHOnArbitrum_20240603.sol | 64 +++++++++++++++++++ ...RateCurveForWeETHOnArbitrum_20240603.t.sol | 34 ++++++++++ ...tingInterestRateCurveForWeETHOnArbitrum.md | 38 +++++++++++ ...RateCurveForWeETHOnArbitrum_20240603.s.sol | 60 +++++++++++++++++ .../config.ts | 49 ++++++++++++++ 8 files changed, 295 insertions(+) create mode 100644 .assets/3aaaf674e060809c81e8e6b0316631fac3bf3376.svg create mode 100644 .assets/e18f8e9f35475a5e5187d5baf9a5a10770d874d4.svg create mode 100644 diffs/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_before_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_after.md create mode 100644 src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol create mode 100644 src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol create mode 100644 src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md create mode 100644 src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol create mode 100644 src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/config.ts diff --git a/.assets/3aaaf674e060809c81e8e6b0316631fac3bf3376.svg b/.assets/3aaaf674e060809c81e8e6b0316631fac3bf3376.svg new file mode 100644 index 000000000..5072a99e3 --- /dev/null +++ b/.assets/3aaaf674e060809c81e8e6b0316631fac3bf3376.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%100%200%300%uOptimal 35%uOptimal 35% \ No newline at end of file diff --git a/.assets/e18f8e9f35475a5e5187d5baf9a5a10770d874d4.svg b/.assets/e18f8e9f35475a5e5187d5baf9a5a10770d874d4.svg new file mode 100644 index 000000000..5072a99e3 --- /dev/null +++ b/.assets/e18f8e9f35475a5e5187d5baf9a5a10770d874d4.svg @@ -0,0 +1 @@ + Borrow APR, variableBorrow APR, stable0%25%50%75%100%0%100%200%300%uOptimal 35%uOptimal 35% \ No newline at end of file diff --git a/diffs/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_before_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_after.md b/diffs/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_before_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_after.md new file mode 100644 index 000000000..ed351368b --- /dev/null +++ b/diffs/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_before_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_after.md @@ -0,0 +1,48 @@ +## Reserve changes + +### Reserves altered + +#### weETH ([0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe](https://arbiscan.io/address/0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe)) + +| description | value before | value after | +| --- | --- | --- | +| reserveFactor | 15 % | 45 % | +| interestRateStrategy | [0x0fc12Ad84210695dE8C0D5D8B6f720C37cEaB02f](https://arbiscan.io/address/0x0fc12Ad84210695dE8C0D5D8B6f720C37cEaB02f) | [0x4011fcd421b9E90f131B164EC1d162DBE269621C](https://arbiscan.io/address/0x4011fcd421b9E90f131B164EC1d162DBE269621C) | +| optimalUsageRatio | 45 % | 35 % | +| maxExcessUsageRatio | 55 % | 65 % | +| interestRate | ![before](/.assets/859e8f346e62fa5dc8eed4d223ca2a8d1c9fc80c.svg) | ![after](/.assets/e18f8e9f35475a5e5187d5baf9a5a10770d874d4.svg) | + +## Raw diff + +```json +{ + "reserves": { + "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe": { + "interestRateStrategy": { + "from": "0x0fc12Ad84210695dE8C0D5D8B6f720C37cEaB02f", + "to": "0x4011fcd421b9E90f131B164EC1d162DBE269621C" + }, + "reserveFactor": { + "from": 1500, + "to": 4500 + } + } + }, + "strategies": { + "0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe": { + "address": { + "from": "0x0fc12Ad84210695dE8C0D5D8B6f720C37cEaB02f", + "to": "0x4011fcd421b9E90f131B164EC1d162DBE269621C" + }, + "maxExcessUsageRatio": { + "from": "550000000000000000000000000", + "to": "650000000000000000000000000" + }, + "optimalUsageRatio": { + "from": "450000000000000000000000000", + "to": "350000000000000000000000000" + } + } + } +} +``` \ No newline at end of file diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol new file mode 100644 index 000000000..5a3b683f5 --- /dev/null +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol'; +import {AaveV3PayloadArbitrum} from 'aave-helpers/v3-config-engine/AaveV3PayloadArbitrum.sol'; +import {EngineFlags} from 'aave-helpers/v3-config-engine/EngineFlags.sol'; +import {IAaveV3ConfigEngine} from 'aave-helpers/v3-config-engine/IAaveV3ConfigEngine.sol'; +import {IV3RateStrategyFactory} from 'aave-helpers/v3-config-engine/IV3RateStrategyFactory.sol'; +/** + * @title Adjusting Interest Rate Curve for weETH on Arbitrum + * @author ACI + * - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xed2fd3dfee1f29f04b6cda4a5c4629fcca32a5c961b1b3e2a49ba6842367ce31 + * - Discussion: https://governance.aave.com/t/arfc-adjusting-interest-rate-curve-for-weeth-on-arbitrum/17804 + */ +contract AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603 is + AaveV3PayloadArbitrum +{ + function rateStrategiesUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) + { + IAaveV3ConfigEngine.RateStrategyUpdate[] + memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); + rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ + asset: AaveV3ArbitrumAssets.weETH_UNDERLYING, + params: IV3RateStrategyFactory.RateStrategyParams({ + optimalUsageRatio: _bpsToRay(35_00), + baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, + variableRateSlope1: EngineFlags.KEEP_CURRENT, + variableRateSlope2: EngineFlags.KEEP_CURRENT, + stableRateSlope1: EngineFlags.KEEP_CURRENT, + stableRateSlope2: EngineFlags.KEEP_CURRENT, + baseStableRateOffset: EngineFlags.KEEP_CURRENT, + stableRateExcessOffset: EngineFlags.KEEP_CURRENT, + optimalStableToTotalDebtRatio: EngineFlags.KEEP_CURRENT + }) + }); + + return rateStrategies; + } + function borrowsUpdates() + public + pure + override + returns (IAaveV3ConfigEngine.BorrowUpdate[] memory) + { + IAaveV3ConfigEngine.BorrowUpdate[] + memory borrowUpdates = new IAaveV3ConfigEngine.BorrowUpdate[](1); + + borrowUpdates[0] = IAaveV3ConfigEngine.BorrowUpdate({ + asset: AaveV3ArbitrumAssets.weETH_UNDERLYING, + enabledToBorrow: EngineFlags.KEEP_CURRENT, + flashloanable: EngineFlags.KEEP_CURRENT, + stableRateModeEnabled: EngineFlags.KEEP_CURRENT, + borrowableInIsolation: EngineFlags.KEEP_CURRENT, + withSiloedBorrowing: EngineFlags.KEEP_CURRENT, + reserveFactor: 45_00 + }); + + return borrowUpdates; + } +} diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol new file mode 100644 index 000000000..488ccd19e --- /dev/null +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol @@ -0,0 +1,34 @@ +// 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/ProtocolV3TestBase.sol'; +import {AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603} from './AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol'; + +/** + * @dev Test for AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603 + * command: FOUNDRY_PROFILE=arbitrum forge test --match-path=src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol -vv + */ +contract AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603_Test is + ProtocolV3TestBase +{ + AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603 internal proposal; + + function setUp() public { + vm.createSelectFork(vm.rpcUrl('arbitrum'), 217920822); + proposal = new AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603(); + } + + /** + * @dev executes the generic test suite including e2e and config snapshots + */ + function test_defaultProposalExecution() public { + defaultTest( + 'AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603', + AaveV3Arbitrum.POOL, + address(proposal) + ); + } +} diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md new file mode 100644 index 000000000..27799958e --- /dev/null +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md @@ -0,0 +1,38 @@ +--- +title: " Adjusting Interest Rate Curve for weETH on Arbitrum" +author: "ACI" +discussions: "https://governance.aave.com/t/arfc-adjusting-interest-rate-curve-for-weeth-on-arbitrum/17804" +snapshot: "https://snapshot.org/#/aave.eth/proposal/0xed2fd3dfee1f29f04b6cda4a5c4629fcca32a5c961b1b3e2a49ba6842367ce31" +--- + +## Simple Summary + +The current proposal suggests adjusting the Interest Rate Curve for weETH on Arbitrum network to align with the mainnet, so Risk Parameters will be the same for weETH on Mainnet, Arbitrum, and Base networks. + +The aim is to optimize the utilization rates and improve revenue for the DAO. + +## Motivation + +By adjusting the Interest Rate Curve and updating the RF, we aim to encourage Increase efficiency and optimize DAO revenue for the weETH asset. + +## Specification + +Change Arbitrum Risk Parameters for weETH to align with Mainnet & Base. + +**Proposed Changes:** + +| Parameter | Value | +| -------------- | ------ | +| Uoptimal | 35.00% | +| Reserve Factor | 45.00% | + +## References + +- Implementation: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol) +- Tests: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol) +- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xed2fd3dfee1f29f04b6cda4a5c4629fcca32a5c961b1b3e2a49ba6842367ce31) +- [Discussion](https://governance.aave.com/t/arfc-adjusting-interest-rate-curve-for-weeth-on-arbitrum/17804) + +## Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol new file mode 100644 index 000000000..1aae12ab6 --- /dev/null +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol'; +import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol'; +import {EthereumScript, ArbitrumScript} from 'aave-helpers/ScriptUtils.sol'; +import {AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603} from './AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol'; + +/** + * @dev Deploy Arbitrum + * deploy-command: make deploy-ledger contract=src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol:DeployArbitrum chain=arbitrum + * verify-command: FOUNDRY_PROFILE=arbitrum npx catapulta-verify -b broadcast/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.s.sol/42161/run-latest.json + */ +contract DeployArbitrum is ArbitrumScript { + function run() external broadcast { + // deploy payloads + address payload0 = GovV3Helpers.deployDeterministic( + type(AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603).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/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.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 actionsArbitrum = new IPayloadsControllerCore.ExecutionAction[](1); + actionsArbitrum[0] = GovV3Helpers.buildAction( + type(AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603).creationCode + ); + payloads[0] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum); + + // create proposal + vm.startBroadcast(); + GovV3Helpers.createProposal( + vm, + payloads, + GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL, + GovV3Helpers.ipfsHashFile( + vm, + 'src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md' + ) + ); + } +} diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/config.ts b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/config.ts new file mode 100644 index 000000000..099013a2b --- /dev/null +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/config.ts @@ -0,0 +1,49 @@ +import {ConfigFile} from '../../generator/types'; +export const config: ConfigFile = { + rootOptions: { + pools: ['AaveV3Arbitrum'], + title: ' Adjusting Interest Rate Curve for weETH on Arbitrum', + shortName: 'AdjustingInterestRateCurveForWeETHOnArbitrum', + date: '20240603', + author: 'ACI', + discussion: + 'https://governance.aave.com/t/arfc-adjusting-interest-rate-curve-for-weeth-on-arbitrum/17804', + snapshot: + 'https://snapshot.org/#/aave.eth/proposal/0xed2fd3dfee1f29f04b6cda4a5c4629fcca32a5c961b1b3e2a49ba6842367ce31', + votingNetwork: 'POLYGON', + }, + poolOptions: { + AaveV3Arbitrum: { + configs: { + RATE_UPDATE_V3: [ + { + asset: 'weETH', + params: { + optimalUtilizationRate: '35', + baseVariableBorrowRate: '0', + variableRateSlope1: '7', + variableRateSlope2: '300', + stableRateSlope1: '7', + stableRateSlope2: '300', + baseStableRateOffset: '0', + stableRateExcessOffset: '00', + optimalStableToTotalDebtRatio: '0', + }, + }, + ], + BORROWS_UPDATE: [ + { + enabledToBorrow: 'KEEP_CURRENT', + flashloanable: 'KEEP_CURRENT', + stableRateModeEnabled: 'DISABLED', + borrowableInIsolation: 'DISABLED', + withSiloedBorrowing: 'DISABLED', + reserveFactor: '45', + asset: 'weETH', + }, + ], + }, + cache: {blockNumber: 217920822}, + }, + }, +}; From 239d2100c5c77d7e10ed7c56b752b14ccb066b6d Mon Sep 17 00:00:00 2001 From: Cache bot Date: Wed, 5 Jun 2024 13:25:23 +0000 Subject: [PATCH 2/2] fix(cache): automated cache update [skip ci] --- .../AdjustingInterestRateCurveForWeETHOnArbitrum.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md index 27799958e..f7e9ee081 100644 --- a/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md +++ b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AdjustingInterestRateCurveForWeETHOnArbitrum.md @@ -28,8 +28,8 @@ Change Arbitrum Risk Parameters for weETH to align with Mainnet & Base. ## References -- Implementation: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol) -- Tests: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol) +- Implementation: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/15298f4d41cd6165cc15d9c03d49c9affa7bbb4b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.sol) +- Tests: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/15298f4d41cd6165cc15d9c03d49c9affa7bbb4b/src/20240603_AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum/AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603.t.sol) - [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xed2fd3dfee1f29f04b6cda4a5c4629fcca32a5c961b1b3e2a49ba6842367ce31) - [Discussion](https://governance.aave.com/t/arfc-adjusting-interest-rate-curve-for-weeth-on-arbitrum/17804)