Remote GSM Launch: Arbitrum
01Summary
Launch GHO Stability Mechanism (GSM) on Arbitrum using the new RemoteGSM architecture. The proposal mints and bridges 50M GHO from Ethereum to seed the Arbitrum GhoReserve, deploys a stataUSDC GSM with 25M reserve limit and 20M exposure cap on Arbitrum, and standardizes CCIP lane capacity across all supported networks (Arbitrum, Avalanche, Base, Gnosis, Mantle, Plasma, X-Layer, Ink, Monad) to 5M GHO max transfer with 1,000 GHO/sec refill rate.
- Type
- protocol addition
Key changes
- Mint 50M GHO via dedicated GhoDirectFacilitator on Ethereum and bridge to Arbitrum via CCIP to seed local GhoReserve(high)
- Deploy and wire up Arbitrum GSM with stataUSDC, 25M reserve limit, 20M exposure cap, 0% mint fee and 0.10% burn fee(high)
- Normalize GHO CCIP lane capacity across 9 networks to uniform 5M GHO max transfer with 1,000 GHO/sec refill rate(high)
- Increase bridge capacity by 50M across all touched networks(high)
- Grant LIMIT_MANAGER_ROLE on Arbitrum GhoReserve to Arbitrum Risk Council(medium)
- Grant SWAP_FREEZER_ROLE to OracleSwapFreezer and Arbitrum executor(medium)
- Register GSM in GsmRegistry and grant CONFIGURATOR_ROLE to GhoGsmSteward(medium)
Notable concerns
- Complex multi-part execution with strict ordering requirements across Ethereum and Arbitrum; Arbitrum Part 1 must execute before CCIP message arrives or manual retry required
- Temporary rate limiter boosts on Arbitrum lane during seed transfer; must be restored to defaults in same payloads
- Execution depends on ~1 second refill delay between Ethereum Part 1 and Part 2 (Part 2 reverts if executed within same second)
- Manual post-execution registration of OracleSwapFreezer via SAFE required after all payloads execute
- GSM deployment tied to specific oracle pricing dependency via OracleSwapFreezer mechanism
Generated by Kvorum
02Description
Simple Summary
Launch GHO GSM on Arbitrum (stataUSDC) using the new RemoteGSM architecture. The proposal mints 50M GHO via a dedicated GhoDirectFacilitator on Ethereum, bridges it to Arbitrum over CCIP to seed the local GhoReserve, wires up the Arbitrum GSM, and normalizes the GHO CCIP lane capacity across every supported network to a uniform 5M GHO max transfer with a 1,000 GHO/sec refill rate.
Motivation
The RemoteGSM upgrade refactors GHO's stability mechanism into a three-layer design (GhoDirectFacilitator → GhoReserve → GSM), removing the prior requirement that each GSM be its own GHO facilitator and unlocking GSM deployment on L2s, where GHO cannot be minted directly. Arbitrum is the first L2 target: deploying USDC GSM there extends GHO's stability surface to where a large share of L2 stablecoin liquidity sits, while keeping mint and bridge control under DAO governance.
Specification
Fund the Arbitrum GHO Reserve
On Ethereum:
- Temporarily raise the Arbitrum-lane outbound rate limiter to fit a one-off 50M GHO transfer.
- Register an Arbitrum-scoped
GhoDirectFacilitatoron the GHO token with a 50M bucket capacity. - Mint 50M GHO into the payload and bridge it to Arbitrum via
AaveGhoCcipBridge(configuring the Arbitrum destination lane first). - Increase bridge limit by 50M.
On Arbitrum:
- Raise the CCIP token-pool facilitator bucket capacity by 50M.
- Temporarily raise the Ethereum-lane inbound rate limiter to receive the 50M GHO.
- On receipt, the
Collectorforwards the 50M GHO to theGhoReserve.
Wire up Arbitrum GSM (stataUSDC)
- Point it at the
GhoReserve, enroll it as an entity with a 25M GHO reserve limit. - Grant
SWAP_FREEZER_ROLEto the asset'sOracleSwapFreezerand to the Arbitrum executor. - Register it in the
GsmRegistryand grantCONFIGURATOR_ROLEto theGhoGsmSteward. - Set the initial exposure cap to 20M of the underlying (6 decimals) and attach the 0% mint / 0.10% burn fee strategy.
LIMIT_MANAGER_ROLE on the Arbitrum GhoReserve is granted to the Arbitrum Risk Council.
Normalize GHO CCIP lane capacity across networks
On both ends of every GHO lane touched by this proposal — Arbitrum, Avalanche, Base, Gnosis, Mantle, Plasma, X-Layer, Ink and Monad — set inbound and outbound CCIP rate-limit configs to canonical defaults: capacity 5,000,000 GHO max transfer, refill 1,000 GHO/sec. The temporary boosts on the Arbitrum lane used for the 50M seed transfer are restored to these defaults in the same payloads. All L2 facilitator bucket capacity limits are increased by 50M.
- Increase bridge capacity by 50M across all networks.
Execution Order
Execution order (same pattern as the Plasma launch, #879):
- Ethereum Part 1 — raises the bridge limit and the Eth→Arb outbound rate limiter.
- Ethereum Part 2 — mints 50M GHO via the new GhoDirectFacilitator and bridges it. Reverts if executed within the same second as Part 1 (the outbound bucket needs ~1s to refill).
- Arbitrum Part 1 must execute before the CCIP message arrives, otherwise the inbound rate limit / facilitator bucket rejects the mint and the delivery has to be manually retried on https://ccip.chain.link/.
- Arbitrum Part 2 — reverts until the bridged GHO reaches the Collector.
- The remaining network payloads (Avalanche, Base, Gnosis, Ink, Mantle, Monad, Plasma, X-Layer) are independent and can execute any time.
- Manually register OracleSwapFreezer via SAFE post execution.
References
- Implementation: AaveV3Ethereum_Part 1, AaveV3Ethereum_Part 2, AaveV3Arbitrum_Part 1, AaveV3Arbitrum_Part 2, AaveV3Avalanche, AaveV3Base, AaveV3Gnosis, AaveV3Mantle, AaveV3Ink, AaveV3Plasma, AaveV3XLayer, AaveV3Monad
- Tests: AaveV3Ethereum_Part 1, AaveV3Ethereum_Part 2, AaveV3Arbitrum_Part 1, AaveV3Arbitrum_Part 2, AaveV3Avalanche, AaveV3Base, AaveV3Gnosis, AaveV3Mantle, AaveV3Ink, AaveV3Plasma, AaveV3XLayer, AaveV3Monad
- Snapshot
- Discussion
Copyright
Copyright and related rights waived via CC0.
03Mismatch analysis
The decoded on-chain actions consist of only two low-level `execute()` fallback calls to two different executor/payload contract addresses, both reported on Ethereum (chain id 0x1). No parameters, function selectors, or internal calls are decoded beyond the generic fallback dispatch. This is consistent with a payload-based governance pattern (Aave-style) where the actual multi-step logic (minting, bridging, facilitator registration, rate-limit updates, role grants, fee strategy setup, and the cross-chain normalization on Arbitrum, Avalanche, Base, Gnosis, Mantle, Plasma, X-Layer, Ink, and Monad) lives inside the payload contract's own `execute()` function, which is not decoded here. Given that only two generic fallback calls are visible, I cannot independently verify most of the detailed prose claims (50M mint amount, 25M reserve limit, 20M exposure cap, 5M/1000 GHO CCIP normalization, role grants, etc.) against calldata parameters, because the decoded data doesn't expose them. There is no evidence of contradiction — the two executor addresses are plausible payload contracts as referenced by the description's implementation links (Part 1 and Part 2 on Ethereum), and no target mismatch, unexpected recipient, or value inconsistency is visible. Given the extremely limited decoding granularity, I mark confidence as low: the description could be accurate, but the calldata provided doesn't give enough detail to fully confirm the numeric or architectural specifics. I do not flag this as a severe or material discrepancy since there's no positive evidence of wrongdoing, only insufficient decoding depth, which per instructions should default to low confidence rather than raising alarms speculatively. Overall assessment is 'consistent' given no observed contradiction, with low confidence due to shallow calldata decoding limiting full verification of amounts, roles, and cross-chain parameters described in the proposal text.
Discrepancies
- lowomitted in description
The decoded calldata only shows two generic execute() fallback calls on Ethereum (chain id 0x1) with no further decoded parameters. The description details extensive multi-chain actions (Ethereum, Arbitrum, Avalanche, Base, Gnosis, Mantle, Plasma, X-Layer, Ink, Monad) including specific facilitator registrations, rate limiter changes, role grants, and fee strategy configuration, none of which are visible in the decoded actions. This could simply reflect that the payload contracts are opaque proxies whose internal logic isn't decoded, but it prevents verifying most of the described specifics.
Generated by Kvorum
04Actions
- Target
- 0x014d…df3b
- Value
- 0 wei
- Function
- fallback()
- Arguments
{}- Calldata
- Target
- 0x07eb…1f42
- Value
- 0 wei
- Function
- fallback()
- Arguments
{}- Calldata
05Tally
Summed from votes
06Voters
No votes recorded yet.
07Forum
No forum thread is confidently linked to this proposal.