Skip to content

feat: merge-train/spartan#22758

Open
AztecBot wants to merge 7 commits intonextfrom
merge-train/spartan
Open

feat: merge-train/spartan#22758
AztecBot wants to merge 7 commits intonextfrom
merge-train/spartan

Conversation

@AztecBot
Copy link
Copy Markdown
Collaborator

@AztecBot AztecBot commented Apr 24, 2026

BEGIN_COMMIT_OVERRIDE
feat(parity): thread prover_id through parity circuits (#22750)
test: refactor n_tps to use WorkerWallet (#22757)
chore: grafana dashboards as config-maps (#22720)
feat: track skipped processed txs (#22756)
test: add nightly 10TPS test (#22760)
END_COMMIT_OVERRIDE

## Motivation

The parity circuits (parity-base, parity-root) were the only non-kernel
server-side circuits whose public inputs did not commit to `prover_id`.
Every other rollup circuit carries `prover_id` as sybil protection — it
stops a single prover from submitting the same proof under multiple
identities. This PR closes that gap so parity is no longer the outlier.

## Approach

`prover_id` is added to `ParityPublicInputs` and
`ParityBasePrivateInputs`. The parity-base circuit emits `prover_id`
publicly from a new private input; parity-root enforces that every child
shares the same `prover_id` (mirroring the existing `vk_tree_root`
consistency loop) and propagates it. Each of the three
`block_root_*_first_rollup` variants now calls
`validate_parity_root(..., constants.prover_id)`, which asserts the
parity root's `prover_id` equals the block's. On the TypeScript side the
orchestrator threads `CheckpointConstantData.proverId` into
`ParityBasePrivateInputs`.

## Changes

- **rollup-lib (Noir)**: added `prover_id` field to
`ParityPublicInputs`, wired it through `parity_base` and `parity_root`,
extended `validate_parity_root` and all three block-root-first callers
- **rollup-lib tests**: wired the orphaned `parity/tests` module into
compilation, fixed `parity_base.execute(...)` →
`parity_base::execute(...)` syntax, added `inconsistent_prover_ids`
negative test, refreshed Poseidon fixture values stale from a prior
domain-separator change
- **stdlib**: mirrored `proverId: Fr` into `ParityPublicInputs` and
`ParityBasePrivateInputs`, plus factory updates
- **noir-protocol-circuits-types**: updated Noir↔TS mappers for the new
field
- **prover-client**: threaded `this.constants.proverId` into `new
ParityBasePrivateInputs(...)` in the checkpoint proving state; updated
`bb_prover_parity` test to share a single `proverId` across all base
proofs (otherwise parity-root consistency would fail the happy path)
- **ivc-integration**: added `prover_id` to the inline Noir input
literal in the base-parity benchmark test

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
alexghr added 3 commits April 24, 2026 14:27
Related to A-943

1. use worker wallet
2. handle anchor blocks going away and recreate tx
3. handle txs mining in "the past" (ie mined in block at index > 0 in a
slot)
4. bump fees
This PR removes the `copy-dashboard` script, instead the helm chart now
renders the files as config maps labelled so that Grafana auto-discovers
them.

This makes the terraform plan significantly smaller because it doesn't
have to render the dashboard json. :)
@alexghr alexghr requested a review from charlielye as a code owner April 24, 2026 13:07
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.

3 participants