Skip to content

Commit 819c328

Browse files
authored
refactor(slasher): rename ATTESTED_DESCENDANT_OF_INVALID -> PROPOSED_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS (#23468)
## Summary Closes [A-1073](https://linear.app/aztec-labs/issue/A-1073). Rename the slashing offence (and its config knob, env var, helm value, terraform variable, deploy script, README, ops docs) so the name spells out the exact condition: a descendant of a checkpoint that had **invalid (or insufficient) attestations**. The behaviour change itself lives in A-1072 — this PR is rename-only. - `OffenseType.ATTESTED_DESCENDANT_OF_INVALID` → `PROPOSED_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS` - Config field `slashAttestDescendantOfInvalidPenalty` → `slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty` - Env var `SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY` → `SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY` - Helm value, terraform variable, network defaults, deploy script - README + ops docs ## Test plan - `yarn build` (yarn-project) - `yarn format`, `yarn lint slasher stdlib foundation aztec-node` - `yarn workspace @aztec/slasher test` - `yarn workspace @aztec/stdlib test src/slashing` - `yarn workspace @aztec/stdlib test src/interfaces/aztec-node-admin.test.ts`
1 parent 7bbece1 commit 819c328

23 files changed

Lines changed: 74 additions & 60 deletions

File tree

docs/docs-operate/operators/sequencer-management/slashing-configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ SLASH_DATA_WITHHOLDING_PENALTY=0 # Set to >0 to enable
161161

162162
# Invalid attestations and blocks
163163
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY=2000000000000000000000 # 2000 tokens
164-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY=2000000000000000000000 # 2000 tokens
164+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY=2000000000000000000000 # 2000 tokens
165165
SLASH_INVALID_BLOCK_PENALTY=2000000000000000000000 # 2000 tokens
166166

167167
# Offense expiration

spartan/aztec-node/templates/_pod-template.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,9 @@ spec:
253253
- name: SLASH_DUPLICATE_ATTESTATION_PENALTY
254254
value: {{ .Values.node.slash.duplicateAttestationPenalty | quote }}
255255
{{- end }}
256-
{{- if .Values.node.slash.attestDescendantOfInvalidPenalty }}
257-
- name: SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY
258-
value: {{ .Values.node.slash.attestDescendantOfInvalidPenalty | quote }}
256+
{{- if .Values.node.slash.proposeDescendantOfCheckpointWithInvalidAttestationsPenalty }}
257+
- name: SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY
258+
value: {{ .Values.node.slash.proposeDescendantOfCheckpointWithInvalidAttestationsPenalty | quote }}
259259
{{- end }}
260260
{{- if .Values.node.slash.attestInvalidCheckpointProposalPenalty }}
261261
- name: SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY

spartan/aztec-node/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ node:
154154
invalidBlockPenalty: ""
155155
invalidCheckpointProposalPenalty: ""
156156
proposeInvalidAttestationsPenalty: ""
157-
attestDescendantOfInvalidPenalty: ""
157+
proposeDescendantOfCheckpointWithInvalidAttestationsPenalty: ""
158158
attestInvalidCheckpointProposalPenalty: ""
159159
unknownPenalty: ""
160160
# Slasher behavior configuration

spartan/environments/network-defaults.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ slasher: &slasher
131131
SLASH_INACTIVITY_PENALTY: 10e18
132132
# Penalty for proposing invalid attestations.
133133
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10e18
134-
# Penalty for attesting to a descendant of an invalid block.
135-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY: 10e18
134+
# Penalty for proposing a checkpoint that builds on an invalid checkpoint.
135+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10e18
136136
# Penalty for attesting to an invalid checkpoint proposal.
137137
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10e18
138138
# Penalty for proposing two different block or checkpoint proposal for the same position.
@@ -244,7 +244,7 @@ networks:
244244
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10e18
245245
SLASH_DUPLICATE_PROPOSAL_PENALTY: 10e18
246246
SLASH_DUPLICATE_ATTESTATION_PENALTY: 10e18
247-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY: 10e18
247+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10e18
248248
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10e18
249249
SLASH_UNKNOWN_PENALTY: 10e18
250250
SLASH_INVALID_BLOCK_PENALTY: 10e18
@@ -290,7 +290,7 @@ networks:
290290
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 10e18
291291
SLASH_DUPLICATE_PROPOSAL_PENALTY: 10e18
292292
SLASH_DUPLICATE_ATTESTATION_PENALTY: 10e18
293-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY: 10e18
293+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 10e18
294294
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 10e18
295295
SLASH_UNKNOWN_PENALTY: 10e18
296296
SLASH_INVALID_BLOCK_PENALTY: 10e18
@@ -350,7 +350,7 @@ networks:
350350
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY: 2000e18
351351
SLASH_DUPLICATE_PROPOSAL_PENALTY: 2000e18
352352
SLASH_DUPLICATE_ATTESTATION_PENALTY: 2000e18
353-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY: 2000e18
353+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY: 2000e18
354354
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY: 2000e18
355355
SLASH_UNKNOWN_PENALTY: 2000e18
356356
SLASH_INVALID_BLOCK_PENALTY: 2000e18

spartan/scripts/deploy_network.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ SLASH_DATA_WITHHOLDING_TOLERANCE_SLOTS = ${SLASH_DATA_WITHHOLDING_TOLERANCE_SLOT
591591
SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY = ${SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY:-null}
592592
SLASH_DUPLICATE_PROPOSAL_PENALTY = ${SLASH_DUPLICATE_PROPOSAL_PENALTY:-null}
593593
SLASH_DUPLICATE_ATTESTATION_PENALTY = ${SLASH_DUPLICATE_ATTESTATION_PENALTY:-null}
594-
SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY = ${SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY:-null}
594+
SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY = ${SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY:-null}
595595
SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY = ${SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY:-null}
596596
SLASH_UNKNOWN_PENALTY = ${SLASH_UNKNOWN_PENALTY:-null}
597597
SLASH_INVALID_BLOCK_PENALTY = ${SLASH_INVALID_BLOCK_PENALTY:-null}

spartan/terraform/deploy-aztec-infra/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ locals {
193193
"validator.slash.proposeInvalidAttestationsPenalty" = var.SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY
194194
"validator.slash.duplicateProposalPenalty" = var.SLASH_DUPLICATE_PROPOSAL_PENALTY
195195
"validator.slash.duplicateAttestationPenalty" = var.SLASH_DUPLICATE_ATTESTATION_PENALTY
196-
"validator.slash.attestDescendantOfInvalidPenalty" = var.SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY
197-
"validator.slash.attestInvalidCheckpointProposalPenalty" = var.SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY
196+
"validator.slash.proposeDescendantOfCheckpointWithInvalidAttestationsPenalty" = var.SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY
197+
"validator.slash.attestInvalidCheckpointProposalPenalty" = var.SLASH_ATTEST_INVALID_CHECKPOINT_PROPOSAL_PENALTY
198198
"validator.slash.unknownPenalty" = var.SLASH_UNKNOWN_PENALTY
199199
"validator.slash.invalidBlockPenalty" = var.SLASH_INVALID_BLOCK_PENALTY
200200
"validator.slash.invalidCheckpointProposalPenalty" = var.SLASH_INVALID_CHECKPOINT_PROPOSAL_PENALTY

spartan/terraform/deploy-aztec-infra/variables.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,8 @@ variable "SLASH_DUPLICATE_ATTESTATION_PENALTY" {
488488
nullable = true
489489
}
490490

491-
variable "SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY" {
492-
description = "The slash attest descendant of invalid penalty"
491+
variable "SLASH_PROPOSE_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS_PENALTY" {
492+
description = "The slash propose descendant of invalid penalty"
493493
type = string
494494
nullable = true
495495
}

yarn-project/aztec-node/src/aztec-node/server.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, AztecNodeDeb
775775
}
776776

777777
// We assume we want to slash for invalid attestations unless all max penalties are set to 0
778-
if (config.slashProposeInvalidAttestationsPenalty > 0n || config.slashAttestDescendantOfInvalidPenalty > 0n) {
778+
if (
779+
config.slashProposeInvalidAttestationsPenalty > 0n ||
780+
config.slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty > 0n
781+
) {
779782
attestationsBlockWatcher = new AttestationsBlockWatcher(archiver, epochCache, config);
780783
watchers.push(attestationsBlockWatcher);
781784
}

yarn-project/end-to-end/src/e2e_slashing/broadcasted_invalid_checkpoint_proposal_slash.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ describe('e2e_slashing_broadcasted_invalid_checkpoint_proposal_slash', () => {
236236
slashDuplicateProposalPenalty: 0n,
237237
slashDuplicateAttestationPenalty: 0n,
238238
slashProposeInvalidAttestationsPenalty: 0n,
239-
slashAttestDescendantOfInvalidPenalty: 0n,
239+
slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty: 0n,
240240
slashAttestInvalidCheckpointProposalPenalty: 0n,
241241
slashUnknownPenalty: 0n,
242242
slashSelfAllowed: true,

yarn-project/end-to-end/src/spartan/invalidate_blocks.test.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ describe('invalidate blocks test', () => {
4343
let node: AztecNode;
4444
let origMinTxsPerBlock: number | undefined;
4545
let origSlashProposeInvalidAttestationsPenalty: bigint | undefined;
46-
let origSlashAttestDescendantOfInvalidPenalty: bigint | undefined;
46+
let origSlashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty: bigint | undefined;
4747
const health = new ChainHealth(config.NAMESPACE, logger);
4848

4949
const waitForSequencersToApplyConfig = async (expected: Partial<AztecNodeAdminConfig>, description: string) => {
@@ -78,7 +78,8 @@ describe('invalidate blocks test', () => {
7878
skipCollectingAttestations: false,
7979
minTxsPerBlock: origMinTxsPerBlock,
8080
slashProposeInvalidAttestationsPenalty: origSlashProposeInvalidAttestationsPenalty,
81-
slashAttestDescendantOfInvalidPenalty: origSlashAttestDescendantOfInvalidPenalty,
81+
slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty:
82+
origSlashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty,
8283
};
8384
await updateSequencersConfig(config, restoreConfig);
8485
// Ensure config has actually propagated before the next scenario test starts
@@ -107,7 +108,8 @@ describe('invalidate blocks test', () => {
107108
const first = configs?.[0];
108109
origMinTxsPerBlock = first?.minTxsPerBlock ?? origMinTxsPerBlock;
109110
origSlashProposeInvalidAttestationsPenalty = first?.slashProposeInvalidAttestationsPenalty;
110-
origSlashAttestDescendantOfInvalidPenalty = first?.slashAttestDescendantOfInvalidPenalty;
111+
origSlashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty =
112+
first?.slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty;
111113

112114
const initialCheckpointNumber = (await monitor.run()).checkpointNumber;
113115

@@ -116,7 +118,7 @@ describe('invalidate blocks test', () => {
116118
await updateSequencersConfig(config, {
117119
skipCollectingAttestations: true,
118120
slashProposeInvalidAttestationsPenalty: 0n,
119-
slashAttestDescendantOfInvalidPenalty: 0n,
121+
slashProposeDescendantOfCheckpointWithInvalidAttestationsPenalty: 0n,
120122
minTxsPerBlock: 0,
121123
});
122124

0 commit comments

Comments
 (0)