Skip to content

Commit

Permalink
Add second AIP for GHO Cross-Chain Launch (#356)
Browse files Browse the repository at this point in the history
* Add proposal for Gho Incident Report 20231113 (#1)

* chore: add payload and deploy script for update of GHO variable debt token

* forge install: gho-core

* chore: add gho-core to dependency

* test: Add tests for update of gho variable token

* test: Add tests for update of gho variable token

* fix: add modifier in method of interface

* fix: remove gho dependency from repo and fix test

* fix: Remove unnecesary dependency

* fix: Add latest details

---------

Co-authored-by: miguelmtzinf <[email protected]>

* fix: Make new impl constant (#3)

* fix: Amend AIP text (#4)

* fix: Make new impl constant

* fix: Fix AIP text

* test: Tweak default tests with borrow cap update (#5)

* fix: lint issue (#6)

* test: Add diffs from test running (#7)

* fix: Add payload address (#8)

* fix: Fix payload address in script (#9)

* fix: Remove unneeded diff file (#10)

* feat: Add proposal to onboard GHO

* fix: Fix AIP name

* fix: Update GHO ir

* fix: Fix diff report

* fix: Fix typo in AIP text

Co-authored-by: Harsh Pandey <[email protected]>

* fix: Fix typo in AIP text

Co-authored-by: Harsh Pandey <[email protected]>

* fix: Fix tests

* fix: Fix lint

---------

Co-authored-by: Parth Patel <[email protected]>
Co-authored-by: Harsh Pandey <[email protected]>
  • Loading branch information
3 people authored Jun 26, 2024
1 parent e8167f7 commit c7161d8
Show file tree
Hide file tree
Showing 7 changed files with 430 additions and 0 deletions.
1 change: 1 addition & 0 deletions .assets/014904fabcaa28d579bed688e1e3c35928c86f7c.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
## Reserve changes

### Reserves added

#### GHO ([0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33](https://arbiscan.io/address/0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33))

| description | value |
| --- | --- |
| decimals | 18 |
| isActive | true |
| isFrozen | false |
| supplyCap | 1,000,000 GHO |
| borrowCap | 900,000 GHO |
| debtCeiling | 0 $ |
| isSiloed | false |
| isFlashloanable | true |
| eModeCategory | 0 |
| oracle | [0xB05984aD83C20b3ADE7bf97a9a0Cb539DDE28DBb](https://arbiscan.io/address/0xB05984aD83C20b3ADE7bf97a9a0Cb539DDE28DBb) |
| oracleDecimals | 8 |
| oracleLatestAnswer | 1 |
| usageAsCollateralEnabled | false |
| ltv | 0 % |
| liquidationThreshold | 0 % |
| liquidationBonus | 0 % |
| liquidationProtocolFee | 0 % |
| reserveFactor | 10 % |
| aToken | [0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D](https://arbiscan.io/address/0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D) |
| aTokenImpl | [0x1Be1798b70aEe431c2986f7ff48d9D1fa350786a](https://arbiscan.io/address/0x1Be1798b70aEe431c2986f7ff48d9D1fa350786a) |
| variableDebtToken | [0x18248226C16BF76c032817854E7C83a2113B4f06](https://arbiscan.io/address/0x18248226C16BF76c032817854E7C83a2113B4f06) |
| variableDebtTokenImpl | [0x5E76E98E0963EcDC6A065d1435F84065b7523f39](https://arbiscan.io/address/0x5E76E98E0963EcDC6A065d1435F84065b7523f39) |
| stableDebtToken | [0x687871030477bf974725232F764aa04318A8b9c8](https://arbiscan.io/address/0x687871030477bf974725232F764aa04318A8b9c8) |
| stableDebtTokenImpl | [0x0c2C95b24529664fE55D4437D7A31175CFE6c4f7](https://arbiscan.io/address/0x0c2C95b24529664fE55D4437D7A31175CFE6c4f7) |
| borrowingEnabled | true |
| stableBorrowRateEnabled | false |
| isBorrowableInIsolation | false |
| interestRateStrategy | [0x36d32fD7a72AD600be60Ccb71D3718E455025CaA](https://arbiscan.io/address/0x36d32fD7a72AD600be60Ccb71D3718E455025CaA) |
| liquidityIndex | 1 |
| variableBorrowIndex | 1 |
| aTokenName | Aave Arbitrum GHO |
| aTokenSymbol | aArbGHO |
| currentLiquidityRate | 0 % |
| currentVariableBorrowRate | 0 % |
| isPaused | false |
| stableDebtTokenName | Aave Arbitrum Stable Debt GHO |
| stableDebtTokenSymbol | stableDebtArbGHO |
| variableDebtTokenName | Aave Arbitrum Variable Debt GHO |
| variableDebtTokenSymbol | variableDebtArbGHO |
| optimalUsageRatio | 90 % |
| maxExcessStableToTotalDebtRatio | 100 % |
| maxExcessUsageRatio | 10 % |
| optimalStableToTotalDebtRatio | 0 % |
| baseVariableBorrowRate | 0 % |
| variableRateSlope1 | 12 % |
| variableRateSlope2 | 65 % |
| baseStableBorrowRate | 12 % |
| stableRateSlope1 | 0 % |
| stableRateSlope2 | 0 % |
| interestRate | ![ir](/.assets/014904fabcaa28d579bed688e1e3c35928c86f7c.svg) |


## Raw diff

```json
{
"reserves": {
"0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33": {
"from": null,
"to": {
"aToken": "0xeBe517846d0F36eCEd99C735cbF6131e1fEB775D",
"aTokenImpl": "0x1Be1798b70aEe431c2986f7ff48d9D1fa350786a",
"aTokenName": "Aave Arbitrum GHO",
"aTokenSymbol": "aArbGHO",
"borrowCap": 900000,
"borrowingEnabled": true,
"currentLiquidityRate": 0,
"currentVariableBorrowRate": 0,
"debtCeiling": 0,
"decimals": 18,
"eModeCategory": 0,
"interestRateStrategy": "0x36d32fD7a72AD600be60Ccb71D3718E455025CaA",
"isActive": true,
"isBorrowableInIsolation": false,
"isFlashloanable": true,
"isFrozen": false,
"isPaused": false,
"isSiloed": false,
"liquidationBonus": 0,
"liquidationProtocolFee": 0,
"liquidationThreshold": 0,
"liquidityIndex": "1000000000000000000000000000",
"ltv": 0,
"oracle": "0xB05984aD83C20b3ADE7bf97a9a0Cb539DDE28DBb",
"oracleDecimals": 8,
"oracleLatestAnswer": 100000000,
"reserveFactor": 1000,
"stableBorrowRateEnabled": false,
"stableDebtToken": "0x687871030477bf974725232F764aa04318A8b9c8",
"stableDebtTokenImpl": "0x0c2C95b24529664fE55D4437D7A31175CFE6c4f7",
"stableDebtTokenName": "Aave Arbitrum Stable Debt GHO",
"stableDebtTokenSymbol": "stableDebtArbGHO",
"supplyCap": 1000000,
"symbol": "GHO",
"underlying": "0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33",
"usageAsCollateralEnabled": false,
"variableBorrowIndex": "1000000000000000000000000000",
"variableDebtToken": "0x18248226C16BF76c032817854E7C83a2113B4f06",
"variableDebtTokenImpl": "0x5E76E98E0963EcDC6A065d1435F84065b7523f39",
"variableDebtTokenName": "Aave Arbitrum Variable Debt GHO",
"variableDebtTokenSymbol": "variableDebtArbGHO"
}
}
},
"strategies": {
"0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33": {
"from": null,
"to": {
"address": "0x36d32fD7a72AD600be60Ccb71D3718E455025CaA",
"baseStableBorrowRate": "120000000000000000000000000",
"baseVariableBorrowRate": 0,
"maxExcessStableToTotalDebtRatio": "1000000000000000000000000000",
"maxExcessUsageRatio": "100000000000000000000000000",
"optimalStableToTotalDebtRatio": 0,
"optimalUsageRatio": "900000000000000000000000000",
"stableRateSlope1": 0,
"stableRateSlope2": 0,
"variableRateSlope1": "120000000000000000000000000",
"variableRateSlope2": "650000000000000000000000000"
}
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {AaveV3Arbitrum, AaveV3ArbitrumEModes} 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';
import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol';
import {SafeERC20} from 'solidity-utils/contracts/oz-common/SafeERC20.sol';
/**
* @title GHO Cross-Chain Launch Part 2
* @author Aave Labs
* - Snapshot: https://snapshot.org/#/aave.eth/proposal/0x2a6ffbcff41a5ef98b7542f99b207af9c1e79e61f859d0a62f3bf52d3280877a
* - Discussion: https://governance.aave.com/t/arfc-gho-cross-chain-launch/17616
*/
contract AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613 is AaveV3PayloadArbitrum {
using SafeERC20 for IERC20;

address public constant GHO = 0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33;
uint256 public constant GHO_SEED_AMOUNT = 1e18;

function newListings() public pure override returns (IAaveV3ConfigEngine.Listing[] memory) {
IAaveV3ConfigEngine.Listing[] memory listings = new IAaveV3ConfigEngine.Listing[](1);

listings[0] = IAaveV3ConfigEngine.Listing({
asset: GHO,
assetSymbol: 'GHO',
priceFeed: 0xB05984aD83C20b3ADE7bf97a9a0Cb539DDE28DBb,
eModeCategory: AaveV3ArbitrumEModes.NONE,
enabledToBorrow: EngineFlags.ENABLED,
stableRateModeEnabled: EngineFlags.DISABLED,
borrowableInIsolation: EngineFlags.DISABLED,
withSiloedBorrowing: EngineFlags.DISABLED,
flashloanable: EngineFlags.ENABLED,
ltv: 0,
liqThreshold: 0,
liqBonus: 0,
reserveFactor: 10_00,
supplyCap: 1_000_000,
borrowCap: 900_000,
debtCeiling: 0,
liqProtocolFee: 0,
rateStrategyParams: IV3RateStrategyFactory.RateStrategyParams({
optimalUsageRatio: _bpsToRay(90_00),
baseVariableBorrowRate: _bpsToRay(0),
variableRateSlope1: _bpsToRay(12_00),
variableRateSlope2: _bpsToRay(65_00),
stableRateSlope1: _bpsToRay(0),
stableRateSlope2: _bpsToRay(0),
baseStableRateOffset: _bpsToRay(0),
stableRateExcessOffset: _bpsToRay(0),
optimalStableToTotalDebtRatio: _bpsToRay(0)
})
});

return listings;
}

function _postExecute() internal override {
IERC20(GHO).forceApprove(address(AaveV3Arbitrum.POOL), GHO_SEED_AMOUNT);
AaveV3Arbitrum.POOL.supply(GHO, GHO_SEED_AMOUNT, address(0), 0);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import 'forge-std/Test.sol';
import {GovV3Helpers} from 'aave-helpers/GovV3Helpers.sol';
import {ProtocolV3TestBase} from 'aave-helpers/ProtocolV3TestBase.sol';
import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol';
import {GovernanceV3Arbitrum} from 'aave-address-book/GovernanceV3Arbitrum.sol';
import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol';

import {AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613} from './AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.sol';

/**
* @dev Test for AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613
* command: FOUNDRY_PROFILE=arbitrum forge test --match-path=src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.t.sol -vv
*/
contract AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613_Test is ProtocolV3TestBase {
AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613 internal proposal;

function setUp() public {
vm.createSelectFork(vm.rpcUrl('arbitrum'), 225178100);
proposal = new AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613();
}

/**
* @dev executes the generic test suite including e2e and config snapshots
*/
function test_defaultProposalExecution() public {
// Mock Executor receives GHO, also makes sure total supply >= supply cap so e2e tests pass
deal(proposal.GHO(), GovernanceV3Arbitrum.EXECUTOR_LVL_1, 1_000_000e18, true);

defaultTest(
'AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613',
AaveV3Arbitrum.POOL,
address(proposal)
);

(address aTokenAddress, , ) = AaveV3Arbitrum
.AAVE_PROTOCOL_DATA_PROVIDER
.getReserveTokensAddresses(proposal.GHO());
assertGe(IERC20(aTokenAddress).balanceOf(address(0)), proposal.GHO_SEED_AMOUNT());
}

function test_defaultProposalExecutionExactSeed() public {
// Mock Executor receives GHO seed amount
deal(proposal.GHO(), GovernanceV3Arbitrum.EXECUTOR_LVL_1, proposal.GHO_SEED_AMOUNT());

GovV3Helpers.executePayload(vm, address(proposal));

(address aTokenAddress, , ) = AaveV3Arbitrum
.AAVE_PROTOCOL_DATA_PROVIDER
.getReserveTokensAddresses(proposal.GHO());
assertGe(IERC20(aTokenAddress).balanceOf(address(0)), proposal.GHO_SEED_AMOUNT());
}

function testFail_defaultProposalExecutionNoSeed() public {
GovV3Helpers.executePayload(vm, address(proposal));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: "GHO Cross-Chain - Part 2"
author: "Aave Labs"
discussions: "https://governance.aave.com/t/arfc-gho-cross-chain-launch/17616"
snapshot: "https://snapshot.org/#/aave.eth/proposal/0x2a6ffbcff41a5ef98b7542f99b207af9c1e79e61f859d0a62f3bf52d3280877a"
---

## Simple Summary

This AIP is the Part 2 for the GHO Cross-Chain proposal and proposes the configuration of GHO on Arbitrum Aave V3 Pool in connection with the cross-chain implementation strategy.

Following the successful expansion of GHO to the Arbitrum network, this AIP proposes to onboard GHO into the Arbitrum Aave Pool as a borrowable asset, adopting risk parameters formulated by Chaos Labs.

## Motivation

The implementation of the GHO Cross Chain proposal required the proposal AIP to be split into two separate AIPs. This proposal is the second AIP (“Part 2”) for configuration of GHO on Arbitrum Aave Pool adopting risk parameters formulated by Chaos Labs.

## Specification

The table below illustrates the configured risk parameters for **GHO**

| Parameter | Value |
| ---------------------------------- | -----------------------------------------: |
| Isolation Mode | false |
| Borrowable | ENABLED |
| Collateral Enabled | false |
| Supply Cap (GHO) | 1,000,000 |
| Borrow Cap (GHO) | 900,000 |
| Debt Ceiling | USD 0 |
| LTV | 0 % |
| LT | 0 % |
| Liquidation Bonus | 0 % |
| Liquidation Protocol Fee | 0 % |
| Reserve Factor | 10 % |
| Base Variable Borrow Rate | 0 % |
| Variable Slope 1 | 12 % |
| Variable Slope 2 | 65 % |
| Uoptimal | 90 % |
| Stable Borrowing | DISABLED |
| Stable Slope1 | 0 % |
| Stable Slope2 | 0 % |
| Base Stable Rate Offset | 0 % |
| Stable Rate Excess Offset | 0 % |
| Optimal Stable To Total Debt Ratio | 0 % |
| Flashloanable | ENABLED |
| Siloed Borrowing | DISABLED |
| Borrowable in Isolation | DISABLED |
| Oracle | 0xB05984aD83C20b3ADE7bf97a9a0Cb539DDE28DBb |

## References

- Implementation: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.sol)
- Tests: [AaveV3Arbitrum](https://github.com/bgd-labs/aave-proposals-v3/blob/main/src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.t.sol)
- [Snapshot](https://snapshot.org/#/aave.eth/proposal/0x2a6ffbcff41a5ef98b7542f99b207af9c1e79e61f859d0a62f3bf52d3280877a)
- [Discussion](https://governance.aave.com/t/arfc-gho-cross-chain-launch/17616)

## 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,61 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {GovV3Helpers, IPayloadsControllerCore, PayloadsControllerUtils} from 'aave-helpers/GovV3Helpers.sol';
import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol';
import {GovernanceV3Ethereum} from 'aave-address-book/GovernanceV3Ethereum.sol';
import {EthereumScript, ArbitrumScript} from 'aave-helpers/ScriptUtils.sol';
import {AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613} from './AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.sol';

/**
* @dev Deploy Arbitrum
* deploy-command: make deploy-ledger contract=src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/GHOCrossChainLaunchPart2_20240613.s.sol:DeployArbitrum chain=arbitrum
* verify-command: FOUNDRY_PROFILE=arbitrum npx catapulta-verify -b broadcast/GHOCrossChainLaunchPart2_20240613.s.sol/42161/run-latest.json
*/
contract DeployArbitrum is ArbitrumScript {
function run() external broadcast {
// deploy payloads
address payload0 = GovV3Helpers.deployDeterministic(
type(AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613).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/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/GHOCrossChainLaunchPart2_20240613.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_GHOCrossChainLaunchPart2_20240613).creationCode
);
payloads[0] = GovV3Helpers.buildArbitrumPayload(vm, actionsArbitrum);

// create proposal
vm.startBroadcast();
GovV3Helpers.createProposal(
vm,
payloads,
GovernanceV3Ethereum.VOTING_PORTAL_ETH_POL,
GovV3Helpers.ipfsHashFile(
vm,
'src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/GHOCrossChainLaunchPart2.md'
)
);
}
}
Loading

1 comment on commit c7161d8

@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 (7bef9ca 2024-06-26T00:18:22.002685333Z)
Build log
Compiling 418 files with Solc 0.8.19
Solc 0.8.19 finished in 232.36s
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/20240502_AaveV1Ethereum_AaveV1Deprecation/AaveV1Ethereum_AaveV1Deprecation_20240502.t.sol:94:1:
   |
94 | contract AaveV1Ethereum_AaveV1Deprecation_20240502_Test is ProtocolV3TestBase {
   | ^ (Relevant source part starts here and spans across multiple lines).
Note: The payable fallback function is defined here.
   --> src/20240502_AaveV1Ethereum_AaveV1Deprecation/AaveV1Ethereum_AaveV1Deprecation_20240502.t.sol:297:3:
    |
297 |   fallback() external payable {}
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

| Contract                                                                      | Size (B) | Margin (B) |
|-------------------------------------------------------------------------------|----------|------------|
| AaveGovernanceV2                                                              |       45 |     24,531 |
| AaveSafetyModule                                                              |       45 |     24,531 |
| AaveSwapper                                                                   |    5,572 |     19,004 |
| AaveV1                                                                        |       45 |     24,531 |
| AaveV1Ethereum_AaveV1Deprecation_20240502                                     |    2,593 |     21,983 |
| AaveV2Avalanche                                                               |       45 |     24,531 |
| AaveV2AvalancheAssets                                                         |       45 |     24,531 |
| AaveV2Avalanche_LTLTVReductionsOnAaveV2Stablecoins_20240510                   |      210 |     24,366 |
| AaveV2Avalanche_MigrateRobotsToChainlinkAutomationV2_20240422                 |      518 |     24,058 |
| AaveV2Avalanche_ReserveFactorUpgrades_20240506                                |    1,022 |     23,554 |
| AaveV2Avalanche_ReserveFactorUpgrades_20240524                                |    1,022 |     23,554 |
| AaveV2Avalanche_StablecoinIRUpdates_20240424                                  |    1,858 |     22,718 |
| AaveV2Avalanche_TemporaryFreezeOfLongTailV2Assets_20240418                    |      186 |     24,390 |
| AaveV2Ethereum                                                                |       45 |     24,531 |
| AaveV2EthereumAMM                                                             |       45 |     24,531 |
| AaveV2EthereumAMMAssets                                                       |       45 |     24,531 |
| AaveV2EthereumAssets                                                          |       45 |     24,531 |
| AaveV2Ethereum_AAMPLSecondDistribution_20240429                               |    2,370 |     22,206 |
| AaveV2Ethereum_AprilFinanceUpdate_20240421                                    |    7,897 |     16,679 |
| AaveV2Ethereum_ChaosLabsEthereumV2LTReductions_20240509                       |      358 |     24,218 |
| AaveV2Ethereum_DeprecationOfSmallCapStablecoinsOnV2Ethereum_20240502          |    3,472 |     21,104 |
| AaveV2Ethereum_LTLTVReductionsOnAaveV2Stablecoins_20240510                    |      210 |     24,366 |
| AaveV2Ethereum_ReserveFactorUpgrades_20240506                                 |    1,778 |     22,798 |
| AaveV2Ethereum_ReserveFactorUpgrades_20240524                                 |    1,778 |     22,798 |
| AaveV2Ethereum_StablecoinIRUpdates_20240424                                   |    1,858 |     22,718 |
| AaveV2Ethereum_TemporaryFreezeOfLongTailV2Assets_20240418                     |      793 |     23,783 |
| AaveV2Polygon                                                                 |       45 |     24,531 |
| AaveV2PolygonAssets                                                           |       45 |     24,531 |
| AaveV2Polygon_AprilFinanceUpdate_20240421                                     |    6,129 |     18,447 |
| AaveV2Polygon_AprilFinanceUpdate_20240421_PartB                               |      451 |     24,125 |
| AaveV2Polygon_LTLTVReductionsOnAaveV2Stablecoins_20240510                     |      210 |     24,366 |
| AaveV2Polygon_MigrateRobotsToChainlinkAutomationV2_20240422                   |      518 |     24,058 |
| AaveV2Polygon_TemporaryFreezeOfLongTailV2Assets_20240418                      |      186 |     24,390 |
| AaveV3Arbitrum                                                                |       45 |     24,531 |
| AaveV3ArbitrumAssets                                                          |       45 |     24,531 |
| AaveV3ArbitrumEModes                                                          |       45 |     24,531 |
| AaveV3Arbitrum_AdjustingInterestRateCurveForWeETHOnArbitrum_20240603          |    3,923 |     20,653 |
| AaveV3Arbitrum_ChaosLabsRiskParameterUpdatesAaveV3_20240530                   |    3,376 |     21,200 |
| AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613                              |    4,981 |     19,595 |
| AaveV3Arbitrum_GHOCrossChainLaunch_20240528                                   |   14,274 |     10,302 |
| AaveV3Arbitrum_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425               |    3,669 |     20,907 |
| AaveV3Arbitrum_MigrateRobotsToChainlinkAutomationV2_20240422                  |    2,954 |     21,622 |
| AaveV3Arbitrum_OptimizeETHCorrelatedAssetParameters_20240612                  |    3,622 |     20,954 |
| AaveV3Arbitrum_SetACIAsEmissionManager_20240620                               |      285 |     24,291 |
| AaveV3Arbitrum_StablecoinIRUpdates_20240424                                   |    5,381 |     19,195 |
| AaveV3Avalanche                                                               |       45 |     24,531 |
| AaveV3AvalancheAssets                                                         |       45 |     24,531 |
| AaveV3AvalancheEModes                                                         |       45 |     24,531 |
| AaveV3Avalanche_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425              |    3,377 |     21,199 |
| AaveV3Avalanche_MigrateRobotsToChainlinkAutomationV2_20240422                 |    3,577 |     20,999 |
| AaveV3Avalanche_OptimizeETHCorrelatedAssetParameters_20240612                 |    3,623 |     20,953 |
| AaveV3Avalanche_SetACIAsEmissionManagerForWAVAXOnTheAvalancheNetwork_20240620 |      615 |     23,961 |
| AaveV3Avalanche_StablecoinIRUpdates_20240424                                  |    4,628 |     19,948 |
| AaveV3BNB                                                                     |       45 |     24,531 |
| AaveV3BNBAssets                                                               |       45 |     24,531 |
| AaveV3BNBEModes                                                               |       45 |     24,531 |
| AaveV3BNB_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425                    |    3,528 |     21,048 |
| AaveV3BNB_OptimizeETHCorrelatedAssetParameters_20240612                       |    3,629 |     20,947 |
| AaveV3BNB_StablecoinIRUpdates_20240424                                        |    4,132 |     20,444 |
| AaveV3Base                                                                    |       45 |     24,531 |
| AaveV3BaseAssets                                                              |       45 |     24,531 |
| AaveV3BaseEModes                                                              |       45 |     24,531 |
| AaveV3Base_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425                   |    3,517 |     21,059 |
| AaveV3Base_OptimizeETHCorrelatedAssetParameters_20240612                      |    3,605 |     20,971 |
| AaveV3Base_StablecoinIRUpdates_20240424                                       |    3,868 |     20,708 |
| AaveV3Base_WeETHAaveV3BaseOnboarding_20240527                                 |    4,997 |     19,579 |
| AaveV3Ethereum                                                                |       45 |     24,531 |
| AaveV3EthereumAssets                                                          |       45 |     24,531 |
| AaveV3EthereumEModes                                                          |       45 |     24,531 |
| AaveV3Ethereum_ACIAdAstra_20240506                                            |      835 |     23,741 |
| AaveV3Ethereum_AaveV31CantinaCompetition_20240503                             |      344 |     24,232 |
| AaveV3Ethereum_AprilFinanceUpdatePartB_20240515                               |    4,488 |     20,088 |
| AaveV3Ethereum_GHOCrossChainLaunch_20240528                                   |   18,000 |      6,576 |
| AaveV3Ethereum_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425               |    3,669 |     20,907 |
| AaveV3Ethereum_GhoStewardUpdate_20240602                                      |    2,571 |     22,005 |
| AaveV3Ethereum_LlamariskRiskProvider_20240421                                 |      641 |     23,935 |
| AaveV3Ethereum_MigrateRobotsToChainlinkAutomationV2_20240422                  |    5,800 |     18,776 |
| AaveV3Ethereum_OnboardSUSDeToAaveV3OnEthereum_20240621                        |    5,006 |     19,570 |
| AaveV3Ethereum_OnboardUSDeAaveV3Ethereum_20240528                             |    5,012 |     19,564 |
| AaveV3Ethereum_OnboardingETHxToAaveV3_20240521                                |    5,000 |     19,576 |
| AaveV3Ethereum_OptimizeETHCorrelatedAssetParameters_20240612                  |    3,622 |     20,954 |
| AaveV3Ethereum_OrbitProgramRenewal_20240513                                   |    1,670 |     22,906 |
| AaveV3Ethereum_SetACIAsEmissionManager_20240620                               |      323 |     24,253 |
| AaveV3Ethereum_StablecoinIRUpdates_20240424                                   |    5,130 |     19,446 |
| AaveV3Ethereum_StkGHOIncentives_20240424                                      |    1,476 |     23,100 |
| AaveV3Ethereum_UpdatingWeETHRiskParameters_20240426                           |    4,111 |     20,465 |
| AaveV3Ethereum_V4ALServiceProviderProposal_20240614                           |      840 |     23,736 |
| AaveV3Gnosis                                                                  |       45 |     24,531 |
| AaveV3GnosisAssets                                                            |       45 |     24,531 |
| AaveV3GnosisEModes                                                            |       45 |     24,531 |
| AaveV3Gnosis_AprilFinanceUpdate_20240421                                      |      380 |     24,196 |
| AaveV3Gnosis_ChaosLabsRiskParameterUpdatesAaveV3_20240530                     |    3,374 |     21,202 |
| AaveV3Gnosis_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425                 |    3,519 |     21,057 |
| AaveV3Gnosis_OptimizeETHCorrelatedAssetParameters_20240612                    |    3,620 |     20,956 |
| AaveV3Gnosis_StablecoinIRUpdates_20240424                                     |    4,123 |     20,453 |
| AaveV3Metis                                                                   |       45 |     24,531 |
| AaveV3MetisAssets                                                             |       45 |     24,531 |
| AaveV3MetisEModes                                                             |       45 |     24,531 |
| AaveV3Metis_OptimizeETHCorrelatedAssetParameters_20240612                     |    3,606 |     20,970 |
| AaveV3Optimism                                                                |       45 |     24,531 |
| AaveV3OptimismAssets                                                          |       45 |     24,531 |
| AaveV3OptimismEModes                                                          |       45 |     24,531 |
| AaveV3Optimism_ChaosLabsParameterRecommendationsSUSDOnV3Optimism_20240528     |    3,973 |     20,603 |
| AaveV3Optimism_ChaosLabsRiskParameterUpdatesAaveV3_20240530                   |    3,363 |     21,213 |
| AaveV3Optimism_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425               |    3,669 |     20,907 |
| AaveV3Optimism_MigrateRobotsToChainlinkAutomationV2_20240422                  |    2,844 |     21,732 |
| AaveV3Optimism_OptimizeETHCorrelatedAssetParameters_20240612                  |    3,609 |     20,967 |
| AaveV3Optimism_SUSDRiskParametersUpdate_20240517                              |    3,372 |     21,204 |
| AaveV3Optimism_StablecoinIRUpdates_20240424                                   |    5,130 |     19,446 |
| AaveV3Polygon                                                                 |       45 |     24,531 |
| AaveV3PolygonAssets                                                           |       45 |     24,531 |
| AaveV3PolygonEModes                                                           |       45 |     24,531 |
| AaveV3Polygon_ChaosLabsRiskParameterUpdatesAaveV3_20240530                    |    3,520 |     21,056 |
| AaveV3Polygon_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425                |    3,668 |     20,908 |
| AaveV3Polygon_MigrateRobotsToChainlinkAutomationV2_20240422                   |    2,773 |     21,803 |
| AaveV3Polygon_OptimizeETHCorrelatedAssetParameters_20240612                   |    3,621 |     20,955 |
| AaveV3Polygon_StablecoinIRUpdates_20240424                                    |    5,380 |     19,196 |
| AaveV3Scroll                                                                  |       45 |     24,531 |
| AaveV3ScrollAssets                                                            |       45 |     24,531 |
| AaveV3ScrollEModes                                                            |       45 |     24,531 |
| AaveV3Scroll_GeneralizedLTLTVReductionsOnAaveV3Step2_20240425                 |    3,374 |     21,202 |
| AaveV3Scroll_OptimizeETHCorrelatedAssetParameters_20240612                    |    3,607 |     20,969 |
| AaveV3Scroll_StablecoinIRUpdates_20240424                                     |    3,620 |     20,956 |
| Address                                                                       |       45 |     24,531 |
| AggregateRateLimiter                                                          |    1,931 |     22,645 |
| CallWithExactGas                                                              |       45 |     24,531 |
| ChainHelpers                                                                  |       45 |     24,531 |
| ChainIds                                                                      |       45 |     24,531 |
| Client                                                                        |      111 |     24,465 |
| ConfiguratorInputTypes                                                        |       45 |     24,531 |
| ConfirmedOwner                                                                |      552 |     24,024 |
| ConfirmedOwnerWithProposal                                                    |      552 |     24,024 |
| Create2Utils                                                                  |      123 |     24,453 |
| DataTypes                                                                     |       45 |     24,531 |
| ERC165Checker                                                                 |       45 |     24,531 |
| ERC1967Proxy                                                                  |      136 |     24,440 |
| EVM2EVMOffRamp                                                                |   19,826 |      4,750 |
| EVM2EVMOnRamp                                                                 |   20,900 |      3,676 |
| EngineFlags                                                                   |       45 |     24,531 |
| EnumerableMap                                                                 |       45 |     24,531 |
| EnumerableMapAddresses                                                        |       45 |     24,531 |
| EnumerableSet                                                                 |       45 |     24,531 |
| Errors                                                                        |    4,673 |     19,903 |
| GovV3Helpers                                                                  |    2,581 |     21,995 |
| GovV3StorageHelpers                                                           |       45 |     24,531 |
| GovernanceV3Arbitrum                                                          |       45 |     24,531 |
| GovernanceV3Avalanche                                                         |       45 |     24,531 |
| GovernanceV3BNB                                                               |       45 |     24,531 |
| GovernanceV3Base                                                              |       45 |     24,531 |
| GovernanceV3Ethereum                                                          |       45 |     24,531 |
| GovernanceV3Gnosis                                                            |       45 |     24,531 |
| GovernanceV3Metis                                                             |       45 |     24,531 |
| GovernanceV3Optimism                                                          |       45 |     24,531 |
| GovernanceV3Polygon                                                           |       45 |     24,531 |
| GovernanceV3PolygonZkEvm                                                      |       45 |     24,531 |
| GovernanceV3Scroll                                                            |       45 |     24,531 |
| Internal                                                                      |      147 |     24,429 |
| IpfsUtils                                                                     |       45 |     24,531 |
| Math                                                                          |       45 |     24,531 |
| MerkleMultiProof                                                              |       45 |     24,531 |
| MiscArbitrum                                                                  |       45 |     24,531 |
| MiscEthereum                                                                  |       45 |     24,531 |
| MiscPolygon                                                                   |       45 |     24,531 |
| OrbitProgramData                                                              |      422 |     24,154 |
| OwnerIsCreator                                                                |      552 |     24,024 |
| PayloadsControllerUtils                                                       |       45 |     24,531 |
| PriceRegistry                                                                 |    5,352 |     19,224 |
| ProxyHelpers                                                                  |       45 |     24,531 |
| RateLimiter                                                                   |       45 |     24,531 |
| ReserveConfiguration                                                          |      130 |     24,446 |
| RewardsDataTypes                                                              |       45 |     24,531 |
| Router                                                                        |    8,873 |     15,703 |
| SafeCast                                                                      |       45 |     24,531 |
| SafeERC20                                                                     |       45 |     24,531 |
| StorageHelpers                                                                |       45 |     24,531 |
| StorageSlot                                                                   |       45 |     24,531 |
| Strings                                                                       |       45 |     24,531 |
| TransparentUpgradeableProxy                                                   |    2,040 |     22,536 |
| USDPriceWith18Decimals                                                        |       45 |     24,531 |
| UpgradeableBurnMintTokenPool                                                  |    9,831 |     14,745 |
| UpgradeableGhoToken                                                           |    8,597 |     15,979 |
| UpgradeableLockReleaseTokenPool                                               |   12,076 |     12,500 |
| Utils                                                                         |   15,014 |      9,562 |
| WadRayMath                                                                    |       45 |     24,531 |
Test success 🌈
No files changed, compilation skipped

Ran 3 tests for src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.t.sol:AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613_Test
[PASS] testFail_defaultProposalExecutionNoSeed() (gas: 3279462)
[PASS] test_defaultProposalExecution() (gas: 75738117)
Logs:
  0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1
  0xf97f4df75117a78c1A5a0DBb814Af92458539FB4
  0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8
  0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f
  0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
  0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
  0xD22a58f79e9481D1a88e00c343885A588b34b68B
  0x5979D7b546E38E414F7E9822514be443A4800529
  0x3F56e0c36d275367b8C502090EDF38289b3dEa0d
  0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8
  0x93b346b6BC2548dA6A1E7d98E9a421B42541425b
  0xaf88d065e77c8cC2239327C5EDb3A432268e5831
  0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F
  0x912CE59144191C1204E64559FE8253a0e49E6548
  0x35751007a407ca6FEFfE80b3cB397736D2cf4dbe
  0x7dfF72693f6A4149b17e7C6314655f6A9F7c8B33
  E2E: Collateral DAI, TestAsset DAI
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: DAI, Amount: 1000247511246657985518
  WITHDRAW: DAI, Amount: 500123755623328992759
  WITHDRAW: DAI, Amount: 500123755623328992759
  BORROW: DAI, Amount 1000247511246657985518, Stable: false
  REPAY: DAI, Amount: 1000247511246657985518
  E2E: Collateral DAI, TestAsset LINK
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: LINK, Amount: 77081984398606357722
  WITHDRAW: LINK, Amount: 38540992199303178861
  WITHDRAW: LINK, Amount: 38540992199303178861
  BORROW: LINK, Amount 77081984398606357722, Stable: false
  REPAY: LINK, Amount: 77081984398606357722
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: USDC, Amount: 1000041731
  WITHDRAW: USDC, Amount: 500020865
  WITHDRAW: USDC, Amount: 500020866
  BORROW: USDC, Amount 1000041731, Stable: false
  REPAY: USDC, Amount: 1000041731
  E2E: Collateral DAI, TestAsset WBTC
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: WBTC, Amount: 1617063
  WITHDRAW: WBTC, Amount: 808531
  WITHDRAW: WBTC, Amount: 808531
  BORROW: WBTC, Amount 1617063, Stable: false
  REPAY: WBTC, Amount: 1617063
  E2E: Collateral DAI, TestAsset WETH
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: WETH, Amount: 299826700167303298
  WITHDRAW: WETH, Amount: 149913350083651649
  WITHDRAW: WETH, Amount: 149913350083651650
  BORROW: WETH, Amount 299826700167303298, Stable: false
  REPAY: WETH, Amount: 299826700167303298
  E2E: Collateral DAI, TestAsset USDT
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: USDT, Amount: 1000660435
  WITHDRAW: USDT, Amount: 500330217
  WITHDRAW: USDT, Amount: 500330218
  BORROW: USDT, Amount 1000660435, Stable: false
  REPAY: USDT, Amount: 1000660435
  E2E: Collateral DAI, TestAsset AAVE
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: AAVE, Amount: 12634555450735577399
  WITHDRAW: AAVE, Amount: 6317277725367788699
  WITHDRAW: AAVE, Amount: 6317277725367788701
  E2E: TestAsset EURS SKIPPED
  E2E: Collateral DAI, TestAsset wstETH
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: wstETH, Amount: 256119513390299193
  WITHDRAW: wstETH, Amount: 128059756695149596
  WITHDRAW: wstETH, Amount: 128059756695149598
  BORROW: wstETH, Amount 256119513390299193, Stable: false
  REPAY: wstETH, Amount: 256119513390299193
  E2E: TestAsset MAI SKIPPED
  E2E: Collateral DAI, TestAsset rETH
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: rETH, Amount: 270253587724468342
  WITHDRAW: rETH, Amount: 135126793862234171
  WITHDRAW: rETH, Amount: 135126793862234171
  BORROW: rETH, Amount 270253587724468342, Stable: false
  REPAY: rETH, Amount: 270253587724468342
  E2E: Collateral DAI, TestAsset LUSD
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: LUSD, Amount: 1002715292850120555456
  WITHDRAW: LUSD, Amount: 501357646425060277728
  WITHDRAW: LUSD, Amount: 501357646425060277727
  BORROW: LUSD, Amount 1002715292850120555456, Stable: false
  REPAY: LUSD, Amount: 1002715292850120555456
  E2E: Collateral DAI, TestAsset USDC
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: USDC, Amount: 1000041731
  WITHDRAW: USDC, Amount: 500020865
  WITHDRAW: USDC, Amount: 500020866
  BORROW: USDC, Amount 1000041731, Stable: false
  REPAY: USDC, Amount: 1000041731
  E2E: Collateral DAI, TestAsset FRAX
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: FRAX, Amount: 1002739987014517168162
  WITHDRAW: FRAX, Amount: 501369993507258584081
  WITHDRAW: FRAX, Amount: 501369993507258584082
  BORROW: FRAX, Amount 1002739987014517168162, Stable: false
  REPAY: FRAX, Amount: 1002739987014517168162
  E2E: Collateral DAI, TestAsset ARB
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: ARB, Amount: 1311700729916858373914
  WITHDRAW: ARB, Amount: 655850364958429186957
  WITHDRAW: ARB, Amount: 655850364958429186957
  BORROW: ARB, Amount 1311700729916858373914, Stable: false
  REPAY: ARB, Amount: 1311700729916858373914
  E2E: Collateral DAI, TestAsset weETH
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: weETH, Amount: 287929729252433489
  WITHDRAW: weETH, Amount: 143964864626216744
  WITHDRAW: weETH, Amount: 143964864626216745
  BORROW: weETH, Amount 287929729252433489, Stable: false
  REPAY: weETH, Amount: 287929729252433489
  E2E: Collateral DAI, TestAsset GHO
  SUPPLY: DAI, Amount: 100024751124665798551851
  SUPPLY: GHO, Amount: 1000000000000000000000
  WITHDRAW: GHO, Amount: 500000000000000000000
  WITHDRAW: GHO, Amount: 500000000000000000000
  BORROW: GHO, Amount 1000000000000000000000, Stable: false
  REPAY: GHO, Amount: 1000000000000000000000

[PASS] test_defaultProposalExecutionExactSeed() (gas: 3507522)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 58.10s (66.18s CPU time)

Ran 1 test suite in 58.11s (58.10s CPU time): 3 tests passed, 0 failed, 0 skipped (3 total tests)

Please sign in to comment.