Skip to content

fiat-shamir: use duplex sponge#223

Merged
TomWambsgans merged 2 commits into
mainfrom
fiat-shamir-duplex-challenger
May 15, 2026
Merged

fiat-shamir: use duplex sponge#223
TomWambsgans merged 2 commits into
mainfrom
fiat-shamir-duplex-challenger

Conversation

@TomWambsgans
Copy link
Copy Markdown
Collaborator

Goal: benefit from existing security proof.
We way come back to a more "lean-VM friendly" Fiat-Shamir construction in the future, if we find time to formally prove its security.

@TomWambsgans TomWambsgans merged commit 8fbe00b into main May 15, 2026
3 checks passed
@TomWambsgans TomWambsgans deleted the fiat-shamir-duplex-challenger branch May 15, 2026 11:10
TomWambsgans added a commit that referenced this pull request May 19, 2026
Brings main into the goldilocks branch. The bulk of the work was porting
main's PR #223 (duplex-sponge Fiat-Shamir) to the Goldilocks field, since
goldilocks never adopted it.

Conflict resolutions of note:
- AIR trait: kept main's `n_shift_columns` / shift-columns-first layout;
  dropped the `low_degree` feature (goldilocks removed it — the Goldilocks
  poseidon8 AIR uses direct x^7 constraints, not `low_degree_block`).
- extension_op/air.rs: cubic (DIM=3) layout reordered shift-columns-first.
- Duplex Challenger ported to Goldilocks (WIDTH=8, RATE=4, CAPACITY=4);
  added a `Permutation` trait to the `symetric` crate.
- New `poseidon8_permute` precompile: AIR (flag_permute column,
  outputs_left/right, mutex constraints), trace gen, ISA, simplifier.
- Duplex `fiat_shamir.py` rewritten for DIGEST_LEN=4.
- poseidon8 MAX_LOG_N_ROWS lowered 21 -> 20: the permute variant widened
  the table by 5 columns, which would otherwise exceed the WHIR commitment
  surface cap.

cargo fmt + clippy clean; full `cargo test --workspace` passes;
`recursion --n 2` aggregation runs end-to-end.

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.

1 participant