Skip to content

Latest commit

 

History

History
219 lines (172 loc) · 23.8 KB

File metadata and controls

219 lines (172 loc) · 23.8 KB

Payloads

Proposal 120

Ipfs

GHO Cross-Chain - Part 1

Simple Summary

This AIP proposes the cross-chain implementation for the GHO stablecoin, the native asset of the Aave Protocol, beginning with the initial expansion to the Arbitrum network utilizing the Chainlink Cross-Chain Interoperability Protocol (CCIP).

The smart contracts have been refined through multiple stages of design, development, testing, and implementation. For security validations, collaborations with DAO service providers Certora and BGD Labs were established to conduct code reviews.

Following extensive community discussion, this AIP proposes the deployment of cross-chain GHO. This proposal was split into two separate AIPs, whereby, subject to approval of this proposal by the DAO, there will be a second AIP (“Part 2”) for configuration of GHO on Arbitrum Aave Pool adopting risk parameters formulated by Chaos Labs.

Motivation

Transitioning to a cross-chain model beyond Ethereum Mainnet enhances GHO's accessibility and the overall user experience with faster transactions and reduced costs. This shift also presents new opportunities within the ecosystem of each network, allowing access to a wide array of integrations with other protocols and tools, enriching GHO's utility potential.

Specification

This AIP addresses the implementation of the GHO cross-chain strategy. The following smart contracts have been developed:

  • Upgradable GHO Token: This contract version allows the DAO to adjust the logic of the token.
  • Modified CCIP Contracts: Tailored versions of the Chainlink Cross-Chain Interoperability Protocol (CCIP) contracts, designed to support the GHO cross-chain implementation.

All smart contracts, including the code for this AIP, have been reviewed by BGD Labs for alignment with the Aave Protocol and by Certora for security aspects, including both manual and formal verification.

Proposed implementation actions are the following:

Ethereum:

  • Deployment of CCIP LockReleaseTokenPool Contract: GHO reserve contract backs up liquidity across different chains. A "bridge limit" control enables the DAO to regulate the outflow of GHO liquidity to other networks. The limit is set at the minimum bucket capacity of the bridges across networks to ensure proper validation of GHO transfers on the source chain to facilitate transfers between chains.
  • Transfer of ownership of the CCIP LockReleaseTokenPool contract to the DAO: The DAO controls and owns the contract logic and configuration parameters, including the outbound/inbound rate limit and the bridge limit.
  • Configuration of CCIP LockReleaseTokenPool contract: token pool rate limit will be disabled.

Arbitrum:

  • Deployment of UpgradeableGHO: The contract is configured to be deployed by the DAO upon passing of this AIP.
  • Deployment of CCIP BurnMintTokenPool contract: The contract handles the minting and burning processes, based on the liquidity backed from Ethereum.
  • Transfer of ownership of the CCIP BurnMintTokenPool contract to the DAO: The DAO will take control of the contract logic and configuration of outbound/inbound rate limit.
  • Configuration of CCIP BurnMintTokenPool contract: token pool rate limit will be disabled.

References

Copyright

Copyright and related rights waived via CC0.

Check: Reports all state changes ✅

Info

KeeperRegistry2_1 at 0x6593c7De001fC8542bB1703532EE1E5aA0D458fD

@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000012` @@
- "0x0082be7800000085db35ddec88efc1ba00000002015f90000000000bebc20003"
+ "0x0082c96600000085db35ddec88efc1ba00000002015f90000000000bebc20003"
@@ `s_upkeep` key `"98380224709907625274835640384207729890880758792392902153217231505951940040515".lastPerformedBlockNumber` @@
- 20132220
+ 20141703

TransparentUpgradeableProxy at 0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a with implementation Bridge at 0x1066CEcC8880948FE55e427E94F1FF221d626591

@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000006` @@
- "0x0000000000000000000000000000000000000000000000000000000000180c56"
+ "0x0000000000000000000000000000000000000000000000000000000000180c57"
@@ Slot `0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f37941995` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x6c70d127746604a2382cf118c58c5973f956901185462cad16e45055646aa616"

TransparentUpgradeableProxy at 0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7👻 with implementation Governance at 0x58BcB647C4beFf253B4B6996c62F737B783f2cDd

@@ `_proposals` key `"120".state` @@
- 2284932603300960933549552502286810985460334851
+ 2284932603300960933549552502286810985460334852

TransparentUpgradeableProxy at 0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5👻 with implementation PayloadsController at 0x7222182cB9c5320587b5148BF03eeE107AD64578

@@ Slot `0x0f7c2a22036bfa20acc9ee73aa9ab92bebf1413ecc0991a7c2b4d6178e9838ed` @@
- "0x0000000000006670604f0101717c26c3571830ff75e7cca027ac432318d11837"
+ "0x006675bd8f006670604f0201717c26c3571830ff75e7cca027ac432318d11837"

TransparentUpgradeableProxy at 0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1👻 with implementation CrossChainControllerUpgradeRev2 at 0x28559c2F4B038b1E836fA419DCcDe7454d8Fe215

@@ `_currentEnvelopeNonce` key `_currentEnvelopeNonce` @@
- 486
+ 488
@@ `_currentTransactionNonce` key `_currentTransactionNonce` @@
- 486
+ 488
@@ `_forwardedTransactions` key `0xb94312f311e8a45a5783418e952cf958540ddf6b366aad042cad872b6554381b` @@
- false
+ true
@@ `_forwardedTransactions` key `0xd3dfd2ddc512823325687c0f120241addb3d5d4194d535c33e517ab72b000fef` @@
- false
+ true
@@ `_registeredEnvelopes` key `0x136653f74ba3b53659aa7ba331dea2f1d4310811874b9938afc47819509bb464` @@
- false
+ true
@@ `_registeredEnvelopes` key `0xb212eb6be749c3d55e04f5589eaa7b2d1b990afe52ecb90fa7921f0dce9d6d09` @@
- false
+ true

Check: Reports all events emitted from the proposal ✅

Info

  • TransparentUpgradeableProxy at 0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1👻 with implementation CrossChainControllerUpgradeRev2 at 0x28559c2F4B038b1E836fA419DCcDe7454d8Fe215
    • EnvelopeRegistered(envelopeId: 0x136653f74ba3b53659aa7ba331dea2f1d4310811874b9938afc47819509bb464, envelope: {"nonce":"486","origin":"0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7","destination":"0xdabad81af85554e9ae636395611c58f7ec1aaec5","originChainId":"1","destinationChainId":"1","message":"0x00000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb"})
    • TransactionForwardingAttempted(transactionId: 0xb94312f311e8a45a5783418e952cf958540ddf6b366aad042cad872b6554381b, envelopeId: 0x136653f74ba3b53659aa7ba331dea2f1d4310811874b9938afc47819509bb464, encodedTransaction: 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e60000000000000000000000009aee0b04504cef83a65ac3f0e838d0593bcb2bc7000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb, destinationChainId: 1, bridgeAdapter: 0x6cfbd2aa4691fc18b9c209bdd43dc3943c228fcf, destinationBridgeAdapter: 0x6cfbd2aa4691fc18b9c209bdd43dc3943c228fcf, adapterSuccessful: true, returnData: 0x000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000000)
    • EnvelopeRegistered(envelopeId: 0xb212eb6be749c3d55e04f5589eaa7b2d1b990afe52ecb90fa7921f0dce9d6d09, envelope: {"nonce":"487","origin":"0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7","destination":"0x89644ca1bb8064760312ae4f03ea41b05da3637c","originChainId":"1","destinationChainId":"42161","message":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb"})
    • TransactionForwardingAttempted(transactionId: 0xd3dfd2ddc512823325687c0f120241addb3d5d4194d535c33e517ab72b000fef, envelopeId: 0xb212eb6be749c3d55e04f5589eaa7b2d1b990afe52ecb90fa7921f0dce9d6d09, encodedTransaction: 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e70000000000000000000000009aee0b04504cef83a65ac3f0e838d0593bcb2bc700000000000000000000000089644ca1bb8064760312ae4f03ea41b05da3637c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb, destinationChainId: 42161, bridgeAdapter: 0x88d6d01e08d3e64513b15fd46528dbba7d755883, destinationBridgeAdapter: 0xc8a2adc4261c6b669cdff69e717e77c9cfeb420d, adapterSuccessful: true, returnData: 0x0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f0000000000000000000000000000000000000000000000000000000000180c56)
  • TransparentUpgradeableProxy at 0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5👻 with implementation PayloadsController at 0x7222182cB9c5320587b5148BF03eeE107AD64578
    • PayloadQueued(payloadId: 137)
    • PayloadExecutionMessageReceived(originSender: 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7, originChainId: 1, delivered: true, message: 0x00000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb, reason: 0x)
  • TransparentUpgradeableProxy at 0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7👻 with implementation Governance at 0x58BcB647C4beFf253B4B6996c62F737B783f2cDd
    • PayloadSent(proposalId: 120, payloadId: 137, payloadsController: 0xdabad81af85554e9ae636395611c58f7ec1aaec5, chainId: 1, payloadNumberOnProposal: 0, numberOfPayloadsOnProposal: 2)
    • PayloadSent(proposalId: 120, payloadId: 32, payloadsController: 0x89644ca1bb8064760312ae4f03ea41b05da3637c, chainId: 42161, payloadNumberOnProposal: 1, numberOfPayloadsOnProposal: 2)
    • ProposalExecuted(proposalId: 120)
  • TransparentUpgradeableProxy at 0x8315177aB297bA92A06054cE80a67Ed4DBd7ed3a with implementation Bridge at 0x1066CEcC8880948FE55e427E94F1FF221d626591
    • MessageDelivered(messageIndex: 1576022, beforeInboxAcc: 0x3db9f5d4a9de78c5dd9291662d680dc9bdc43e01e4e748782e2ba05c5a22cbbb, inbox: 0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f, kind: 9, sender: 0xfe53a7d8559a463722ca4bed50e0cc05a386c1f2, messageDataHash: 0x1c78020ca28d38a0b3c738b81a9aa1974b46efa75818b0a708ff23d229c47b33, baseFeeL1: 0, timestamp: 1718992271)
  • TransparentUpgradeableProxy at 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f with implementation Inbox at 0x5aED5f8A1e3607476F1f81c3d8fe126deB0aFE94
    • InboxMessageDelivered(messageNum: 1576022, data: 0x000000000000000000000000c8a2adc4261c6b669cdff69e717e77c9cfeb420d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c3e8e3e5600000000000000000000000000000000000000000000000000000002aa319bf4000000000000000000000000000cbfb78a3eeaa611b826e37c80e4126c8787d29f0000000000000000000000000cbfb78a3eeaa611b826e37c80e4126c8787d29f0000000000000000000000000000000000000000000000000000000000006ddd0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000002244f507960000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001e70000000000000000000000009aee0b04504cef83a65ac3f0e838d0593bcb2bc700000000000000000000000089644ca1bb8064760312ae4f03ea41b05da3637c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000a4b100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006671bfbb)
  • GasCappedGovernanceChainRobotKeeper at 0x1996c281235D99bB3c6B8d2afbEb8ac6c7A39C11
    • ActionSucceeded(id: 120, action: 1)
  • KeeperRegistry2_1 at 0x6593c7De001fC8542bB1703532EE1E5aA0D458fD
    • UpkeepPerformed(id: 98380224709907625274835640384207729890880758792392902153217231505951940040515, success: true, totalPayment: 0, gasUsed: 446804, gasOverhead: 112718, trigger: 0x0000000000000000000000000000000000000000000000000000000001335685f4c6a3ee4f834ab766466afbbc204cb07cee53655b041a26ab53c3925f3e02e2)

Check: Check all touched contracts are verified on Etherscan ✅

Info

  • 0x79a4e2666554bf0d47854df60deaa2636c3e7423: EOA (verification not applicable)
  • 0x6593c7de001fc8542bb1703532ee1e5aa0d458fd: Contract (verified) (KeeperRegistry2_1)
  • 0x0000000000000000000000000000000000000001: EOA (verification not applicable)
  • 0x889e13b61b1961a2082e1df067dd5fff10f556c5: Contract (not verified)
  • 0x1996c281235d99bb3c6b8d2afbeb8ac6c7a39c11: Contract (verified) (GasCappedGovernanceChainRobotKeeper)
  • 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7: Contract (verified) (TransparentUpgradeableProxy) 👻
  • 0x58bcb647c4beff253b4b6996c62f737b783f2cdd: Contract (verified) (Governance)
  • 0xa198fac58e02a5c5f8f7e877895d50cfa9ad1e04: Contract (verified) (GovernancePowerStrategy) 👻
  • 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9: Contract (verified) (InitializableAdminUpgradeabilityProxy) 👻
  • 0x5d4aa78b08bc7c530e21bf7447988b1be7991322: Contract (verified) (AaveTokenV3)
  • 0x4da27a545c0c5b758a6ba100e3a049001de870f5: Contract (verified) (InitializableAdminUpgradeabilityProxy) 👻
  • 0x0fe58fe1caa69951dc924a8c222be19013b89476: Contract (verified) (StakedAaveV3)
  • 0xa700b4eb416be35b2911fd5dee80678ff64ff6c9: Contract (verified) (InitializableImmutableAdminUpgradeabilityProxy) 👻
  • 0x366ae337897223aea70e3ebe1862219386f20593: Contract (verified) (ATokenWithDelegation)
  • 0xed42a7d8559a463722ca4bed50e0cc05a386b0e1: Contract (verified) (TransparentUpgradeableProxy) 👻
  • 0x28559c2f4b038b1e836fa419dccde7454d8fe215: Contract (verified) (CrossChainControllerUpgradeRev2)
  • 0x6cfbd2aa4691fc18b9c209bdd43dc3943c228fcf: Contract (verified) (SameChainAdapter)
  • 0xdabad81af85554e9ae636395611c58f7ec1aaec5: Contract (verified) (TransparentUpgradeableProxy) 👻
  • 0x7222182cb9c5320587b5148bf03eee107ad64578: Contract (verified) (PayloadsController)
  • 0x88d6d01e08d3e64513b15fd46528dbba7d755883: Contract (verified) (ArbAdapter)
  • 0x4dbd4fc535ac27206064b68ffcf827b0a60bab3f: Contract (verified) (TransparentUpgradeableProxy)
  • 0x5aed5f8a1e3607476f1f81c3d8fe126deb0afe94: Contract (verified) (Inbox)
  • 0x8315177ab297ba92a06054ce80a67ed4dbd7ed3a: Contract (verified) (TransparentUpgradeableProxy)
  • 0x1066cecc8880948fe55e427e94f1ff221d626591: Contract (verified) (Bridge)

Check: Check all touched contracts do not contain selfdestruct ✅

Warnings

Info