AZIP-TBD: Compensate Validators Slashed During the Excused Post-v5 Upgrade Window #57
Replies: 3 comments 2 replies
|
all slashes were visible on slashveto.me directly after the v5 upgrade, while dashtec was late with updating as amin says in the postmortem no strong opinion either way but this might provide some context ;) |
|
Amin here, I wrote the incident report referenced in this discussion. On the decision itself: Aztec Labs currently does not participate in Governance and does not vote. Whether or not Governance should compensate validators is up to the sequencers, their delegators and token holders. On "official protocol guidance": No forum posts, migration guides, release notes and/or repository defaults from Aztec Labs should be construed as official protocol guidance. Aztec Labs is one of many contributors to the Aztec Network protocol. The protocol is the deployed contracts and what they do, and they are always voted on by Governance. On the numbers: The total slashed amount is 370,000 AZTEC as reported by @SrWilbur and not 182,000. I will revise the incident report. If Governance concludes compensation is warranted, Aztec Labs is happy to consult on the implementation. An upcoming ACD call would be a reasonable place to work out the path forward. |
|
@koenmtb1 Following Amin's suggestion above, I'd like to bring this proposal to an upcoming ACD call to work out the path forward. Would the August 13 call work? I I've also requested to join the governance Signal group — request pending. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Preamble
aziptitledescriptionauthordiscussions-tostatuscategorycreatedAbstract
During the v5 upgrade (executed on L1 on 2026-07-14 at 20:26 UTC), operators were told in the official migration thread that a 1-week grace period would apply before inactivity slashing. The actual deployed default was ~24 hours: the 7-day setting existed but never shipped in v5. Between 2026-07-19 and 2026-07-20, twelve slashing rounds (148–159) executed 185 slash events against 142 validators, for a total of 370,000 AZTEC — all for inactivity during the window operators had been told was safe. The SlashVeto Council recognized the miscommunication and approved a blanket veto (council issue 10), which saved the then-pending rounds; the already-executed rounds were beyond its powers. This proposal completes the remedy for the executed portion: a one-time transfer from the Protocol Treasury (~0.073% of its balance) returning the slashed amounts to the affected validators' registered withdrawer addresses. The slashed funds were never burned — they were internally re-routed to the rollup's reward pool — so this restores the status quo ante at negligible net cost to the protocol.
Impacted Stakeholders
Sequencers — 142 validator addresses across many independent operators (large pools and solo operators alike) lost 2,000–6,000 AZTEC each. Compensation restores their stake position. Sequencers not affected see no change to their stake or rewards going forward; the reward-pool subsidy created by the slashed funds is small and transient.
Tokenholders — The transfer spends 370,000 AZTEC (~0.073%) of the Protocol Treasury's 505,000,000 AZTEC. No tokens are minted; total supply is unchanged. Tokenholders gain from restored operator confidence: the credible message that following official instructions will not be economically punished lowers the risk premium of running (and delegating to) Aztec validators.
Aztec Labs / Core Contributors — The root cause was publicly acknowledged in Aztec Labs' official incident report: the 7-day grace period shipped only on the v4 release branch and was never forward-ported to the v5 line, and no QA process verified the deployed defaults (one was stood up only after the incident). A protocol-level remedy resolves the incident without requiring any party to fund compensation privately, while AZIP-TBD: Enshrine Post-Upgrade Grace Periods On-Chain (companion proposal; link to be added once its discussion thread is up) prevents recurrence.
Motivation
Three facts, all verifiable, make the executed slashes qualitatively different from ordinary inactivity:
v5upgrade is executed on Ethereum." The post was never edited or corrected — the first public acknowledgment of the discrepancy came in the official incident report of 2026-07-22, three days after the last round had executed. The 2026-07-09 mainnet announcement pointed operators to that thread as the reference for operator impact.spartan/environments/network-defaults.yml,mainnetblock, tagv5.0.0) produced an effective grace of ~24 hours. Aztec Labs publicly confirmed the root cause in its official incident report (2026-07-22): the grace period had been raised to 7 days in March on the v4 release branch (shipped in v4.1.0) but was "never forward-ported to the main development branch", so v5.0.0 shipped with the original 24-hour default. The same report confirms there was no internal alerting on slash votes ("we learned of the issue from affected operators") and that the main community dashboard only began tracking v5 three days after the upgrade, "so the main tool operators use to check slashing activity showed nothing during the execution delay period". The report notes the deployed default was public in the repository; the official guidance operators were directed to stated otherwise, and no channel corrected it before execution.Two further points from the incident report bear directly on this proposal. First, its remediation list — a patch restoring the intended defaults, a QA process for release configuration, internal slashing monitors — is entirely preventive: it offers no remedy for the slashes already executed, which is precisely the gap this proposal closes. Second, the report estimates the impact at "approximately 182,000 AZTEC" without stating a methodology; the figure used throughout this proposal — 370,000 AZTEC — is the sum of the 185 executed slash events of rounds 148–159 at 2,000 AZTEC each, reproducible address by address from L1 event data (see the attached CSV).
The protocol's existing mechanisms therefore produced an arbitrary split: validators whose offenses landed in rounds that executed before 10:43 UTC on July 20 lost their stake; validators in identical circumstances whose rounds happened to sit later in the queue lost nothing. The split is a function of round timing, not of conduct. Governance is the only mechanism that can remove it.
An important factual point: the slashed tokens were not burned. On-chain, a slash performs no ERC-20 transfer; it reduces the validator's internal stake accounting and initiates a withdrawal from the Governance contract with the rollup instance as recipient. The 370,000 AZTEC ended up in the v5 rollup contract, where they subsidize the sequencer/prover reward pool. Total supply is unchanged at 10,350,000,000. Compensation from the treasury therefore does not leak value out of the protocol; it corrects an accidental internal redistribution from the slashed validators to the general reward pool.
Specification
The key words "MUST", "MUST NOT", and "MAY" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
Eligibility criterion. A slash event is eligible if and only if:
This criterion, applied at the time of writing, yields exactly the 185 events of rounds 148–159 (each offense epoch lies in the range 576–650, inside the excused window). It is deliberately parametric rather than a round list: the streak rule in force (
SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD: 2, with non-committee epochs skipped and not resetting the streak) allows an offense executed later to have its first qualifying leg inside the excused window (two such derived offenses are currently pending in rounds 191 and 194,council issue 12). If any such offense executes before the compensation payload is frozen, it becomes eligible under the same criterion.Amounts. Each eligible event corresponds to 2,000 AZTEC (the deployed
SLASH_AMOUNT_SMALL). Compensation per validator address is2,000 × (number of eligible executed events). The full per-address table, reproducible from L1 data alone, is attached to this discussion aseligible-slashes.csv(to be moved toassets/in the formal PR).Recipient. For each affected validator (attester address), the compensation MUST be sent to the withdrawer address registered for that validator in the rollup's staking registry at a snapshot block declared in the payload, not to the attester hot key. Validators exited or ejected between the incident and execution remain eligible via their last registered withdrawer.
Mechanism. A single governance payload that, for each eligible withdrawer, calls
ProtocolTreasury.relay(AZTEC_token, transfer(withdrawer_i, amount_i), 0)— the treasury at0x662de311f94bdbb571d95b5909e9cc6a25a6802a(balance 505,000,000 AZTEC), owned by the Governance contract (0x1102471eb3378fee427121c9efcea452e4b6b75e). Total: 370,000 AZTEC as of writing (+4,000 maximum if the two derived offenses execute), i.e. ~0.073% of the treasury.Timing constraint (inherited from the treasury contract).
ProtocolTreasury.relayreverts unless (a)block.timestamp ≥ GATED_UNTIL(2026-11-13 14:00 UTC) and (b) the executing proposal was created after the treasury activation timestamp (2026-11-20 05:00 UTC). The on-chain proposal for this AZIP therefore MUST be created after 2026-11-20, giving an earliest execution around early December 2026. This AZIP is published now so that eligibility, amounts and design are settled and socially ratified long before the payload window opens.Rationale
Backwards Compatibility
Fully backwards compatible. The payload performs ERC-20 transfers from the treasury; no protocol parameter, contract code, or consensus rule changes.
Economics Considerations
Slashed/RoundExecutedevents on L1 and the committee history exposed bygetSlashTargetCommitteeson the SlashingProposer (0x8a36b8f2ca71d8d8bd98e03ebf8b4d0939daf0ba).Security Considerations
ProtocolTreasury.relaycalls wrapping ERC-20transfers: no state-changing calls into the rollup, staking, or slashing systems, no approvals, no delegatecalls.GATED_UNTIL) are enforced by theProtocolTreasurycontract itself; a mis-timed proposal fails closed withGateIsClosed.Copyright Waiver
Copyright and related rights waived via CC0.
Annex:
eligible-slashes.csv— 142 addresses / 185 events / 370,000 AZTEC. eligible-slashes.csvAll reactions