You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AZIPs/template.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,6 +60,10 @@ The `discussions-to` header will indicate the URL of the GitHub Discussions thre
60
60
61
61
-*Abstract is a multi-sentence (short paragraph) technical summary. This should be a very terse and human-readable version of the specification section. Someone should be able to read only the abstract to get the gist of what this specification does.*
62
62
63
+
## Impacted Stakeholders
64
+
65
+
-*For each stakeholder group affected by this proposal, write a paragraph describing the impact and summarizing any relevant discussions held with that group. Consider: Oracles, Wallets, Block Explorers, RPCs, Intent Bridges, Indexing Protocols, Messaging Bridges, Analytics Platforms, Liquidity Provisioning, Market Making, Co-Snarks, Mobile Wallets, AMMs, Lending Markets, NFTs, Extension Wallets, Token Bridges, Fintech Apps, Gaming, Escrow, Stablecoins, Prediction Markets, Sequencers, Provers.*
66
+
63
67
## Motivation
64
68
65
69
-*A motivation section is required for all AZIPs. It should clearly explain why the existing protocol specification is inadequate to address the problem that the AZIP solves.*
Copy file name to clipboardExpand all lines: AZUPs/template.md
-14Lines changed: 0 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,20 +81,6 @@ The `discussions-to` header will indicate the URL of the GitHub Discussions thre
81
81
82
82
-*Discuss security implications, potential risks, and how they are being addressed. Include links to the relevant code repository, key contracts or modules, and any verified deployments on explorers so reviewers can inspect the logic themselves.*
Copy file name to clipboardExpand all lines: azup-process.md
+15-11Lines changed: 15 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,13 +53,15 @@ Once the payload is deployed, Core Contributors publish a forum post following t
53
53
54
54
Signaling is an onchain mechanism for sequencers to express coordinated support for a specific upgrade candidate before a formal proposal is created. Sequencers signal support for payloads by configuring their nodes to signal for a specific payload address. A signal can be made for each slot that a sequencer is selected to propose checkpoints. Signaling is separate from checkpoint proposals. Each successful signal increments that payload's support count for the current round.
55
55
56
-
A payload reaches signaling quorum when it accumulates at least **600 signals within a 1,000-slot round** (60% of the round's total possible signals). Payloads that meet this threshold are eligible to be promoted into formal proposals. Once a payload reaches quorum, it must be promoted to a formal proposal within 5 rounds (`LIFETIME_IN_ROUNDS`in `GovernanceProposer.sol`). If not promoted in time, the quorum expires and signals must be gathered again.
56
+
A payload reaches signaling quorum when it accumulates at least **`QUORUM_SIZE` signals within a `ROUND_SIZE`-slot round** (`GovernanceProposer.sol`). Payloads that meet this threshold are eligible to be promoted into formal proposals. Once a payload reaches quorum, it must be promoted to a formal proposal within `LIFETIME_IN_ROUNDS`(`GovernanceProposer.sol`). If not promoted in time, the quorum expires and signals must be gathered again.
57
57
58
58
For more on how signaling works, see [sequencer documentation](https://docs.aztec.network/network/operation/sequencer_management/creating_and_voting_on_proposals).
59
59
60
60
### Alternative Proposal Path
61
61
62
-
In addition to the sequencer signaling path, the Governance contract supports an alternative proposal mechanism that bypasses sequencer signaling. This path requires the proposer to lock a significant amount of tokens for an extended period. Once submitted, the proposal follows the same voting and execution process as any other proposal. This mechanism exists as a safeguard in case sequencer signaling is unable to function as intended.
62
+
In addition to the sequencer signaling path, the Governance contract supports an alternative proposal mechanism (`proposeWithLock`) that bypasses sequencer signaling. This path requires the proposer to lock `proposeConfig.lockAmount` tokens for `proposeConfig.lockDelay` (both from `getConfiguration()` in `Governance.sol`). Once submitted, the proposal follows the same voting and execution process as any other proposal. This mechanism exists as a safeguard in case sequencer signaling is unable to function as intended.
63
+
64
+
The rollup does **not** automatically vote "yea" on proposals submitted via `proposeWithLock`. Sequencers and tokenholders must actively vote to pass these proposals.
63
65
64
66
## Voting
65
67
@@ -79,11 +81,11 @@ At this point, the payload transitions from a “signaled upgrade candidate” t
79
81
80
82
### Preparing for the Vote
81
83
82
-
Following proposal creation, there is a **3-day voting delay** in which the proposal is pending and votes cannot yet be cast. This delay is designed to:
84
+
Following proposal creation, there is a **`votingDelay`** period in which the proposal is pending and votes cannot yet be cast. This delay is designed to:
83
85
84
86
- Give the community time to review the payload and its implications.
85
87
- Allow node operators to assess operational impact.
86
-
- Allow tokenholders to stake and/or deposit into governance to participate in the upcoming vote. Staking (for running a sequencer) deposits tokens into governance by default and delegates voting power to the rollup (which always votes "yea"). Depositing into governance without staking allows tokenholders to vote directly.
88
+
- Allow tokenholders to stake and/or deposit into governance to participate in the upcoming vote. Staking (for running a sequencer) deposits tokens into governance by default and delegates voting power to the rollup (which automatically votes "yea" on proposals from the `GovernanceProposer`). Depositing into governance without staking allows tokenholders to vote directly.
87
89
- Provide sequencers with an opportunity to adjust their delegation if they want to vote differently from the default rollup behavior.
88
90
89
91
**Custom Voting via Delegation to a Controlled Address**
@@ -94,13 +96,13 @@ See [Custom Voting](https://docs.aztec.network/network/operation/sequencer_manag
94
96
95
97
### Voting
96
98
97
-
After the waiting period expires, the proposal enters a 7-day voting period. At the moment voting begins:
99
+
After the waiting period expires, the proposal enters the `votingDuration` voting period. At the moment voting begins:
98
100
99
101
- The system snapshots voting power derived from staked tokens.
100
102
- The delegation state at that time determines who holds voting rights for the proposal.
101
103
- Any delegation changes made *after* voting has started do not affect voting power for that active proposal.
102
104
103
-
To participate in voting, eligible tokenholders can stake and lock their tokens to vote. All staked tokens will be locked for at least 38 days to ensure the proposal can be executed before the voter exits.
105
+
To participate in voting, eligible tokenholders can stake and lock their tokens to vote. All staked tokens will be locked for the minimum lock period (`votingDelay + votingDuration + executionDelay` from `getConfiguration()` in `Governance.sol`) to ensure the proposal can be executed before the voter exits.
104
106
105
107
**Default Voting via Rollup Delegation**
106
108
@@ -112,15 +114,17 @@ By default, tokenholders staked as sequencers delegate their voting power to the
112
114
113
115
A proposal is approved only if it satisfies all of the following:
114
116
115
-
-**Quorum:** At least **20%** of the total voting power in governance must participate.
116
-
-**Supermajority:** The difference between yea and nay votes must be at least **33%**, meaning at least **66%** of votes cast must be yea.
117
-
-**Minimum Votes:** At least **100,000,000 tokens** must be deposited in governance for any vote to pass.
117
+
-**Quorum:** At least **`quorum`** of the total voting power in governance must participate.
118
+
-**Supermajority:** The difference between yea and nay votes must meet the **`requiredYeaMargin`** threshold.
119
+
-**Minimum Votes:** At least **`minimumVotes`** tokens must be deposited in governance for any vote to pass.
120
+
121
+
*(All fields from `getConfiguration()` in `Governance.sol`)*
118
122
119
123
If these thresholds are not met, the proposal fails and does not proceed to execution.
120
124
121
125
### Execution
122
126
123
-
When a proposal receives sufficient support, it passes. After passing, there's another mandatory 30-day delay before the proposal becomes executable.
127
+
When a proposal receives sufficient support, it passes. After passing, there's another mandatory `executionDelay` (`getConfiguration()` in `Governance.sol`) before the proposal becomes executable.
124
128
125
129
This delay serves several purposes:
126
130
@@ -130,7 +134,7 @@ This delay serves several purposes:
130
134
131
135
In practice, operators may run multiple node versions during this window (for example, one on the current version and one on the upcoming version) to ensure a smooth transition.
132
136
133
-
Once executable, anyone can trigger execution. See [Executing Proposals](https://docs.aztec.network/network/operation/sequencer_management/creating_and_voting_on_proposals#executing-proposals) for instructions on how to execute proposals. If not executed within the grace period (`getGracePeriod()` in `Governance.sol`), the proposal expires.
137
+
Once executable, anyone can trigger execution. See [Executing Proposals](https://docs.aztec.network/network/operation/sequencer_management/creating_and_voting_on_proposals#executing-proposals) for instructions on how to execute proposals. If not executed within the `gracePeriod` (`getConfiguration()` in `Governance.sol`), the proposal expires.
Copy file name to clipboardExpand all lines: governance-manual.md
+16-10Lines changed: 16 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ The purpose of Aztec governance is to remove control over the network from the h
11
11
-**AZIPs** – Offchain, version-controlled design documents that specify proposed changes to Aztec’s protocols, standards, or governance processes, serving as the canonical record of what should change and why.
12
12
-**AZUPs** – Onchain upgrade bundles that package one or more AZIPs, plus their associated payload, into a concrete proposal for execution on the Aztec Network.
13
13
-**Payloads** – Series of onchain commands that execute against protocol contracts (or update contract references) detailed by an approved AZUP.
14
-
-**Signaling** – The process by which sequencers express support for an AZUP’s payload onchain; once a payload receives signals in at least 600 of 1,000 eligible slots, it is promoted to a formal onchain proposal.
14
+
-**Signaling** – The process by which sequencers express support for an AZUP’s payload onchain; once a payload receives at least `QUORUM_SIZE` signals within a `ROUND_SIZE`-slot round (`GovernanceProposer.sol`), it is promoted to a formal onchain proposal.
15
15
-**Onchain Proposals** – Governance objects created once a payload meets sequencer signaling thresholds, defining a specific upgrade that tokenholders can vote to accept or reject.
16
16
-**Voting** – The onchain decision process in which eligible tokenholders lock tokens to cast “yea” or “nay” votes on proposals, with quorum and supermajority requirements determining whether an upgrade is authorized to execute.
17
17
@@ -21,7 +21,7 @@ The purpose of Aztec governance is to remove control over the network from the h
21
21
22
22
Sequencers in Aztec are block producers and core governance actors. By running a sequencer node and staking into a rollup, they both build blocks and help steer protocol upgrades.
23
23
24
-
Before AZUPs are presented to tokenholders for voting, they must gather enough support from sequencers. Sequencers vote on the support of AZUPs via onchain signaling. 600 of 1,000 signals are needed from sequencers to advance an AZUP’s payload into the voting phase. This means sequencers collectively decide which AZUPs reach the formal voting stage.
24
+
Before AZUPs are presented to tokenholders for voting, they must gather enough support from sequencers. Sequencers vote on the support of AZUPs via onchain signaling. `QUORUM_SIZE` of `ROUND_SIZE` signals are needed from sequencers (`GovernanceProposer.sol`) to advance an AZUP’s payload into the voting phase. This means sequencers collectively decide which AZUPs reach the formal voting stage.
25
25
26
26
A sequencer’s staked capital is its voting power. By default, their stake is delegated through the Governance Staking Escrow (GSE) to the rollup contract, which automatically votes “yea” on AZUPs that came through the sequencer signaling path. This means sequencers passively support all AZUPs unless they explicitly delegate away from the rollup to an address they control and vote directly via the GSE.
27
27
@@ -41,9 +41,9 @@ If you would like to join the governance process and participate in the calls, j
41
41
42
42
## Tokenholders
43
43
44
-
Tokenholders play a direct role in Aztec governance by staking their tokens and participating in onchain votes. Any tokenholder may participate in governance votes by connecting their wallet to the governance dashboard, depositing into the Governance contract, and locking tokens for at least 38 days to ensure proposals can be executed before they exit.
44
+
Tokenholders play a direct role in Aztec governance by staking their tokens and participating in onchain votes. Any tokenholder may participate in governance votes by connecting their wallet to the governance dashboard, depositing into the Governance contract, and locking tokens for the minimum lock period (`votingDelay + votingDuration + executionDelay` in `Governance.sol`) to ensure proposals can be executed before they exit.
45
45
46
-
Once a proposal is created by sequencers, all eligible stakers can vote during a 7-day voting window, following a fixed timeline that includes an initial waiting period, a voting period, an execution delay, and a final grace period for execution. For a proposal to pass, at least 20% of the total voting power in governance must participate, at least 66% of votes cast must be yea, and at least 100,000,000 tokens must be deposited in governance.
46
+
Once a proposal is created by sequencers, all eligible stakers can vote during the `votingDuration`window, following a fixed timeline that includes an initial waiting period, a voting period, an execution delay, and a final grace period for execution. For a proposal to pass, the `quorum`of total voting power must participate, the `requiredYeaMargin`must be met, and at least `minimumVotes` tokens must be deposited in governance (all fields from `getConfiguration()` in `Governance.sol`).
47
47
48
48
Aztec Labs and Aztec Foundation teams, as well as investors, are excluded from staking and governance for the first 12 months (including the TGE vote), with their tokens locked for 1 year and then vesting over the following 2 years.
49
49
@@ -61,7 +61,7 @@ The current AZIP process is defined by the [AZIP Process](azip-process.md).
61
61
62
62
AZUPs (AZtec Upgrade Proposals) bundle the implementations of one or more AZIPs that Core Contributors have approved for inclusion in the Aztec Network. Once an AZUP is scheduled, its onchain payload is deployed to mainnet, where it is submitted to sequencers for signaling.
63
63
64
-
Once sequencers have signaled support for the deployed payload, anyone can promote it to a formal onchain governance proposal. After a 3-day review delay, the proposal enters a 7-day voting window where staked tokenholders vote “yea” or “nay”. If quorum, supermajority, and participation thresholds are met, the proposal passes. After a final 30-day execution delay, the proposal can then be executed by anyone within the grace period (`getGracePeriod()` in `Governance.sol`), implementing the AZUP onchain. If not executed within the grace period, the proposal expires.
64
+
Once sequencers have signaled support for the deployed payload, anyone can promote it to a formal onchain governance proposal. After a `votingDelay` review period, the proposal enters a `votingDuration` voting window where staked tokenholders vote “yea” or “nay”. If quorum, supermajority, and participation thresholds are met, the proposal passes. After an `executionDelay`, the proposal can then be executed by anyone within the `gracePeriod` (all fields from `getConfiguration()` in `Governance.sol`), implementing the AZUP onchain. If not executed within the grace period, the proposal expires.
65
65
66
66
### Process
67
67
@@ -71,17 +71,23 @@ The current AZUP process is defined by the [AZUP Process](azup-process.md).
C --> D["Sequencer Signaling\n(QUORUM_SIZE/ROUND_SIZE)"]
75
75
D --> E["Proposal Created"]
76
-
E --> F["Voting Delay\n(3 days)"]
77
-
F --> G["Voting Period\n(7 days)"]
78
-
G --> H{"Quorum 20%\nSupermajority 66%\nMin 100M tokens"}
79
-
H -- Pass --> I["Execution Delay\n(30 days)"]
76
+
E --> F["Voting Delay\n(votingDelay)"]
77
+
F --> G["Voting Period\n(votingDuration)"]
78
+
G --> H{"quorum\nrequiredYeaMargin\nminimumVotes"}
79
+
H -- Pass --> I["Execution Delay\n(executionDelay)"]
80
80
H -- Fail --> J["Failed"]
81
81
I --> K["Execution\n(Grace Period)"]
82
82
K --> L["Upgrade Live"]
83
83
```
84
84
85
+
## Updating the Governance Process
86
+
87
+
The governance process documents (this manual, the AZIP process, and the AZUP process) can be updated without going through a formal AZIP. Proposed changes should be raised as a thread in [GitHub Discussions](https://github.com/AztecProtocol/governance/discussions) so the community can review and provide feedback. Once rough consensus is reached among Core Contributors, the change is applied via a pull request to the governance repository.
88
+
89
+
Substantive changes to the process — such as introducing new AZIP categories, changing how proposals advance, or altering the role of governance bodies — should be discussed broadly before being merged. Editorial fixes, clarifications, and minor updates do not require a formal discussion thread.
90
+
85
91
## Disputes and Disagreements
86
92
87
93
Disagreements are a natural part of governance. The AZIP and AZUP processes are designed to surface conflicts early and resolve them through transparent, structured mechanisms.
0 commit comments