Skip to content

chore: Backport to v4 staging#21714

Merged
aminsammara merged 5 commits into
v4from
backport-to-v4-staging
Mar 18, 2026
Merged

chore: Backport to v4 staging#21714
aminsammara merged 5 commits into
v4from
backport-to-v4-staging

Conversation

@ludamad

@ludamad ludamad commented Mar 18, 2026

Copy link
Copy Markdown
Collaborator

.

PhilWindle and others added 3 commits March 18, 2026 02:09
…entire tag (A-686) (#21713)

## Summary
Backport of #21687
to v4.

During reorg, `deleteLogs` was deleting the entire log entry for a tag
instead of only removing logs from the rolled-back blocks. This caused
logs from earlier blocks to be lost.

## Cherry-pick conflicts
The automatic cherry-pick failed due to API differences between `next`
and `v4`:
- `next` uses `store.addProposedBlock(block)` (singular) — v4 uses
`store.addProposedBlocks([block])` (plural, takes array)
- `next` uses a helper `addProposedBlocks(store, ...)` — adapted to call
`store.addProposedBlocks(...)` directly in v4

## Commit structure
1. **Cherry-pick with conflicts** — raw cherry-pick preserving conflict
markers
2. **Conflict resolution** — adapted `addProposedBlock` →
`addProposedBlocks` API calls

Fixes https://linear.app/aztec-labs/issue/A-686

ClaudeBox log: https://claudebox.work/s/1f9640fef77e1838?run=2
## Summary

Testnet validators were detecting inactive validators and starting
slashing rounds, but all votes were computed as zero because the
per-offense penalty (`10e18` = 10 TST) was far below the L1 contract's
minimum slash threshold (`100000e18` = 100,000 TST).

This PR sets all testnet slashing penalty values to `100000e18` to match
`AZTEC_SLASH_AMOUNT_SMALL`, which is the minimum amount needed for a
vote to register as 1 slash unit.

## Root Cause

The vote computation in `getSlashUnitsForAmount()`
(`yarn-project/stdlib/src/slashing/tally.ts`) checks if the accumulated
offense amount reaches `slashingAmounts[0]` (=
`AZTEC_SLASH_AMOUNT_SMALL`). Since `10e18 < 100000e18`, the function
always returned 0 slash units, causing all votes to be skipped.

## BigInt Parsing Verification

- The penalty values flow through env vars as strings (e.g.
`"100000e18"`)
- `bigintConfigHelper` in `foundation/src/config/index.ts` handles
scientific notation losslessly using bigint arithmetic (not float64)
- The parsing regex correctly handles `100000e18` → `BigInt("100000") *
10n ** 18n` = exact result

## Changes

- `spartan/environments/network-defaults.yml`: Updated all testnet
`SLASH_*_PENALTY` values from `10e18` to `100000e18`


ClaudeBox log: https://claudebox.work/s/a2a0d7830a3d8ce3?run=2

---------

Co-authored-by: ludamad <adam.domurad@gmail.com>
Co-authored-by: Amin Sammara <84764772+aminsammara@users.noreply.github.com>
@aminsammara aminsammara changed the title Backport to v4 staging chore: Backport to v4 staging Mar 18, 2026
@aminsammara aminsammara merged commit 408ff4d into v4 Mar 18, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants