- Simulation: https://dashboard.tenderly.co/me/simulator/b43d96e0-92da-4d70-92f2-c36a30fd2d51
- state: Executed
- creator: 0x99C7A4A4Ab99882C422eF777b182eBda204D5B02
- maximumAccessLevelRequired: 1
- payloads: [{"chain":"1","accessLevel":1,"payloadsController":"0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5","payloadId":48}]
- createdAt: 24/01/2024, 13:21:59
- queuedAt: 28/01/2024, 14:01:35
- executedAt: 28/01/2024, 14:01:47, timestamp: 1706450507, block: 19105498
Proposal text
This AIP proposes the deployment of the GHO Stability Module (GSM), a system facilitating the conversion between GHO and two governance-accepted stablecoins, USDC and USDT, at a predetermined ratio.
The GSM has undergone thorough iterations of design, development, testing, and implementation with Aave Labs driving this process and actively seeking community feedback. Additionally, the security aspect was carefully addressed through collaboration with DAO service providers SigmaPrime and Certora for code reviews. Furthermore, an extra layer of security was added by commissioning an independent review from a security researcher (Emanuele Ricci @stermi).
Following extensive community discussion and multiple phases of Aave DAO governance, this AIP suggests deploying two GSM contracts for seamless conversions between GHO and USDC as well as GHO and USDT.
The GHO Stability Module (GSM) is a contract designed to facilitate conversions between two tokens with its primary purpose being to help further maintain GHO's peg. The module allows swaps between GHO and other governance-accepted stablecoins, offering a variety of functionalities that make it paramount in the fields of security and risk management.
Summarizing the functionality offered by the GHO Stability Module (GSM), here is a list of these features and their planned implementation for this proposal:
- Exposure Cap: Denominated in token units, it limits exposure to the exogenous asset.
- Price Strategies: Utilizing a fixed price strategy with a 1:1 ratio for stablecoins.
- Fee Strategies: Employing a flat basis point (bps) approach, differentiated by direction (sell/buy).
- Last Resort Liquidation: Aave DAO is the exclusive entity granted with the role of last resort liquidation, empowering it to take control of GSM funds in worst-case scenarios.
- Swap Freeze: Aave DAO and a chainlink-automated keeper contract have the authority to freeze the swap functionality. The chainlink-automated keeper contract bases its actions on the price of the exogenous asset, freezing if the price is outside the range and unfreezing if inside the range.
- Capital Allocation: Supporting this feature by allowing ERC4626 assets as underlying assets. This enables redirecting the yield generated by the ERC4626 asset, while residing in the GSM contract, to the GHO Treasury.
The proposed payload entails the comprehensive activation of GSM USDC and GSM USDT, involving the following steps:
- Incorporate GSM USDC and GSM USDT as facilitators of the GHO Token on Ethereum.
- Adjust the Fee Strategy for both GSMs to implement a 0.2% flat fee for both directions (buy/sell).
- Add both GSMs to the GSM Registry.
- Designate OracleSwapFreezer contracts and Aave DAO as SwapFreezer entities in each GSM contract, respectively.
- Activate these OracleSwapFreezer contracts as keepers of the Aave DAO through AaveRobot with a funding of 80 LINK for each.
The table below outlines the initially proposed risk parameters for each GSM contract, as approved through the snapshot:
GSM USDC
Parameter | Value |
---|---|
Underlying Price Range for Swap Freeze | [0.99 - 1.01] |
Underlying Price Range for Swap Unfreeze | [0.995 - 1.005] |
Buy Fee | 0.2% |
Sell Fee | 0.2% |
Exposure Cap | 500,000 USDC |
Facilitator Bucket Capacity | 500,000 GHO |
Swap Active | True |
GSM USDT
Parameter | Value |
---|---|
Underlying Price Range for Swap Freeze | [0.99 - 1.01] |
Underlying Price Range for Swap Unfreeze | [0.995 - 1.005] |
Buy Fee | 0.2% |
Sell Fee | 0.2% |
Exposure Cap | 500,000 USDT |
Facilitator Bucket Capacity | 500,000 GHO |
Swap Active | True |
- Implementation: Gho
- Tests: Gho
- Snapshot
- Discussion
- GSM Repository
- GSM Audit Reports
Copyright and related rights waived via CC0.
KeeperRegistry at 0x02777053d6764996e594c3E88AF1D58D5363a2e6
@@ `s_upkeep` key `"2651260633509968244842245718659958660539758109819220392919944208741153930322".lastKeeper` @@
- 0xf12571de5a310008f1b7490f1aaf52de11325cc8
+ 0x083b4cc0db892160dc5928066d294ba8d4220830
TransparentUpgradeableProxy at 0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7
👻 with implementation Governance at 0x58BcB647C4beFf253B4B6996c62F737B783f2cDd
@@ `_proposals` key `"8".state` @@
- 2268261771377090260730918125382679725402947843
+ 2268261771377090260730918125382679725402947844
TransparentUpgradeableProxy at 0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5
👻 with implementation PayloadsController at 0x7222182cB9c5320587b5148BF03eeE107AD64578
@@ Slot `0x5f3ffac152518418b730c1b4427b48de47a050e582434504c9ffd15088f0d196` @@
- "0x00000000000065b0e6bf010199c7a4a4ab99882c422ef777b182ebda204d5b02"
+ "0x0065b65e4b0065b0e6bf020199c7a4a4ab99882c422ef777b182ebda204d5b02"
TransparentUpgradeableProxy at 0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1
👻 with implementation unknown contract name at 0x28559c2F4B038b1E836fA419DCcDe7454d8Fe215
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000002` @@
- "0x0000000000000000000000000000000000000000000000000000000000000086"
+ "0x0000000000000000000000000000000000000000000000000000000000000087"
@@ Slot `0x0000000000000000000000000000000000000000000000000000000000000003` @@
- "0x0000000000000000000000000000000000000000000000000000000000000086"
+ "0x0000000000000000000000000000000000000000000000000000000000000087"
@@ Slot `0x41fd249c6e1a37d3f6a9d7904d4558c8d3b395c7391bec4510af0b81020f168a` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x0000000000000000000000000000000000000000000000000000000000000001"
@@ Slot `0x47425570fed9a4c2884b5afa639963430f6e1097e4c1e345b1e6572a9e37db46` @@
- "0x0000000000000000000000000000000000000000000000000000000000000000"
+ "0x0000000000000000000000000000000000000000000000000000000000000001"
- TransparentUpgradeableProxy at
0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1
👻 with implementation unknown contract name at0x28559c2F4B038b1E836fA419DCcDe7454d8Fe215
EnvelopeRegistered(envelopeId: 0xb6c4f49aa25ba9166a39ea30e0a9fe1e55ca15cd4a72b9942fef1f205c30982d, envelope: [object Object])
TransactionForwardingAttempted(transactionId: 0x3ad1e8812ef3f5999ef737654405a253ffed7c33a4369261950bc829adbfbc0f, envelopeId: 0xb6c4f49aa25ba9166a39ea30e0a9fe1e55ca15cd4a72b9942fef1f205c30982d, encodedTransaction: 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000860000000000000000000000009aee0b04504cef83a65ac3f0e838d0593bcb2bc7000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000065b2609b, destinationChainId: 1, bridgeAdapter: 0x118dfd5418890c0332042ab05173db4a2c1d283c, destinationBridgeAdapter: 0x118dfd5418890c0332042ab05173db4a2c1d283c, adapterSuccessful: true, returnData: 0x000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000000)
- TransparentUpgradeableProxy at
0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5
👻 with implementation PayloadsController at0x7222182cB9c5320587b5148BF03eeE107AD64578
PayloadQueued(payloadId: 48)
PayloadExecutionMessageReceived(originSender: 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7, originChainId: 1, delivered: true, message: 0x000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000065b2609b, reason: 0x)
- TransparentUpgradeableProxy at
0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7
👻 with implementation Governance at0x58BcB647C4beFf253B4B6996c62F737B783f2cDd
PayloadSent(proposalId: 8, payloadId: 48, payloadsController: 0xdabad81af85554e9ae636395611c58f7ec1aaec5, chainId: 1, payloadNumberOnProposal: 0, numberOfPayloadsOnProposal: 1)
ProposalExecuted(proposalId: 8)
- GovernanceChainRobotKeeper at
0x011824f238AEE05329213d5Ae029e899e5412343
ActionSucceeded(id: 8, action: 1)
- KeeperRegistry at
0x02777053d6764996e594c3E88AF1D58D5363a2e6
UpkeepPerformed(id: 2651260633509968244842245718659958660539758109819220392919944208741153930322, success: true, from: 0x083b4cc0db892160dc5928066d294ba8d4220830, payment: 0, performData: 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001)
- 0x083b4cc0db892160dc5928066d294ba8d4220830: EOA (verification not applicable)
- 0x02777053d6764996e594c3e88af1d58d5363a2e6: Contract (verified) (KeeperRegistry)
- 0x169e633a2d1e6c10dd91238ba11c4a708dfef37c: Contract (verified) (EACAggregatorProxy)
- 0x785433d8b06d77d68df6be63944742130a4530d1: Contract (verified) (AccessControlledOffchainAggregator)
- 0xdc530d9457755926550b59e8eccdae7624181557: Contract (verified) (EACAggregatorProxy) 👻
- 0xbba12740de905707251525477bad74985dec46d2: Contract (verified) (AccessControlledOffchainAggregator)
- 0x011824f238aee05329213d5ae029e899e5412343: Contract (verified) (GovernanceChainRobotKeeper)
- 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) 👻
- 0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1: Contract (verified) (CrossChainController)
- 0x118dfd5418890c0332042ab05173db4a2c1d283c: Contract (verified) (SameChainAdapter)
- 0xdabad81af85554e9ae636395611c58f7ec1aaec5: Contract (verified) (TransparentUpgradeableProxy) 👻
- 0x7222182cb9c5320587b5148bf03eee107ad64578: Contract (verified) (PayloadsController)
- 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7: Contract (with DELEGATECALL)👻
- 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9: Contract (with DELEGATECALL)👻
- 0x4da27a545c0c5b758a6ba100e3a049001de870f5: Contract (with DELEGATECALL)👻
- 0x0fe58fe1caa69951dc924a8c222be19013b89476: Contract (with DELEGATECALL)
- 0xa700b4eb416be35b2911fd5dee80678ff64ff6c9: Contract (with DELEGATECALL)👻
- 0xed42a7d8559a463722ca4bed50e0cc05a386b0e1: Contract (with DELEGATECALL)👻
- 0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1: Contract (with DELEGATECALL)
- 0xdabad81af85554e9ae636395611c58f7ec1aaec5: Contract (with DELEGATECALL)👻
- 0x083b4cc0db892160dc5928066d294ba8d4220830: EOA
- 0x02777053d6764996e594c3e88af1d58d5363a2e6: Contract (looks safe)
- 0x169e633a2d1e6c10dd91238ba11c4a708dfef37c: Contract (looks safe)
- 0x785433d8b06d77d68df6be63944742130a4530d1: Contract (looks safe)
- 0xdc530d9457755926550b59e8eccdae7624181557: Contract (looks safe)👻
- 0xbba12740de905707251525477bad74985dec46d2: Contract (looks safe)
- 0x011824f238aee05329213d5ae029e899e5412343: Contract (looks safe)
- 0x58bcb647c4beff253b4b6996c62f737b783f2cdd: Contract (looks safe)
- 0xa198fac58e02a5c5f8f7e877895d50cfa9ad1e04: Contract (looks safe)👻
- 0x5d4aa78b08bc7c530e21bf7447988b1be7991322: Contract (looks safe)
- 0x366ae337897223aea70e3ebe1862219386f20593: Contract (looks safe)
- 0x118dfd5418890c0332042ab05173db4a2c1d283c: Contract (looks safe)
- 0x7222182cb9c5320587b5148bf03eee107ad64578: Contract (looks safe)