Skip to content

Commit

Permalink
feat: gho stewards activation (#276)
Browse files Browse the repository at this point in the history
* feat: gho stewards activation payload

* test: added stewards tests

* chore: add writeup

* fix: writeup

* fix: oops

* fix: writeup

* chore: update suggestion

* fix: give pool admin role just to be consistent with the deployed stewards
  • Loading branch information
brotherlymite authored Mar 28, 2024
1 parent 5c4add2 commit f14e412
Show file tree
Hide file tree
Showing 10 changed files with 555 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Raw diff

```json
{}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IProposalGenericExecutor} from 'aave-helpers/interfaces/IProposalGenericExecutor.sol';
import {IGhoStewardV2} from './interfaces/IGhoStewardV2.sol';
import {IGhoToken} from './interfaces/IGho.sol';
import {IGsm} from './interfaces/IGsm.sol';
import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol';
import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol';

/**
* @title Activate Gho Stewards
* @author Aave Chan Initiative
* - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x29f63b24638ee822f88632572ca4b061774771c0cc6d0ae5ccdeb538177232cd
* - Discussion: https://governance.aave.com/t/arfc-gho-stewards-borrow-rate-update/16956
*/
contract AaveV3Ethereum_ActivateGhoStewards_20240326 is IProposalGenericExecutor {
address public constant GHO_STEWARD = 0x8F2411a538381aae2b464499005F0211e867d84f;

function execute() external {
// Give pool admin role to the steward
AaveV3Ethereum.ACL_MANAGER.addPoolAdmin(GHO_STEWARD);

// Give bucket manager role to the steward
IGhoToken(MiscEthereum.GHO_TOKEN).grantRole(
IGhoToken(MiscEthereum.GHO_TOKEN).BUCKET_MANAGER_ROLE(),
GHO_STEWARD
);

// Give configurator role on usdc, usdt gsm to the stewards
IGsm(MiscEthereum.GSM_USDC).grantRole(
IGsm(MiscEthereum.GSM_USDC).CONFIGURATOR_ROLE(),
GHO_STEWARD
);
IGsm(MiscEthereum.GSM_USDT).grantRole(
IGsm(MiscEthereum.GSM_USDT).CONFIGURATOR_ROLE(),
GHO_STEWARD
);

// Whitelist all the facilitators on the stewards, including: GhoAToken, GhoFlashMinter, GSM USDC, GSM USDT
IGhoStewardV2(GHO_STEWARD).setControlledFacilitator(
IGhoToken(MiscEthereum.GHO_TOKEN).getFacilitatorsList(),
true
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IGhoStewardV2} from './interfaces/IGhoStewardV2.sol';
import {IGhoToken} from './interfaces/IGho.sol';
import {IGsmFeeStrategy} from './interfaces/IGsmFeeStrategy.sol';
import {IGsm} from './interfaces/IGsm.sol';
import {IDefaultInterestRateStrategy} from 'aave-v3-core/contracts/interfaces/IDefaultInterestRateStrategy.sol';
import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol';
import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol';
import {ProtocolV3TestBase} from 'aave-helpers/ProtocolV3TestBase.sol';
import {AaveV3Ethereum_ActivateGhoStewards_20240326} from './AaveV3Ethereum_ActivateGhoStewards_20240326.sol';

/**
* @dev Test for AaveV3Ethereum_ActivateGhoStewards_20240326
* command: make test-contract filter=AaveV3Ethereum_ActivateGhoStewards_20240326
*/
contract AaveV3Ethereum_ActivateGhoStewards_20240326_Test is ProtocolV3TestBase {
AaveV3Ethereum_ActivateGhoStewards_20240326 internal proposal;
address public RISK_COUNCIL;

function setUp() public {
vm.createSelectFork(vm.rpcUrl('mainnet'), 19519644);
proposal = new AaveV3Ethereum_ActivateGhoStewards_20240326();
RISK_COUNCIL = IGhoStewardV2(proposal.GHO_STEWARD()).RISK_COUNCIL();
}

/**
* @dev executes the generic test suite including e2e and config snapshots
*/
function test_defaultProposalExecution() public {
defaultTest(
'AaveV3Ethereum_ActivateGhoStewards_20240326',
AaveV3Ethereum.POOL,
address(proposal)
);
}

function test_adminPermissions() public {
executePayload(vm, address(proposal));

assertTrue(AaveV3Ethereum.ACL_MANAGER.isPoolAdmin(proposal.GHO_STEWARD()));
assertTrue(
IGhoToken(MiscEthereum.GHO_TOKEN).hasRole(
IGhoToken(MiscEthereum.GHO_TOKEN).BUCKET_MANAGER_ROLE(),
proposal.GHO_STEWARD()
)
);
assertTrue(
IGsm(MiscEthereum.GSM_USDT).hasRole(
IGsm(MiscEthereum.GSM_USDT).CONFIGURATOR_ROLE(),
proposal.GHO_STEWARD()
)
);
assertTrue(
IGsm(MiscEthereum.GSM_USDC).hasRole(
IGsm(MiscEthereum.GSM_USDC).CONFIGURATOR_ROLE(),
proposal.GHO_STEWARD()
)
);

address[] memory controlledFacilitatorsList = IGhoStewardV2(proposal.GHO_STEWARD())
.getControlledFacilitators();
address[] memory ghoFacilitatorList = IGhoToken(MiscEthereum.GHO_TOKEN).getFacilitatorsList();
assertEq(controlledFacilitatorsList.length, ghoFacilitatorList.length);

for (uint256 i = 0; i < controlledFacilitatorsList.length; i++) {
assertEq(controlledFacilitatorsList[i], ghoFacilitatorList[i]);
}
}

function testUpdateGhoBorrowRate() public {
executePayload(vm, address(proposal));

uint256 oldBorrowRate = _getGhoBorrowRate();
uint256 newBorrowRate = oldBorrowRate + 1;

vm.startPrank(RISK_COUNCIL);
IGhoStewardV2(proposal.GHO_STEWARD()).updateGhoBorrowRate(newBorrowRate);
vm.stopPrank();

uint256 currentBorrowRate = _getGhoBorrowRate();
assertEq(currentBorrowRate, newBorrowRate);
}

function testUpdateGhoBorrowCap() public {
executePayload(vm, address(proposal));

(uint256 oldBorrowCap, ) = AaveV3Ethereum.AAVE_PROTOCOL_DATA_PROVIDER.getReserveCaps(
MiscEthereum.GHO_TOKEN
);
uint256 newBorrowCap = oldBorrowCap + 1;

vm.startPrank(RISK_COUNCIL);
IGhoStewardV2(proposal.GHO_STEWARD()).updateGhoBorrowCap(newBorrowCap);
vm.stopPrank();

(uint256 updatedBorrowCap, ) = AaveV3Ethereum.AAVE_PROTOCOL_DATA_PROVIDER.getReserveCaps(
MiscEthereum.GHO_TOKEN
);
assertEq(newBorrowCap, updatedBorrowCap);
}

function testUpdateFacilitatorBucketCapacity() public {
executePayload(vm, address(proposal));
address[] memory ghoFacilitatorList = IGhoToken(MiscEthereum.GHO_TOKEN).getFacilitatorsList();

for (uint256 i = 0; i < ghoFacilitatorList.length; i++) {
address ghoFacilitator = ghoFacilitatorList[i];
(uint256 currentBucketCapacity, ) = IGhoToken(MiscEthereum.GHO_TOKEN).getFacilitatorBucket(
ghoFacilitator
);
uint128 newBucketCapacity = uint128(currentBucketCapacity) + 1;

vm.startPrank(RISK_COUNCIL);
IGhoStewardV2(proposal.GHO_STEWARD()).updateFacilitatorBucketCapacity(
ghoFacilitator,
newBucketCapacity
);
vm.stopPrank();

(uint256 updatedCapacity, ) = IGhoToken(MiscEthereum.GHO_TOKEN).getFacilitatorBucket(
ghoFacilitator
);
assertEq(newBucketCapacity, updatedCapacity);
}
}

function testUpdateGsmExposureCap() public {
executePayload(vm, address(proposal));

address[2] memory gsmList;
gsmList[0] = MiscEthereum.GSM_USDC;
gsmList[1] = MiscEthereum.GSM_USDT;

for (uint256 i = 0; i < gsmList.length; i++) {
address gsm = gsmList[i];

uint128 oldExposureCap = IGsm(gsm).getExposureCap();
uint128 newExposureCap = oldExposureCap + 1;

vm.startPrank(RISK_COUNCIL);
IGhoStewardV2(proposal.GHO_STEWARD()).updateGsmExposureCap(gsm, newExposureCap);
vm.stopPrank();

uint128 currentExposureCap = IGsm(gsm).getExposureCap();
assertEq(currentExposureCap, newExposureCap);
}
}

function testUpdateGsmBuySellFeesBuyFee() public {
executePayload(vm, address(proposal));

address[2] memory gsmList;
gsmList[0] = MiscEthereum.GSM_USDC;
gsmList[1] = MiscEthereum.GSM_USDT;

for (uint256 i = 0; i < gsmList.length; i++) {
address gsm = gsmList[i];

address feeStrategy = IGsm(gsm).getFeeStrategy();
uint256 buyFee = IGsmFeeStrategy(feeStrategy).getBuyFee(1e4);
uint256 sellFee = IGsmFeeStrategy(feeStrategy).getSellFee(1e4);

vm.startPrank(RISK_COUNCIL);
IGhoStewardV2(proposal.GHO_STEWARD()).updateGsmBuySellFees(gsm, buyFee + 1, sellFee + 1);
vm.stopPrank();

address newStrategy = IGsm(gsm).getFeeStrategy();
uint256 newBuyFee = IGsmFeeStrategy(newStrategy).getBuyFee(1e4);
uint256 newSellFee = IGsmFeeStrategy(newStrategy).getSellFee(1e4);

assertEq(newBuyFee, buyFee + 1);
assertEq(newSellFee, sellFee + 1);
}
}

function _getGhoBorrowRate() internal view returns (uint256) {
address currentInterestRateStrategy = AaveV3Ethereum
.AAVE_PROTOCOL_DATA_PROVIDER
.getInterestRateStrategyAddress(address(MiscEthereum.GHO_TOKEN));
return IDefaultInterestRateStrategy(currentInterestRateStrategy).getBaseVariableBorrowRate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: "Activate Gho Stewards"
author: "Aave Chan Initiative"
discussions: "https://governance.aave.com/t/arfc-gho-stewards-borrow-rate-update/16956"
snapshot: "https://snapshot.org/#/aave.eth/proposal/0x29f63b24638ee822f88632572ca4b061774771c0cc6d0ae5ccdeb538177232cd"
---

## Simple Summary

This proposal activates GHO steward V2 for the Aave DAO, allowing better management of the GHO stablecoin by Risk, Growth & Finance Aave DAO service providers

## Motivation

This publication proposes to creating the GHO Stewards and granting the GHO Stewards permission to adjust the following parameters:

- GHO Borrow Cap
- GHO Borrow Rate
- GSM Exposure Cap
- GSM Bucket Capacity
- GSM Fee Strategy

GHO Stewards consists of members from Growth (ACI), Risk (ChaosLabs) and Finance (TokenLogic + Karpatkey) Service Providers and utilize a 3 of 4 multi-sig.

## Specification

The proposal gives the following admin roles:

- Grant GHO Steward the Pool Admin role via the [ACL_MANAGER](https://etherscan.io/address/0xc2aaCf6553D20d1e9d78E365AAba8032af9c85b0) contract.
- Grant GHO Steward the Bucket Manager role on the [GHO token](https://etherscan.io/address/0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f).
- Grant GHO Steward the Configurator role on [GSM_USDC](https://etherscan.io/address/0x0d8eFfC11dF3F229AA1EA0509BC9DFa632A13578) and [GSM_USDT](https://etherscan.io/address/0x686F8D21520f4ecEc7ba577be08354F4d1EB8262).
- Whitelists all the facilitators on the GHO Stewards, including: [GHO_AToken](https://etherscan.io/address/0x00907f9921424583e7ffBfEdf84F92B7B2Be4977), [GHO_FlashMinter](https://etherscan.io/address/0xb639D208Bcf0589D54FaC24E655C79EC529762B8), [GSM_USDC](https://etherscan.io/address/0x0d8eFfC11dF3F229AA1EA0509BC9DFa632A13578), [GSM_USDT](https://etherscan.io/address/0x686F8D21520f4ecEc7ba577be08354F4d1EB8262) - so that the steward has the permissions to update the bucket capacity.

The GHO Stewards parameters are set as follow:

- GHO Aave Bucket Capacity: 100% increase
- GHO Borrow Rate: 5% change
- GSM Exposure Cap: 100% increase
- GSM Bucket Capacity: 100% increase
- GHO Borrow Cap: 100% increase
- GSM Fee Strategy: +0.5%

## References

- GHO Steward SAFE address: [0x8513e6F37dBc52De87b166980Fa3F50639694B60](https://etherscan.io/address/0x8513e6F37dBc52De87b166980Fa3F50639694B60)
- GHO Steward V2 address: [0x8F2411a538381aae2b464499005F0211e867d84f](https://etherscan.io/address/0x8F2411a538381aae2b464499005F0211e867d84f)
- GHO Steward Repo: [GhoStewardV2.sol](https://github.com/aave/gho-core/blob/f02f87482de7ccbd30ba76b40939fb016dbb2fea/src/contracts/misc/GhoStewardV2.sol)
- Implementation: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240326_AaveV3Ethereum_ActivateGhoStewards/AaveV3Ethereum_ActivateGhoStewards_20240326.sol)
- Tests: [AaveV3Ethereum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240326_AaveV3Ethereum_ActivateGhoStewards/AaveV3Ethereum_ActivateGhoStewards_20240326.t.sol)
- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x29f63b24638ee822f88632572ca4b061774771c0cc6d0ae5ccdeb538177232cd)
- [Discussion](https://governance.aave.com/t/arfc-gho-stewards-borrow-rate-update/16956)

## Copyright

Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
Original file line number Diff line number Diff line change
@@ -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_ActivateGhoStewards_20240326} from './AaveV3Ethereum_ActivateGhoStewards_20240326.sol';

/**
* @dev Deploy Ethereum
* deploy-command: make deploy-ledger contract=src/20240326_AaveV3Ethereum_ActivateGhoStewards/ActivateGhoStewards_20240326.s.sol:DeployEthereum chain=mainnet
* verify-command: npx catapulta-verify -b broadcast/ActivateGhoStewards_20240326.s.sol/1/run-latest.json
*/
contract DeployEthereum is EthereumScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Ethereum_ActivateGhoStewards_20240326).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/20240326_AaveV3Ethereum_ActivateGhoStewards/ActivateGhoStewards_20240326.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_ActivateGhoStewards_20240326).creationCode
);
payloads[0] = GovV3Helpers.buildMainnetPayload(vm, actionsEthereum);

// create proposal
vm.startBroadcast();
GovV3Helpers.createProposal(
vm,
payloads,
GovV3Helpers.ipfsHashFile(
vm,
'src/20240326_AaveV3Ethereum_ActivateGhoStewards/ActivateGhoStewards.md'
)
);
}
}
14 changes: 14 additions & 0 deletions src/20240326_AaveV3Ethereum_ActivateGhoStewards/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {ConfigFile} from '../../generator/types';
export const config: ConfigFile = {
rootOptions: {
pools: ['AaveV3Ethereum'],
title: 'Activate Gho Stewards',
shortName: 'ActivateGhoStewards',
date: '20240326',
author: 'Aave Chan Initiative',
discussion: 'https://governance.aave.com/t/arfc-gho-stewards-borrow-rate-update/16956',
snapshot:
'https://snapshot.org/#/aave.eth/proposal/0x29f63b24638ee822f88632572ca4b061774771c0cc6d0ae5ccdeb538177232cd',
},
poolOptions: {AaveV3Ethereum: {configs: {OTHERS: {}}, cache: {blockNumber: 19519644}}},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IAccessControl} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IAccessControl.sol';

interface IGhoToken is IAccessControl {
function BUCKET_MANAGER_ROLE() external pure returns (bytes32);

function getFacilitatorsList() external view returns (address[] memory);

function getFacilitatorBucket(address facilitator) external view returns (uint256, uint256);
}
Loading

1 comment on commit f14e412

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Foundry report

forge 0.2.0 (9881e7d 2024-03-28T00:18:02.827635071Z)
Build log
Compiling 493 files with 0.8.19
Solc 0.8.19 finished in 341.75s
Compiler run successful with warnings:
Warning (3628): This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
  --> src/20240218_AaveV1Ethereum_AaveV1DeprecationPhase2/AaveV1Ethereum_AaveV1Deprecation_20240218.t.sol:86:1:
   |
86 | contract AaveV1Ethereum_AaveV1Deprecation_20240218_Test is ProtocolV2TestBase {
   | ^ (Relevant source part starts here and spans across multiple lines).
Note: The payable fallback function is defined here.
   --> src/20240218_AaveV1Ethereum_AaveV1DeprecationPhase2/AaveV1Ethereum_AaveV1Deprecation_20240218.t.sol:232:3:
    |
232 |   fallback() external payable {}
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (9302): Return value of low-level calls not used.
  --> src/20231229_Multi_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1/AaveV2Ethereum_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229.sol:47:5:
   |
47 |     SAFE.call{value: address(this).balance}('');
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:32:3:
   |
32 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:43:3:
   |
43 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:54:3:
   |
54 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:65:3:
   |
65 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:76:3:
   |
76 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:87:3:
   |
87 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240104_Multi_Patch/Patch_20240104.s.sol:98:3:
   |
98 |   function _getPayload() internal override returns (bytes memory) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/20240218_AaveV1Ethereum_AaveV1DeprecationPhase2/AaveV1Ethereum_AaveV1Deprecation_20240218.t.sol:207:3:
    |
207 |   function _getUsers() internal returns (V1User[] memory) {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240308_AaveV3Ethereum_GHOBorrowRateIncrease/GhoInterestRateStrategy.sol:67:3:
   |
67 |   function getBaseVariableBorrowRate() external view override returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240308_AaveV3Ethereum_GHOBorrowRateIncrease/GhoInterestRateStrategy.sol:72:3:
   |
72 |   function getMaxVariableBorrowRate() external view override returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240308_AaveV3Ethereum_GHOBorrowRateIncrease/GhoInterestRateStrategy.sol:77:3:
   |
77 |   function calculateInterestRates(
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240313_Multi_UpdateADIImplementationAndCCIPAdapters/BaseTest.sol:91:3:
   |
91 |   function getTrustedRemoteByChainId(uint256 chainId) public view returns (address) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> src/20240313_Multi_UpdateADIImplementationAndCCIPAdapters/BaseTest.sol:316:3:
    |
316 |   function _getCurrentForwarderAdaptersByChain() internal returns (ForwarderAdapters[] memory) {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
   --> src/20240313_Multi_UpdateADIImplementationAndCCIPAdapters/BaseTest.sol:341:3:
    |
341 |   function _getCurrentReceiverAdaptersByChain() internal returns (AdaptersByChain[] memory) {
    |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240324_AaveV3Ethereum_GHOStewardsBorrowRateUpdate/GhoInterestRateStrategy.sol:67:3:
   |
67 |   function getBaseVariableBorrowRate() external view override returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240324_AaveV3Ethereum_GHOStewardsBorrowRateUpdate/GhoInterestRateStrategy.sol:72:3:
   |
72 |   function getMaxVariableBorrowRate() external view override returns (uint256) {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
  --> src/20240324_AaveV3Ethereum_GHOStewardsBorrowRateUpdate/GhoInterestRateStrategy.sol:77:3:
   |
77 |   function calculateInterestRates(
   |   ^ (Relevant source part starts here and spans across multiple lines).

| Contract                                                                                                 | Size (kB) | Margin (kB) |
|----------------------------------------------------------------------------------------------------------|-----------|-------------|
| AaveGovernanceV2                                                                                         | 0.045     | 24.531      |
| AaveSafetyModule                                                                                         | 0.045     | 24.531      |
| AaveSwapper                                                                                              | 5.572     | 19.004      |
| AaveV1Ethereum_AaveV1Deprecation_20240218                                                                | 0.297     | 24.279      |
| AaveV2Avalanche                                                                                          | 0.045     | 24.531      |
| AaveV2AvalancheAssets                                                                                    | 0.045     | 24.531      |
| AaveV2Avalanche_ChaosLabsRiskParameterUpdatesWBTCEOnV2AndV3Avalanche_20231221                            | 0.336     | 24.24       |
| AaveV2Avalanche_StablecoinIRCurvesUpdates_20231221                                                       | 1.858     | 22.718      |
| AaveV2Ethereum                                                                                           | 0.045     | 24.531      |
| AaveV2EthereumAMM                                                                                        | 0.045     | 24.531      |
| AaveV2EthereumAMMAssets                                                                                  | 0.045     | 24.531      |
| AaveV2EthereumAMM_ARFCDeprecateAaveV2AMMMarketStep2_20240205                                             | 2.894     | 21.682      |
| AaveV2EthereumAssets                                                                                     | 0.045     | 24.531      |
| AaveV2Ethereum_AMPLInterestRateUpdatesOnV2Ethereum_20240121                                              | 1.602     | 22.974      |
| AaveV2Ethereum_ChaosLabsV2EthereumLTReductions_20240201                                                  | 0.926     | 23.65       |
| AaveV2Ethereum_EthereumV2ReserveFactorAdjustment_20240304                                                | 4.904     | 19.672      |
| AaveV2Ethereum_EthereumV2ReserveFactorAdjustment_20240320                                                | 1.778     | 22.798      |
| AaveV2Ethereum_MigrationOfRemainingGovV2Permissions_20240130                                             | 0.977     | 23.599      |
| AaveV2Ethereum_MigrationOfRemainingGovV2Permissions_Part2_20240130                                       | 1.446     | 23.13       |
| AaveV2Ethereum_StablecoinIRCurvesUpdates_20231221                                                        | 2.839     | 21.737      |
| AaveV2Ethereum_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229                         | 3.415     | 21.161      |
| AaveV2Ethereum_V2DeprecationPlan20240102_20240103                                                        | 0.927     | 23.649      |
| AaveV2Polygon                                                                                            | 0.045     | 24.531      |
| AaveV2PolygonAssets                                                                                      | 0.045     | 24.531      |
| AaveV2Polygon_ReserveFactorUpdatesFebruary152024_20240208                                                | 0.831     | 23.745      |
| AaveV2Polygon_ReserveFactorUpdatesFebruary292024_20240229                                                | 0.683     | 23.893      |
| AaveV2Polygon_ReserveFactorUpdatesJan152024_20240108                                                     | 1.134     | 23.442      |
| AaveV2Polygon_ReserveFactorUpdatesJan312024_20240125                                                     | 0.831     | 23.745      |
| AaveV2Polygon_ReserveFactorUpdates_20240102                                                              | 0.995     | 23.581      |
| AaveV2Polygon_ReserveFactorUpdates_20240313                                                              | 0.535     | 24.041      |
| AaveV2Polygon_StablecoinIRCurvesUpdates_20231221                                                         | 1.858     | 22.718      |
| AaveV3Arbitrum                                                                                           | 0.045     | 24.531      |
| AaveV3ArbitrumAssets                                                                                     | 0.045     | 24.531      |
| AaveV3ArbitrumEModes                                                                                     | 0.045     | 24.531      |
| AaveV3Arbitrum_ARBRemoveIsolation_20240315                                                               | 0.193     | 24.383      |
| AaveV3Arbitrum_AaveProtocolEmbassy_20240220                                                              | 0.435     | 24.141      |
| AaveV3Arbitrum_AddFlashborrowers_20240306                                                                | 0.25      | 24.326      |
| AaveV3Arbitrum_AssignEmissionAdminEthereumArbitrumAndOptimism_20240229                                   | 0.323     | 24.253      |
| AaveV3Arbitrum_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                       | 3.362     | 21.214      |
| AaveV3Arbitrum_Patch_20240104                                                                            | 0.479     | 24.097      |
| AaveV3Arbitrum_SetLiquidityObservationLabsAsEmissionManagerForWstETHOnV3Markets_20240206                 | 0.212     | 24.364      |
| AaveV3Arbitrum_StablecoinHarmonization_20240312                                                          | 4.469     | 20.107      |
| AaveV3Arbitrum_StablecoinIRCurvesUpdates_20231221                                                        | 4.878     | 19.698      |
| AaveV3Arbitrum_UpdateADIImplementationAndCCIPAdapters_20240313                                           | 0.588     | 23.988      |
| AaveV3Arbitrum_UpdateStETHAndWETHRiskParamsOnAaveV3EthereumOptimismAndArbitrum_20240121                  | 3.892     | 20.684      |
| AaveV3Arbitrum_UpdateWETHIROnV3ArbitrumAndOptimism_20240216                                              | 3.622     | 20.954      |
| AaveV3Avalanche                                                                                          | 0.045     | 24.531      |
| AaveV3AvalancheAssets                                                                                    | 0.045     | 24.531      |
| AaveV3AvalancheEModes                                                                                    | 0.045     | 24.531      |
| AaveV3Avalanche_ChaosLabsRiskParameterUpdatesWBTCEOnV2AndV3Avalanche_20231221                            | 3.513     | 21.063      |
| AaveV3Avalanche_ContangoFlashborrower_20240319                                                           | 0.25      | 24.326      |
| AaveV3Avalanche_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                      | 3.377     | 21.199      |
| AaveV3Avalanche_Patch_20240104                                                                           | 0.479     | 24.097      |
| AaveV3Avalanche_StablecoinHarmonization_20240312                                                         | 3.983     | 20.593      |
| AaveV3Avalanche_StablecoinIRCurvesUpdates_20231221                                                       | 4.628     | 19.948      |
| AaveV3Avalanche_UpdateADIImplementationAndCCIPAdapters_20240313                                          | 3.292     | 21.284      |
| AaveV3BNB                                                                                                | 0.045     | 24.531      |
| AaveV3BNBAssets                                                                                          | 0.045     | 24.531      |
| AaveV3BNBEModes                                                                                          | 0.045     | 24.531      |
| AaveV3BNB_ContangoFlashborrower_20240319                                                                 | 0.25      | 24.326      |
| AaveV3BNB_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                            | 3.38      | 21.196      |
| AaveV3BNB_OnboardFdUSDToAaveV3OnBSC_20240201                                                             | 5.014     | 19.562      |
| AaveV3BNB_SetAaveChanInitiativeAsEmissionManagerForFdUSDOnBNBChainAaveV3_20240208                        | 0.212     | 24.364      |
| AaveV3BNB_UpdateADIImplementationAndCCIPAdapters_20240313                                                | 3.084     | 21.492      |
| AaveV3Base                                                                                               | 0.045     | 24.531      |
| AaveV3BaseAssets                                                                                         | 0.045     | 24.531      |
| AaveV3BaseEModes                                                                                         | 0.045     | 24.531      |
| AaveV3Base_ContangoFlashborrower_20240319                                                                | 0.25      | 24.326      |
| AaveV3Base_Patch_20240104                                                                                | 0.479     | 24.097      |
| AaveV3Base_SetLiquidityObservationLabsAsEmissionManagerForWstETHOnV3Markets_20240206                     | 0.212     | 24.364      |
| AaveV3Base_StablecoinIRCurvesUpdates_20231221                                                            | 3.618     | 20.958      |
| AaveV3Base_UpdateADIImplementationAndCCIPAdapters_20240313                                               | 0.588     | 23.988      |
| AaveV3Ethereum                                                                                           | 0.045     | 24.531      |
| AaveV3EthereumAssets                                                                                     | 0.045     | 24.531      |
| AaveV3EthereumEModes                                                                                     | 0.045     | 24.531      |
| AaveV3Ethereum_AaveBGDPhase3_20240325                                                                    | 2.253     | 22.323      |
| AaveV3Ethereum_AaveLiquidityCommiteeFunding_20240306                                                     | 1.964     | 22.612      |
| AaveV3Ethereum_ActivateGhoStewards_20240326                                                              | 1.633     | 22.943      |
| AaveV3Ethereum_ActivationOfACPrimeFoundation_20240308                                                    | 0.502     | 24.074      |
| AaveV3Ethereum_AddFlashborrowers_20240306                                                                | 1.223     | 23.353      |
| AaveV3Ethereum_AddPYUSDToAaveV3EthereumMarket_20240125                                                   | 4.993     | 19.583      |
| AaveV3Ethereum_AmendSafetyModuleEmissions_20240229                                                       | 2.399     | 22.177      |
| AaveV3Ethereum_AssignEmissionAdminEthereumArbitrumAndOptimism_20240229                                   | 0.967     | 23.609      |
| AaveV3Ethereum_ChaosLabsRiskParameterUpdatesIncreaseDebtCeilingForSNXAndMKROnV3Ethereum01312024_20240211 | 3.533     | 21.043      |
| AaveV3Ethereum_CutGauntletServiceProviderStream_20240227                                                 | 0.479     | 24.097      |
| AaveV3Ethereum_FundingUpdatePartB_20240324                                                               | 4.321     | 20.255      |
| AaveV3Ethereum_FundingUpdate_20240224                                                                    | 10.54     | 14.036      |
| AaveV3Ethereum_GHOBorrowRateIncrease20240229_20240229                                                    | 0.285     | 24.291      |
| AaveV3Ethereum_GHOBorrowRateIncrease_20240308                                                            | 0.233     | 24.343      |
| AaveV3Ethereum_GHOStewardsBorrowRateUpdate_20240324                                                      | 0.233     | 24.343      |
| AaveV3Ethereum_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                       | 3.376     | 21.2        |
| AaveV3Ethereum_MeritApprovals_20240306                                                                   | 0.534     | 24.042      |
| AaveV3Ethereum_OrbitProgram_20240220                                                                     | 2.308     | 22.268      |
| AaveV3Ethereum_Patch_20240104                                                                            | 0.479     | 24.097      |
| AaveV3Ethereum_RegisterADIScrollAdapter_20240122                                                         | 0.63      | 23.946      |
| AaveV3Ethereum_RequestForBountyPayoutJanuary2024_20240125                                                | 0.781     | 23.795      |
| AaveV3Ethereum_RetroactiveBugBountyPreImmunefi_20240205                                                  | 0.782     | 23.794      |
| AaveV3Ethereum_SecurityBudgetRequestDecember2023_20240206                                                | 0.514     | 24.062      |
| AaveV3Ethereum_SetLiquidityObservationLabsAsEmissionManagerForWstETHOnV3Markets_20240206                 | 0.212     | 24.364      |
| AaveV3Ethereum_StableRateBugBounty_20240207                                                              | 0.768     | 23.808      |
| AaveV3Ethereum_StablecoinHarmonization_20240312                                                          | 5.299     | 19.277      |
| AaveV3Ethereum_StablecoinIRCurvesUpdates_20231221                                                        | 4.627     | 19.949      |
| AaveV3Ethereum_StkGHOActivation_20240119                                                                 | 1.115     | 23.461      |
| AaveV3Ethereum_TreasuryManagementGSMFundingRWAStrategyPreparationsPart2_20240209                         | 3.098     | 21.478      |
| AaveV3Ethereum_UpdateADIImplementationAndCCIPAdapters_20240313                                           | 3.553     | 21.023      |
| AaveV3Ethereum_UpdateStETHAndWETHRiskParamsOnAaveV3EthereumOptimismAndArbitrum_20240121                  | 3.905     | 20.671      |
| AaveV3Fantom                                                                                             | 0.045     | 24.531      |
| AaveV3FantomAssets                                                                                       | 0.045     | 24.531      |
| AaveV3FantomEModes                                                                                       | 0.045     | 24.531      |
| AaveV3GenericPatch_20240104                                                                              | 0.479     | 24.097      |
| AaveV3Gnosis                                                                                             | 0.045     | 24.531      |
| AaveV3GnosisAssets                                                                                       | 0.045     | 24.531      |
| AaveV3GnosisEModes                                                                                       | 0.045     | 24.531      |
| AaveV3Gnosis_ContangoFlashborrower_20240319                                                              | 0.25      | 24.326      |
| AaveV3Gnosis_Patch_20240104                                                                              | 0.479     | 24.097      |
| AaveV3Gnosis_StablecoinHarmonization_20240312                                                            | 3.571     | 21.005      |
| AaveV3Gnosis_StablecoinIRCurvesUpdates_20231221                                                          | 3.87      | 20.706      |
| AaveV3Gnosis_UpdateADIImplementationAndCCIPAdapters_20240313                                             | 0.588     | 23.988      |
| AaveV3Harmony                                                                                            | 0.045     | 24.531      |
| AaveV3HarmonyAssets                                                                                      | 0.045     | 24.531      |
| AaveV3HarmonyEModes                                                                                      | 0.045     | 24.531      |
| AaveV3Metis                                                                                              | 0.045     | 24.531      |
| AaveV3MetisAssets                                                                                        | 0.045     | 24.531      |
| AaveV3MetisEModes                                                                                        | 0.045     | 24.531      |
| AaveV3Metis_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                          | 3.37      | 21.206      |
| AaveV3Metis_StablecoinHarmonization_20240312                                                             | 3.397     | 21.179      |
| AaveV3Metis_StablecoinIRCurvesUpdates_20231221                                                           | 3.869     | 20.707      |
| AaveV3Metis_UpdateADIImplementationAndCCIPAdapters_20240313                                              | 0.588     | 23.988      |
| AaveV3Optimism                                                                                           | 0.045     | 24.531      |
| AaveV3OptimismAssets                                                                                     | 0.045     | 24.531      |
| AaveV3OptimismEModes                                                                                     | 0.045     | 24.531      |
| AaveV3Optimism_AddFlashborrowers_20240306                                                                | 0.25      | 24.326      |
| AaveV3Optimism_AssignEmissionAdminEthereumArbitrumAndOptimism_20240229                                   | 0.31      | 24.266      |
| AaveV3Optimism_GauntletRecommendationForMAIMIMATICDeprecationPhase2_20240122                             | 3.375     | 21.201      |
| AaveV3Optimism_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                       | 3.362     | 21.214      |
| AaveV3Optimism_Patch_20240104                                                                            | 0.479     | 24.097      |
| AaveV3Optimism_SetLiquidityObservationLabsAsEmissionManagerForWstETHOnV3Markets_20240206                 | 0.212     | 24.364      |
| AaveV3Optimism_StablecoinHarmonization_20240312                                                          | 3.749     | 20.827      |
| AaveV3Optimism_StablecoinIRCurvesUpdates_20231221                                                        | 4.878     | 19.698      |
| AaveV3Optimism_UpdateADIImplementationAndCCIPAdapters_20240313                                           | 0.588     | 23.988      |
| AaveV3Optimism_UpdateStETHAndWETHRiskParamsOnAaveV3EthereumOptimismAndArbitrum_20240121                  | 3.892     | 20.684      |
| AaveV3Optimism_UpdateWETHIROnV3ArbitrumAndOptimism_20240216                                              | 3.609     | 20.967      |
| AaveV3Polygon                                                                                            | 0.045     | 24.531      |
| AaveV3PolygonAssets                                                                                      | 0.045     | 24.531      |
| AaveV3PolygonEModes                                                                                      | 0.045     | 24.531      |
| AaveV3Polygon_ContangoFlashborrower_20240319                                                             | 0.25      | 24.326      |
| AaveV3Polygon_FreezeAndSetLTVTo0ForDPIBALCRVAndSUSHIOnAaveV3Polygon20240119_20240130                     | 4.355     | 20.221      |
| AaveV3Polygon_FundingUpdate_20240224                                                                     | 2.902     | 21.674      |
| AaveV3Polygon_HarmonizeUSDTRiskParametersOnAaveV3Markets_20240115                                        | 3.361     | 21.215      |
| AaveV3Polygon_MaticXSupplyCapIncreaseInPolygonV3_20240206                                                | 3.294     | 21.282      |
| AaveV3Polygon_Patch_20240104                                                                             | 0.479     | 24.097      |
| AaveV3Polygon_SetLiquidityObservationLabsAsEmissionManagerForWstETHOnV3Markets_20240206                  | 0.212     | 24.364      |
| AaveV3Polygon_StablecoinHarmonization_20240312                                                           | 3.975     | 20.601      |
| AaveV3Polygon_StablecoinIRCurvesUpdates_20231221                                                         | 4.375     | 20.201      |
| AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229                          | 3.418     | 21.158      |
| AaveV3Polygon_UpdateADIImplementationAndCCIPAdapters_20240313                                            | 3.292     | 21.284      |
| AaveV3Scroll                                                                                             | 0.045     | 24.531      |
| AaveV3ScrollAssets                                                                                       | 0.045     | 24.531      |
| AaveV3ScrollEModes                                                                                       | 0.045     | 24.531      |
| AaveV3Scroll_AaveV3ScrollActivation_20240122                                                             | 6.6       | 17.976      |
| AaveV3Scroll_ContangoFlashborrower_20240319                                                              | 0.25      | 24.326      |
| AaveV3Scroll_UpdateADIImplementationAndCCIPAdapters_20240313                                             | 0.588     | 23.988      |
| AaveV3Scroll_V3PeripheryMaintenance_20240314                                                             | 0.25      | 24.326      |
| Address                                                                                                  | 0.045     | 24.531      |
| BaseCCCImplementationUpdatePayload                                                                       | 0.588     | 23.988      |
| ChainHelpers                                                                                             | 0.045     | 24.531      |
| ChainIds                                                                                                 | 0.045     | 24.531      |
| ConfiguratorInputTypes                                                                                   | 0.045     | 24.531      |
| Create2Utils                                                                                             | 0.123     | 24.453      |
| DataTypes                                                                                                | 0.045     | 24.531      |
| ERC1967Proxy                                                                                             | 0.136     | 24.44       |
| EngineFlags                                                                                              | 0.045     | 24.531      |
| EnumerableSet                                                                                            | 0.045     | 24.531      |
| EnvelopeUtils                                                                                            | 0.045     | 24.531      |
| Errors                                                                                                   | 4.673     | 19.903      |
| GhoInterestRateStrategy                                                                                  | 0.671     | 23.905      |
| Gho_GHOStabilityModule_20240119                                                                          | 4.494     | 20.082      |
| GovHelpers                                                                                               | 0.045     | 24.531      |
| GovV3Helpers                                                                                             | 2.581     | 21.995      |
| GovV3StorageHelpers                                                                                      | 0.045     | 24.531      |
| GovernanceV3Arbitrum                                                                                     | 0.045     | 24.531      |
| GovernanceV3Avalanche                                                                                    | 0.045     | 24.531      |
| GovernanceV3BNB                                                                                          | 0.045     | 24.531      |
| GovernanceV3Base                                                                                         | 0.045     | 24.531      |
| GovernanceV3Ethereum                                                                                     | 0.045     | 24.531      |
| GovernanceV3Gnosis                                                                                       | 0.045     | 24.531      |
| GovernanceV3Metis                                                                                        | 0.045     | 24.531      |
| GovernanceV3Optimism                                                                                     | 0.045     | 24.531      |
| GovernanceV3Polygon                                                                                      | 0.045     | 24.531      |
| GovernanceV3PolygonZkEvm                                                                                 | 0.045     | 24.531      |
| GovernanceV3Scroll                                                                                       | 0.045     | 24.531      |
| IpfsUtils                                                                                                | 0.045     | 24.531      |
| MainnetPayload                                                                                           | 2.583     | 21.993      |
| MiscArbitrum                                                                                             | 0.045     | 24.531      |
| MiscAvalanche                                                                                            | 0.045     | 24.531      |
| MiscBNB                                                                                                  | 0.045     | 24.531      |
| MiscBase                                                                                                 | 0.045     | 24.531      |
| MiscEthereum                                                                                             | 0.045     | 24.531      |
| MiscGnosis                                                                                               | 0.045     | 24.531      |
| MiscMetis                                                                                                | 0.045     | 24.531      |
| MiscOptimism                                                                                             | 0.045     | 24.531      |
| MiscPolygon                                                                                              | 0.045     | 24.531      |
| MiscScroll                                                                                               | 0.045     | 24.531      |
| MockExecutor                                                                                             | 0.396     | 24.18       |
| OrbitProgramData                                                                                         | 0.488     | 24.088      |
| ParaswapClaim                                                                                            | 0.022     | 24.554      |
| ParaswapClaimer                                                                                          | 0.159     | 24.417      |
| Payloads                                                                                                 | 0.484     | 24.092      |
| PayloadsControllerUtils                                                                                  | 0.045     | 24.531      |
| PayloadsToDeploy                                                                                         | 0.045     | 24.531      |
| PolygonPayload                                                                                           | 1.593     | 22.983      |
| PoolAddresses                                                                                            | 0.316     | 24.26       |
| ProxyAdmin                                                                                               | 1.642     | 22.934      |
| ProxyHelpers                                                                                             | 0.045     | 24.531      |
| ReserveConfiguration                                                                                     | 0.13      | 24.446      |
| RewardsDataTypes                                                                                         | 0.045     | 24.531      |
| SafeERC20                                                                                                | 0.045     | 24.531      |
| StataPayloads                                                                                            | 0.045     | 24.531      |
| StorageHelpers                                                                                           | 0.045     | 24.531      |
| StorageSlot                                                                                              | 0.045     | 24.531      |
| TransactionUtils                                                                                         | 0.045     | 24.531      |
| TransparentUpgradeableProxy                                                                              | 2.04      | 22.536      |
| WadRayMath                                                                                               | 0.045     | 24.531      |
Test success 🌈
No files changed, compilation skipped

Ran 7 tests for src/20240326_AaveV3Ethereum_ActivateGhoStewards/AaveV3Ethereum_ActivateGhoStewards_20240326.t.sol:AaveV3Ethereum_ActivateGhoStewards_20240326_Test
[PASS] testUpdateFacilitatorBucketCapacity() (gas: 698803)
[PASS] testUpdateGhoBorrowCap() (gas: 620561)
[PASS] testUpdateGhoBorrowRate() (gas: 916919)
[PASS] testUpdateGsmBuySellFeesBuyFee() (gas: 947310)
[PASS] testUpdateGsmExposureCap() (gas: 614469)
[PASS] test_adminPermissions() (gas: 556125)
[PASS] test_defaultProposalExecution() (gas: 222293574)
Logs:
  0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
  0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
  0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
  0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  0x6B175474E89094C44Da98b954EedeAC495271d0F
  0x514910771AF9Ca656af840dff83E8264EcF986CA
  0xBe9895146f7AF43049ca1c1AE358B0541Ea49704
  0xdAC17F958D2ee523a2206206994597C13D831ec7
  0xae78736Cd615f374D3085123A210448E74Fc6393
  0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
  0xD533a949740bb3306d119CC777fa900bA034cd52
  0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2
  0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F
  0xba100000625a3754423978a60c9317c58a424e3D
  0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984
  0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32
  0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72
  0x111111111117dC0aa78b770fA6A738034120C302
  0x853d955aCEf822Db058eb8505911ED77F175b99e
  0xD33526068D116cE69F19A9ee46F0bd304F21A51f
  0xAf5191B0De278C7286d6C7CC6ab6BB8A73bA2Cd6
  0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202
  0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0
  0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
  0x6c3ea9036406852006290770BEdFcAbA0e23A0e8
  E2E: Collateral WETH, TestAsset WETH
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: WETH, Amount: 278486231278693480
  WITHDRAW: WETH, Amount: 139243115639346740
  WITHDRAW: WETH, Amount: 139243115639346740
  BORROW: WETH, Amount 278486231278693480, Stable: false
  REPAY: WETH, Amount: 278486231278693480
  E2E: Collateral WETH, TestAsset wstETH
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: wstETH, Amount: 239745101828573551
  WITHDRAW: wstETH, Amount: 119872550914286775
  WITHDRAW: wstETH, Amount: 119872550914286776
  BORROW: wstETH, Amount 239745101828573551, Stable: false
  REPAY: wstETH, Amount: 239745101828573551
  E2E: Collateral WETH, TestAsset WBTC
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: WBTC, Amount: 1423437
  WITHDRAW: WBTC, Amount: 711718
  WITHDRAW: WBTC, Amount: 711719
  BORROW: WBTC, Amount 1423437, Stable: false
  REPAY: WBTC, Amount: 1423437
  E2E: Collateral WETH, TestAsset USDC
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: USDC, Amount: 999960111
  WITHDRAW: USDC, Amount: 499980055
  WITHDRAW: USDC, Amount: 499980056
  BORROW: USDC, Amount 999960111, Stable: false
  REPAY: USDC, Amount: 999960111
  E2E: Collateral WETH, TestAsset DAI
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: DAI, Amount: 1000115793406560611587
  WITHDRAW: DAI, Amount: 500057896703280305793
  WITHDRAW: DAI, Amount: 500057896703280305793
  BORROW: DAI, Amount 1000115793406560611587, Stable: false
  REPAY: DAI, Amount: 1000115793406560611587
  E2E: Collateral WETH, TestAsset LINK
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: LINK, Amount: 49918458198532696839
  WITHDRAW: LINK, Amount: 24959229099266348419
  WITHDRAW: LINK, Amount: 24959229099266348419
  BORROW: LINK, Amount 49918458198532696839, Stable: false
  REPAY: LINK, Amount: 49918458198532696839
  E2E: Collateral WETH, TestAsset AAVE
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: AAVE, Amount: 7770107755657771735
  WITHDRAW: AAVE, Amount: 3885053877828885867
  WITHDRAW: AAVE, Amount: 3885053877828885868
  E2E: Collateral WETH, TestAsset cbETH
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: cbETH, Amount: 260929841590899164
  WITHDRAW: cbETH, Amount: 130464920795449582
  WITHDRAW: cbETH, Amount: 130464920795449583
  BORROW: cbETH, Amount 260929841590899164, Stable: false
  REPAY: cbETH, Amount: 260929841590899164
  E2E: Collateral WETH, TestAsset USDT
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: USDT, Amount: 999985220
  WITHDRAW: USDT, Amount: 499992610
  WITHDRAW: USDT, Amount: 499992609
  BORROW: USDT, Amount 999985220, Stable: false
  REPAY: USDT, Amount: 999985220
  E2E: Collateral WETH, TestAsset rETH
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: rETH, Amount: 252746248771744368
  WITHDRAW: rETH, Amount: 126373124385872184
  WITHDRAW: rETH, Amount: 126373124385872185
  BORROW: rETH, Amount 252746248771744368, Stable: false
  REPAY: rETH, Amount: 252746248771744368
  E2E: Collateral WETH, TestAsset LUSD
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: LUSD, Amount: 1002689423598871128128
  WITHDRAW: LUSD, Amount: 501344711799435564064
  WITHDRAW: LUSD, Amount: 501344711799435564063
  BORROW: LUSD, Amount 1002689423598871128128, Stable: false
  REPAY: LUSD, Amount: 1002689423598871128128
  E2E: Collateral WETH, TestAsset CRV
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: CRV, Amount: 1421605561320955887579
  WITHDRAW: CRV, Amount: 710802780660477943789
  WITHDRAW: CRV, Amount: 710802780660477943790
  BORROW: CRV, Amount 1421605561320955887579, Stable: false
  REPAY: CRV, Amount: 1421605561320955887579
  E2E: Collateral WETH, TestAsset MKR
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: MKR, Amount: 310713723528571392
  WITHDRAW: MKR, Amount: 155356861764285696
  WITHDRAW: MKR, Amount: 155356861764285696
  BORROW: MKR, Amount 310713723528571392, Stable: false
  REPAY: MKR, Amount: 310713723528571392
  E2E: Collateral WETH, TestAsset SNX
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: SNX, Amount: 201080636699395509580
  WITHDRAW: SNX, Amount: 100540318349697754790
  WITHDRAW: SNX, Amount: 100540318349697754791
  BORROW: SNX, Amount 201080636699395509580, Stable: false
  REPAY: SNX, Amount: 201080636699395509580
  E2E: Collateral WETH, TestAsset BAL
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: BAL, Amount: 190450979482436017417
  WITHDRAW: BAL, Amount: 95225489741218008708
  WITHDRAW: BAL, Amount: 95225489741218008709
  BORROW: BAL, Amount 190450979482436017417, Stable: false
  REPAY: BAL, Amount: 190450979482436017417
  E2E: Collateral WETH, TestAsset UNI
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: UNI, Amount: 79980062633970653902
  WITHDRAW: UNI, Amount: 39990031316985326951
  WITHDRAW: UNI, Amount: 39990031316985326952
  BORROW: UNI, Amount 79980062633970653902, Stable: false
  REPAY: UNI, Amount: 79980062633970653902
  E2E: Collateral WETH, TestAsset LDO
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: LDO, Amount: 315207364318257172084
  WITHDRAW: LDO, Amount: 157603682159128586042
  WITHDRAW: LDO, Amount: 157603682159128586042
  BORROW: LDO, Amount 315207364318257172084, Stable: false
  REPAY: LDO, Amount: 315207364318257172084
  E2E: Collateral WETH, TestAsset ENS
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: ENS, Amount: 44467025610337396006
  WITHDRAW: ENS, Amount: 22233512805168698003
  WITHDRAW: ENS, Amount: 22233512805168698004
  BORROW: ENS, Amount 44467025610337396006, Stable: false
  REPAY: ENS, Amount: 44467025610337396006
  E2E: Collateral WETH, TestAsset 1INCH
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: 1INCH, Amount: 1670085219772526376657
  WITHDRAW: 1INCH, Amount: 835042609886263188328
  WITHDRAW: 1INCH, Amount: 835042609886263188328
  BORROW: 1INCH, Amount 1670085219772526376657, Stable: false
  REPAY: 1INCH, Amount: 1670085219772526376657
  E2E: Collateral WETH, TestAsset FRAX
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: FRAX, Amount: 1002299796930051942783
  WITHDRAW: FRAX, Amount: 501149898465025971391
  WITHDRAW: FRAX, Amount: 501149898465025971391
  BORROW: FRAX, Amount 1002299796930051942783, Stable: false
  REPAY: FRAX, Amount: 1002299796930051942783
  E2E: Collateral WETH, TestAsset GHO
  SUPPLY: WETH, Amount: 27848623127869348073
  BORROW: GHO, Amount 1000000000000000000000, Stable: false
  REPAY: GHO, Amount: 1000000000000000000000
  E2E: Collateral WETH, TestAsset RPL
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: RPL, Amount: 31399342041231223338
  WITHDRAW: RPL, Amount: 15699671020615611669
  WITHDRAW: RPL, Amount: 15699671020615611669
  BORROW: RPL, Amount 31399342041231223338, Stable: false
  REPAY: RPL, Amount: 31399342041231223338
  E2E: Collateral WETH, TestAsset sDAI
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: sDAI, Amount: 938414581783952207896
  WITHDRAW: sDAI, Amount: 469207290891976103948
  WITHDRAW: sDAI, Amount: 469207290891976103948
  E2E: Collateral WETH, TestAsset STG
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: STG, Amount: 1342219830804063232298
  WITHDRAW: STG, Amount: 671109915402031616149
  WITHDRAW: STG, Amount: 671109915402031616150
  BORROW: STG, Amount 1342219830804063232298, Stable: false
  REPAY: STG, Amount: 1342219830804063232298
  E2E: Collateral WETH, TestAsset KNC
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: KNC, Amount: 1089451638353870386435
  WITHDRAW: KNC, Amount: 544725819176935193217
  WITHDRAW: KNC, Amount: 544725819176935193218
  BORROW: KNC, Amount 1089451638353870386435, Stable: false
  REPAY: KNC, Amount: 1089451638353870386435
  E2E: Collateral WETH, TestAsset FXS
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: FXS, Amount: 127136322481180264455
  WITHDRAW: FXS, Amount: 63568161240590132227
  WITHDRAW: FXS, Amount: 63568161240590132228
  BORROW: FXS, Amount 127136322481180264455, Stable: false
  REPAY: FXS, Amount: 127136322481180264455
  E2E: Collateral WETH, TestAsset crvUSD
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: crvUSD, Amount: 1003519956635092817919
  WITHDRAW: crvUSD, Amount: 501759978317546408959
  WITHDRAW: crvUSD, Amount: 501759978317546408959
  BORROW: crvUSD, Amount 1003519956635092817919, Stable: false
  REPAY: crvUSD, Amount: 1003519956635092817919
  E2E: Collateral WETH, TestAsset PYUSD
  SUPPLY: WETH, Amount: 27848623127869348073
  SUPPLY: PYUSD, Amount: 1000805979
  WITHDRAW: PYUSD, Amount: 500402989
  WITHDRAW: PYUSD, Amount: 500402991
  BORROW: PYUSD, Amount 1000805979, Stable: false
  REPAY: PYUSD, Amount: 1000805979

Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.42s (35.29s CPU time)

Ran 1 test suite in 32.42s (32.42s CPU time): 7 tests passed, 0 failed, 0 skipped (7 total tests)

Please sign in to comment.