Transfer Rollup Ownership to a Gating Contract #2
Replies: 2 comments
-
|
Thank you for this swift proposal! There are two important hedges from my side:
here is the AZIP draft i prepared for reference (it was not created with the knowledge of the two governance discussions here): SummaryThis AZIP describes a path to improve the decentralization and immutability of the current and future Aztec rollups, with the secondary objective of reaching stage 2 on L2BEAT. MotivationDecentralization is a core value of the Aztec Network. The network launched with ‘Day-1 Decentralization’ because perfecting this trait is a precondition for its neutrality and credibility as a privacy-focused rollup. ProblemThe currently deployed ‘Alpha’ version of the rollup system combines an unnecessarily long governance execution delay of 30d with practical mutability vectors in the rollup smart contract. This creates sluggish upgrades on the one hand and short exit windows for users on the other. The purpose of execution delays is creating an exit window in mutable rollup contexts. If Aztec rollups would include immutable exit guarantees, execution delays could decrease. MutabilityGovernance has access to configuration that can permanently affect the liveness of the rollup:
Governance DelayThe 'Alpha' upgrade increased the GoalMaking Aztec rollup exits fully immutable provides all users a perpetual exit guarantee, even under comparably short governance execution delays <30d. Proposed ChangesShort term solution for the 'Alpha' rollup
Governance would still be able to access the Long term solution for all future rollups
|
Beta Was this translation helpful? Give feedback.
-
|
in direct reply to the OP, i am commenting on the table here:
main changes:
The high-level constraint here is: The escape hatch must be immutable from the Governance perspective. This includes hardening of all the fee change validations that would be able to block L2 transactions, proposing or proving. It also includes immutability of the AZTEC token because it is used as bond and fee asset. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This proposal transfers ownership of the current rollup from direct governance control to a "Gating Contract" that classifies rollup owner functions into two tiers:
It is also suggested that all future rollups use this Gating Contract mechanism.
Background: How Governance Controls the Rollup Today
Governance owns the Registry, which tracks the canonical rollup instance, and the GSE (Governance Staking Escrow), which manages validator stake. When governance approves a proposal — for example, one that registers a new rollup version — it executes a payload contract that calls
Registry.addRollup()andGSE.addRollup(). Further, Governance is the owner of each individual Rollup.Today, the only delay between an approved proposal and its execution of any change to a rollup it owns is the governance execution delay (the timelock phase built into the Governance contract's proposal lifecycle). This means the rollup shares the same delay as every other governance action — parameter changes, treasury operations, etc. There is no separate, dedicated protection for rollup upgrades.
The governance proposal lifecycle is:
The
executionDelayphase is the only timelock today. It applies uniformly to all governance actions.Rollup Owner Functions
The rollup exposes the following owner-restricted functions. This proposal classifies each into one of two tiers:
Critical (60-day timelock)
These functions can change the trust assumptions of the chain or redirect control entirely. Users must have time to evaluate and exit before they take effect.
updateEscapeHatchtransferOwnershipOperational (immediate, rate-constrained)
These functions tune economic and operational parameters. They need to be adjustable without a 60-day wait, but should be bounded so that a single governance action cannot make a drastic change.
setRewardConfigupdateManaTargetsetProvingCostPerManasetSlashersetLocalEjectionThresholdupdateStakingQueueConfigMotivation
L2Beat's classification framework requires that users have roughly 30 days to react and still get an exit transaction included before a governance-triggered rollup change takes effect. If inclusion and exit can pessimistically take up to 20 days, a 60-day timelock still leaves ~40 days of real reaction time — well above the threshold.
The current approach of encoding this protection in the global governance execution delay is problematic because it couples rollup upgrade safety to the pacing of all governance actions, including sequencer withdrawals (whose delay formula includes
executionDelay). A Gating Contract decouples these concerns:Specification
A gating contract SHALL be deployed that becomes the owner of the current rollup. Further, all future canonical rollups SHALL be owned by a similar gating contract. The gating contract classifies incoming calls into two tiers:
Critical-tier calls (those listed in the Critical table above) MUST be routed through a timelock with a minimum delay of 60 days (5,184,000 seconds). The flow for critical actions:
Operational-tier calls (those listed in the Operational table above) MAY be executed immediately after governance approval, but the gating contract MUST enforce per-parameter rate-of-change constraints. If a proposed parameter change exceeds the allowed bound, the call MUST revert.
The gating contract MUST be configured such that only governance (via approved proposals) can trigger either tier, and no actor can bypass the 60-day delay for critical-tier calls or the rate constraints for operational-tier calls.
No change to voting mechanics: This proposal does not modify voting thresholds, quorum requirements, or any other governance approval mechanism.
Beta Was this translation helpful? Give feedback.
All reactions