Skip to content

AZIP-7: Update slashing rules#16

Open
spalladino wants to merge 5 commits intoAztecProtocol:mainfrom
spalladino:spl/azip-7-slashing
Open

AZIP-7: Update slashing rules#16
spalladino wants to merge 5 commits intoAztecProtocol:mainfrom
spalladino:spl/azip-7-slashing

Conversation

@spalladino
Copy link
Copy Markdown

Discussion at #9

@spalladino spalladino requested a review from a team April 23, 2026 18:04
Comment thread AZIPs/azip-7-update_slashing.md Outdated
Comment thread AZIPs/azip-7-update_slashing.md Outdated

#### Attested Checkpoint Not Posted to L1

A proposer received sufficient attestations for a checkpoint but failed to submit it to L1, causing a 1-slot reorg (or 2-slots under pipelining as defined in AZIP-6). This offense MAY be conditional on it happening at least `CHECKPOINT_NOT_POSTED_REPETITION_THRESHOLD` times, which resets as soon a checkpoint is successfully posted by the proposer or after `CHECKPOINT_NOT_POSTED_RESET_WINDOW`. A missed checkpoint MAY not be considered when the L1 base fee at the missed slot exceeded `CHECKPOINT_NOT_POSTED_L1_CONGESTION_BASE_FEE_THRESHOLD`. This is a slot-based offense, and it only applies if the proposer received sufficient attestations within `CHECKPOINT_NOT_POSTED_ATTESTATION_WINDOW` before the end of its slot.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

link to azip-6.md

Comment thread AZIPs/azip-7-update_slashing.md Outdated
spalladino and others added 2 commits April 29, 2026 13:43
Co-authored-by: josh crites <jc@joshcrites.com>
Comment thread AZIPs/azip-7-update_slashing.md Outdated

#### Epoch Pruned replaced by Data Withholding

The _Epoch Pruned_ offense is removed in favor of checking _Data Withholding_ after a slot. After a checkpoint is published, nodes check if the data for all transactions in it is available. If not, the set of validators who attested to that slot is considered at fault for not making the data available to the network. Slashing MUST apply even if the epoch gets pruned, to prevent committees from striking side deals with specific provers by only releasing transaction data to them.
Copy link
Copy Markdown

@aminsammara aminsammara Apr 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean to say "slashing MUST apply even if the epoch is proved" instead of "epoch is pruned"? Or maybe it's not clear to me why the emphasis on "even if pruned"

Comment thread AZIPs/azip-7-update_slashing.md Outdated
| Parameter | Value | Description |
| -------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHECKPOINT_NOT_POSTED_REPETITION_THRESHOLD` | 2 | Number of repeated _Attested Checkpoint Not Posted to L1_ occurrences by the same proposer required to trigger slashing. Must be large enough to absorb isolated failures but small enough to deter griefing. |
| `CHECKPOINT_NOT_POSTED_L1_CONGESTION_BASE_FEE_THRESHOLD` | 300 gwei | L1 base fee above which an _Attested Checkpoint Not Posted to L1_ offense is suppressed, to avoid penalizing proposers who could not land their L1 tx under genuine L1 congestion. |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest changing this to some multiple of the ethPerFeeAsset in the FeeHeader of a previous checkpoint. My mind is not made up but the question I'm asking is: should validators be expected to post checkpoints at a loss?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Late to the party just saw that this is being raised on the discussion page.

Comment thread AZIPs/azip-7-update_slashing.md Outdated

#### Submitting Block Proposal After Checkpoint

A proposer sent a block proposal after the checkpoint proposal had already been issued for the same slot. Once a checkpoint is proposed, no further block proposals SHOULD be sent. The proposer MUST be penalized. This is a slot-based offense.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the SHOULD in no further block proposals SHOULD be sent. should be changed to MUST (ie. no further block proposals MUST be sent.) because IIUC there are no valid scenarios in which it is acceptable for a proposer to send a block proposal after the checkpoint proposal?

Comment thread AZIPs/azip-7-update_slashing.md Outdated

#### Epoch Pruned replaced by Data Withholding

The _Epoch Pruned_ offense is removed in favor of checking _Data Withholding_ after a slot. After a checkpoint is published, nodes check if the data for all transactions in it is available. If not, the set of validators who attested to that slot is considered at fault for not making the data available to the network. Slashing MUST apply even if the epoch gets pruned, to prevent committees from striking side deals with specific provers by only releasing transaction data to them.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is missing a negation (i.e. "Slashing MUST apply even if the epoch DOES NOT get pruned")

Comment thread AZIPs/azip-7-update_slashing.md Outdated
| Parameter | Value | Description |
| -------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHECKPOINT_NOT_POSTED_REPETITION_THRESHOLD` | 2 | Number of repeated _Attested Checkpoint Not Posted to L1_ occurrences by the same proposer required to trigger slashing. Must be large enough to absorb isolated failures but small enough to deter griefing. |
| `CHECKPOINT_NOT_POSTED_L1_CONGESTION_BASE_FEE_THRESHOLD` | 300 gwei | L1 base fee above which an _Attested Checkpoint Not Posted to L1_ offense is suppressed, to avoid penalizing proposers who could not land their L1 tx under genuine L1 congestion. |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if this should/could be running average over the last N blocks (times some multiplier) to account for changing gas landscape on L1?

spalladino and others added 2 commits April 30, 2026 14:52
Drops the offense and its associated parameters, rationale paragraph,
security consideration, and abstract/stakeholder mentions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Tighten "no further block proposals SHOULD be sent" to "MUST NOT" (alexghr).
- Clarify the data-withholding rule: slashing applies even when the epoch
  is successfully proved, since the side-deal scenario is precisely the
  one where a chosen prover received the data and the epoch was not
  pruned (aminsammara, alexghr).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants