generated from bgd-labs/bgd-forge-template
-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update WETH IR on V3 Arbitrum and Optimism (#237)
* Update WETH IR on V3 Arbitrum and Optimism * Add text
- Loading branch information
1 parent
7a1d518
commit a492342
Showing
10 changed files
with
495 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions
44
...216_before_AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216_after.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
## Reserve changes | ||
|
||
### Reserves altered | ||
|
||
#### WETH ([0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1)) | ||
|
||
| description | value before | value after | | ||
| --- | --- | --- | | ||
| interestRateStrategy | [0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514](https://arbiscan.io/address/0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514) | [0xd56eE97960b1b2953e751151Fd84888cF3F3b521](https://arbiscan.io/address/0xd56eE97960b1b2953e751151Fd84888cF3F3b521) | | ||
| variableRateSlope1 | 3.3 % | 3 % | | ||
| baseStableBorrowRate | 6.3 % | 6 % | | ||
| interestRate | ![before](/.assets/ca6b2aa74895f1fc2926cdd88b0b86033580d616.svg) | ![after](/.assets/4e91bd04e654729df4b59d001423aed83e6d6759.svg) | | ||
|
||
## Raw diff | ||
|
||
```json | ||
{ | ||
"reserves": { | ||
"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1": { | ||
"interestRateStrategy": { | ||
"from": "0xAC4f9019608f3A359Ba6a576DC4deC9561D2e514", | ||
"to": "0xd56eE97960b1b2953e751151Fd84888cF3F3b521" | ||
} | ||
} | ||
}, | ||
"strategies": { | ||
"0xd56eE97960b1b2953e751151Fd84888cF3F3b521": { | ||
"from": null, | ||
"to": { | ||
"baseStableBorrowRate": "60000000000000000000000000", | ||
"baseVariableBorrowRate": 0, | ||
"maxExcessStableToTotalDebtRatio": "800000000000000000000000000", | ||
"maxExcessUsageRatio": "100000000000000000000000000", | ||
"optimalStableToTotalDebtRatio": "200000000000000000000000000", | ||
"optimalUsageRatio": "900000000000000000000000000", | ||
"stableRateSlope1": "40000000000000000000000000", | ||
"stableRateSlope2": "800000000000000000000000000", | ||
"variableRateSlope1": "30000000000000000000000000", | ||
"variableRateSlope2": "800000000000000000000000000" | ||
} | ||
} | ||
} | ||
} | ||
``` |
44 changes: 44 additions & 0 deletions
44
...216_before_AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216_after.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
## Reserve changes | ||
|
||
### Reserves altered | ||
|
||
#### WETH ([0x4200000000000000000000000000000000000006](https://optimistic.etherscan.io/address/0x4200000000000000000000000000000000000006)) | ||
|
||
| description | value before | value after | | ||
| --- | --- | --- | | ||
| interestRateStrategy | [0xd00655ED65edE44354F54A23d46DCbd7ba0727dD](https://optimistic.etherscan.io/address/0xd00655ED65edE44354F54A23d46DCbd7ba0727dD) | [0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f](https://optimistic.etherscan.io/address/0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f) | | ||
| variableRateSlope1 | 3.3 % | 3 % | | ||
| baseStableBorrowRate | 6.3 % | 6 % | | ||
| interestRate | ![before](/.assets/ca6b2aa74895f1fc2926cdd88b0b86033580d616.svg) | ![after](/.assets/4e91bd04e654729df4b59d001423aed83e6d6759.svg) | | ||
|
||
## Raw diff | ||
|
||
```json | ||
{ | ||
"reserves": { | ||
"0x4200000000000000000000000000000000000006": { | ||
"interestRateStrategy": { | ||
"from": "0xd00655ED65edE44354F54A23d46DCbd7ba0727dD", | ||
"to": "0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f" | ||
} | ||
} | ||
}, | ||
"strategies": { | ||
"0x16F9bBeE415e519F184Fe1c09d653C6567e4eb2f": { | ||
"from": null, | ||
"to": { | ||
"baseStableBorrowRate": "60000000000000000000000000", | ||
"baseVariableBorrowRate": 0, | ||
"maxExcessStableToTotalDebtRatio": "800000000000000000000000000", | ||
"maxExcessUsageRatio": "100000000000000000000000000", | ||
"optimalStableToTotalDebtRatio": "200000000000000000000000000", | ||
"optimalUsageRatio": "900000000000000000000000000", | ||
"stableRateSlope1": "40000000000000000000000000", | ||
"stableRateSlope2": "800000000000000000000000000", | ||
"variableRateSlope1": "30000000000000000000000000", | ||
"variableRateSlope2": "800000000000000000000000000" | ||
} | ||
} | ||
} | ||
} | ||
``` |
42 changes: 42 additions & 0 deletions
42
...IROnV3ArbitrumAndOptimism/AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// 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 Update WETH IR on V3 Arbitrum and Optimism | ||
* @author Chaos Labs | ||
* - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xef56befdec2abf0bc9611f033c2cec62447f148369a075829664f2de6bc0ae77 | ||
* - Discussion: https://governance.aave.com/t/arfc-chaos-labs-update-weth-ir-on-v3-arbitrum-and-optimism-02-16-2024/16644 | ||
*/ | ||
contract AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 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.WETH_UNDERLYING, | ||
params: IV3RateStrategyFactory.RateStrategyParams({ | ||
optimalUsageRatio: EngineFlags.KEEP_CURRENT, | ||
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, | ||
variableRateSlope1: _bpsToRay(3_00), | ||
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; | ||
} | ||
} |
70 changes: 70 additions & 0 deletions
70
...OnV3ArbitrumAndOptimism/AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import {AaveV3Arbitrum, AaveV3ArbitrumAssets} from 'aave-address-book/AaveV3Arbitrum.sol'; | ||
import {IDefaultInterestRateStrategy} from 'aave-address-book/AaveV3.sol'; | ||
import 'forge-std/Test.sol'; | ||
import {ProtocolV3TestBase, ReserveConfig, InterestStrategyValues} from 'aave-helpers/ProtocolV3TestBase.sol'; | ||
import {AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216} from './AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol'; | ||
|
||
/** | ||
* @dev Test for AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 | ||
* command: make test-contract filter=AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 | ||
*/ | ||
contract AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216_Test is ProtocolV3TestBase { | ||
AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 internal proposal; | ||
|
||
function setUp() public { | ||
vm.createSelectFork(vm.rpcUrl('arbitrum'), 186689064); | ||
proposal = new AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216(); | ||
} | ||
|
||
/** | ||
* @dev executes the generic test suite including e2e and config snapshots | ||
*/ | ||
function test_defaultProposalExecution() public { | ||
(ReserveConfig[] memory allConfigsBefore, ReserveConfig[] memory allConfigsAfter) = defaultTest( | ||
'AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216', | ||
AaveV3Arbitrum.POOL, | ||
address(proposal) | ||
); | ||
|
||
address[] memory assetsChanged = new address[](1); | ||
assetsChanged[0] = AaveV3ArbitrumAssets.WETH_UNDERLYING; | ||
|
||
_noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged); | ||
|
||
ReserveConfig memory reserveConfigAfter = _findReserveConfig(allConfigsAfter, assetsChanged[0]); | ||
|
||
ReserveConfig memory reserveConfigBefore = _findReserveConfig( | ||
allConfigsBefore, | ||
assetsChanged[0] | ||
); | ||
|
||
IDefaultInterestRateStrategy strategy = IDefaultInterestRateStrategy( | ||
reserveConfigBefore.interestRateStrategy | ||
); | ||
|
||
InterestStrategyValues memory expectedStrategyValues = InterestStrategyValues({ | ||
addressesProvider: address(AaveV3Arbitrum.POOL_ADDRESSES_PROVIDER), | ||
optimalUsageRatio: strategy.OPTIMAL_USAGE_RATIO(), | ||
baseVariableBorrowRate: strategy.getBaseVariableBorrowRate(), | ||
baseStableBorrowRate: _bpsToRay(6_00), | ||
variableRateSlope1: _bpsToRay(3_00), | ||
variableRateSlope2: strategy.getVariableRateSlope2(), | ||
stableRateSlope1: strategy.getStableRateSlope1(), | ||
stableRateSlope2: strategy.getStableRateSlope2(), | ||
optimalStableToTotalDebtRatio: strategy.OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO() | ||
}); | ||
|
||
_validateInterestRateStrategy( | ||
reserveConfigAfter.interestRateStrategy, | ||
reserveConfigAfter.interestRateStrategy, | ||
expectedStrategyValues | ||
); | ||
} | ||
|
||
function _bpsToRay(uint256 amount) internal pure returns (uint256) { | ||
return (amount * 1e27) / 10_000; | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
...IROnV3ArbitrumAndOptimism/AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import {AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol'; | ||
import {AaveV3PayloadOptimism} from 'aave-helpers/v3-config-engine/AaveV3PayloadOptimism.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 Update WETH IR on V3 Arbitrum and Optimism | ||
* @author Chaos Labs | ||
* - Snapshot: https://snapshot.org/#/aave.eth/proposal/0xef56befdec2abf0bc9611f033c2cec62447f148369a075829664f2de6bc0ae77 | ||
* - Discussion: https://governance.aave.com/t/arfc-chaos-labs-update-weth-ir-on-v3-arbitrum-and-optimism-02-16-2024/16644 | ||
*/ | ||
contract AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 is AaveV3PayloadOptimism { | ||
function rateStrategiesUpdates() | ||
public | ||
pure | ||
override | ||
returns (IAaveV3ConfigEngine.RateStrategyUpdate[] memory) | ||
{ | ||
IAaveV3ConfigEngine.RateStrategyUpdate[] | ||
memory rateStrategies = new IAaveV3ConfigEngine.RateStrategyUpdate[](1); | ||
rateStrategies[0] = IAaveV3ConfigEngine.RateStrategyUpdate({ | ||
asset: AaveV3OptimismAssets.WETH_UNDERLYING, | ||
params: IV3RateStrategyFactory.RateStrategyParams({ | ||
optimalUsageRatio: EngineFlags.KEEP_CURRENT, | ||
baseVariableBorrowRate: EngineFlags.KEEP_CURRENT, | ||
variableRateSlope1: _bpsToRay(3_00), | ||
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; | ||
} | ||
} |
70 changes: 70 additions & 0 deletions
70
...OnV3ArbitrumAndOptimism/AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.0; | ||
|
||
import {AaveV3Optimism, AaveV3OptimismAssets} from 'aave-address-book/AaveV3Optimism.sol'; | ||
import {IDefaultInterestRateStrategy} from 'aave-address-book/AaveV3.sol'; | ||
import 'forge-std/Test.sol'; | ||
import {ProtocolV3TestBase, ReserveConfig, InterestStrategyValues} from 'aave-helpers/ProtocolV3TestBase.sol'; | ||
import {AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216} from './AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol'; | ||
|
||
/** | ||
* @dev Test for AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 | ||
* command: make test-contract filter=AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 | ||
*/ | ||
contract AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216_Test is ProtocolV3TestBase { | ||
AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216 internal proposal; | ||
|
||
function setUp() public { | ||
vm.createSelectFork(vm.rpcUrl('optimism'), 116936293); | ||
proposal = new AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216(); | ||
} | ||
|
||
/** | ||
* @dev executes the generic test suite including e2e and config snapshots | ||
*/ | ||
function test_defaultProposalExecution() public { | ||
(ReserveConfig[] memory allConfigsBefore, ReserveConfig[] memory allConfigsAfter) = defaultTest( | ||
'AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216', | ||
AaveV3Optimism.POOL, | ||
address(proposal) | ||
); | ||
|
||
address[] memory assetsChanged = new address[](1); | ||
assetsChanged[0] = AaveV3OptimismAssets.WETH_UNDERLYING; | ||
|
||
_noReservesConfigsChangesApartFrom(allConfigsBefore, allConfigsAfter, assetsChanged); | ||
|
||
ReserveConfig memory reserveConfigAfter = _findReserveConfig(allConfigsAfter, assetsChanged[0]); | ||
|
||
ReserveConfig memory reserveConfigBefore = _findReserveConfig( | ||
allConfigsBefore, | ||
assetsChanged[0] | ||
); | ||
|
||
IDefaultInterestRateStrategy strategy = IDefaultInterestRateStrategy( | ||
reserveConfigBefore.interestRateStrategy | ||
); | ||
|
||
InterestStrategyValues memory expectedStrategyValues = InterestStrategyValues({ | ||
addressesProvider: address(AaveV3Optimism.POOL_ADDRESSES_PROVIDER), | ||
optimalUsageRatio: strategy.OPTIMAL_USAGE_RATIO(), | ||
baseVariableBorrowRate: strategy.getBaseVariableBorrowRate(), | ||
baseStableBorrowRate: _bpsToRay(6_00), | ||
variableRateSlope1: _bpsToRay(3_00), | ||
variableRateSlope2: strategy.getVariableRateSlope2(), | ||
stableRateSlope1: strategy.getStableRateSlope1(), | ||
stableRateSlope2: strategy.getStableRateSlope2(), | ||
optimalStableToTotalDebtRatio: strategy.OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO() | ||
}); | ||
|
||
_validateInterestRateStrategy( | ||
reserveConfigAfter.interestRateStrategy, | ||
reserveConfigAfter.interestRateStrategy, | ||
expectedStrategyValues | ||
); | ||
} | ||
|
||
function _bpsToRay(uint256 amount) internal pure returns (uint256) { | ||
return (amount * 1e27) / 10_000; | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
...ulti_UpdateWETHIROnV3ArbitrumAndOptimism/UpdateWETHIROnV3ArbitrumAndOptimism.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--- | ||
title: "Update WETH IR on V3 Arbitrum and Optimism" | ||
author: "Chaos Labs" | ||
discussions: "https://governance.aave.com/t/arfc-chaos-labs-update-weth-ir-on-v3-arbitrum-and-optimism-02-16-2024/16644" | ||
snapshot: "https://snapshot.org/#/aave.eth/proposal/0xef56befdec2abf0bc9611f033c2cec62447f148369a075829664f2de6bc0ae77" | ||
--- | ||
|
||
## Simple Summary | ||
|
||
Decrease slope1 on Arbitrum and Optimism from 3.3% to 3%. | ||
|
||
## Motivation | ||
|
||
Over the last eight months, we have observed a drop-off in WETH interest rates on Ethereum and, thus, relative demand for ETH borrowing. | ||
|
||
This phenomenon can be explained by the drop-off in ETH staking yield, as we can deduce through the relatively strong correlation between WETH borrow APY and stETH staking APY on Ethereum due to profitable looping strategies. Additionally, given Aave prices stETH:ETH 1:1 with the underlying exchange rate, minimal liquidation risk exists in potential wstETH market price movements | ||
|
||
Based on the observed trend, it’s evident that Arbitrum and Optimism could benefit from a reduction in slope1 to enhance utilization rates and consequently increase revenues. While the decrease in base_rate on both chains did positively impact utilization, it remains suboptimal. Thus, we simply take the P95 of the stETH APY differential vs WETH borrow APY since the base_rate decrease, which returned 0.6%, to derive the decrease in slope1. Considering the UOptimal rate is projected to be below the current stETH APY with a 0.6% variance, any prolonged convergence above UOptimal could lead to interest rate volatility. In such a scenario, it would be prudent to revert slope1. However, given the current trend and staking APY, this adjustment would likely result in higher utilization rates and greater profits for the Aave DAO. | ||
|
||
## Specification | ||
|
||
| Chain | Asset | Parameter | Current | Recommended | | ||
| -------- | ----- | --------- | ------- | ----------- | | ||
| Arbitrum | WETH | Slope1 | 3.3% | 3% | | ||
| Optimism | WETH | Slope1 | 3.3% | 3% | | ||
|
||
## References | ||
|
||
- Implementation: [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240216_Multi_UpdateWETHIROnV3ArbitrumAndOptimism/AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240216_Multi_UpdateWETHIROnV3ArbitrumAndOptimism/AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.sol) | ||
- Tests: [AaveV3Optimism](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240216_Multi_UpdateWETHIROnV3ArbitrumAndOptimism/AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.t.sol), [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240216_Multi_UpdateWETHIROnV3ArbitrumAndOptimism/AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216.t.sol) | ||
- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0xef56befdec2abf0bc9611f033c2cec62447f148369a075829664f2de6bc0ae77) | ||
- [Discussion](https://governance.aave.com/t/arfc-chaos-labs-update-weth-ir-on-v3-arbitrum-and-optimism-02-16-2024/16644) | ||
|
||
## Copyright | ||
|
||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). |
Oops, something went wrong.
a492342
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Foundry report
Build log
Test success 🌈