generated from bgd-labs/bgd-forge-template
-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add second AIP for GHO Cross-Chain Launch #356
Merged
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
24a3f7d
Add proposal for Gho Incident Report 20231113 (#1)
parth-15 4aa6143
fix: Make new impl constant (#3)
miguelmtzinf 27dd485
fix: Amend AIP text (#4)
miguelmtzinf 2f242a6
test: Tweak default tests with borrow cap update (#5)
miguelmtzinf 4812d01
fix: lint issue (#6)
parth-15 43a7687
test: Add diffs from test running (#7)
miguelmtzinf 4c79bb9
fix: Add payload address (#8)
miguelmtzinf 76cd4b6
fix: Fix payload address in script (#9)
miguelmtzinf 120f564
fix: Remove unneeded diff file (#10)
miguelmtzinf 4d6a3d9
Merge branch 'bgd-labs:main' into main
miguelmtzinf 4cb8573
Merge branch 'bgd-labs:main' into main
miguelmtzinf 0e39df3
Merge branch 'bgd-labs:main' into main
miguelmtzinf 11a6d50
Merge branch 'bgd-labs:main' into main
miguelmtzinf 01e0ed0
feat: Add proposal to onboard GHO
miguelmtzinf 4a7d3b3
fix: Fix AIP name
miguelmtzinf 822f68d
fix: Update GHO ir
miguelmtzinf 35999bf
fix: Fix diff report
miguelmtzinf 416b1d4
fix: Fix typo in AIP text
miguelmtzinf 3bc5ca6
fix: Fix typo in AIP text
miguelmtzinf d2601fa
fix: Fix tests
miguelmtzinf 9330367
fix: Fix lint
miguelmtzinf File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
132 changes: 132 additions & 0 deletions
132
...Part2_20240613_before_AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613_after.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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" | ||
} | ||
} | ||
} | ||
} | ||
``` |
64 changes: 64 additions & 0 deletions
64
...eV3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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); | ||
} | ||
} |
59 changes: 59 additions & 0 deletions
59
...3Arbitrum_GHOCrossChainLaunchPart2/AaveV3Arbitrum_GHOCrossChainLaunchPart2_20240613.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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( | ||
brotherlymite marked this conversation as resolved.
Show resolved
Hide resolved
|
||
'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)); | ||
} | ||
} |
59 changes: 59 additions & 0 deletions
59
src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/GHOCrossChainLaunchPart2.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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/). |
61 changes: 61 additions & 0 deletions
61
src/20240613_AaveV3Arbitrum_GHOCrossChainLaunchPart2/GHOCrossChainLaunchPart2_20240613.s.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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' | ||
) | ||
); | ||
} | ||
} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per Chaos Labs's suggestion, GHO borrow rate on Arbitrum must be 1% higher than Ethereum's one (11% atm).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't be 13%? from chaos labs here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Chaos Lab's post says:
We apply a similar methodology used across Aave, in which Slope1 on an Ethereum L2 is set 1 percentage point higher than on Ethereum; should GHO rates on Ethereum adjust, we recommend that these be adjusted in line.
Their recommendation of 13% is outdated now, given that Ethereum GHO borrow rate was adjusted to 11% by Risk steward recently.