Skip to content

(Circuit) Pin q_init points to constants#246

Merged
ConstanceBeguier merged 2 commits into
zsa1from
fix_q_init
May 5, 2026
Merged

(Circuit) Pin q_init points to constants#246
ConstanceBeguier merged 2 commits into
zsa1from
fix_q_init

Conversation

@ConstanceBeguier
Copy link
Copy Markdown
Collaborator

@ConstanceBeguier ConstanceBeguier commented Apr 30, 2026

This PR fixes an issue in the ZSA note commitment circuit where q_init_zec and q_init_zsa were previously treated as unconstrained witnesses. The fix pins these points to their expected constant values, ensuring they cannot be altered during proof generation.

@PaulLaux PaulLaux changed the title (Circuit) Pin q_init points to constants to prevent forgery (Circuit) Pin q_init points to constants and upstream merge May 1, 2026
@ConstanceBeguier ConstanceBeguier changed the title (Circuit) Pin q_init points to constants and upstream merge (Circuit) Pin q_init points to constants May 4, 2026
ConstanceBeguier added a commit to QED-it/halo2 that referenced this pull request May 4, 2026
This PR adds `NonIdentityPoint::new_from_constant` to enable creating non-identity points that are properly pinned to constants, which is required by the Orchard ZSA circuit ([Orchard PR](QED-it/orchard#246)).

More precisely, in the Orchard ZSA circuit, `q_init_zec` / `q_init_zsa` must be constrained to fixed constants, as they define the initial point `Q` of the Sinsemilla hash. If constructed via `NonIdentityPoint::new`, they remain unconstrained witnesses, allowing a prover to inject an arbitrary on-curve point and break commitment soundness.
@ConstanceBeguier ConstanceBeguier merged commit 59ce48d into zsa1 May 5, 2026
30 checks passed
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.

2 participants