Skip to content

Pass public inputs from smart contract or validate them before verifying the CRISP proof #945

Description

@ctrlc03

We need to clarify which inputs are required by the CRISP proof verifier on-chain and how each of them should be provided or retrieved from the existing contracts. The goal is to ensure consistency between the proof generation off-chain and the verification logic on-chain.

Public inputs:

  • prev_ct → Already stored in the Validator contract inside the voteSlots mapping. It can be retrieved directly from the slot associated with the voter.
  • params → Static BFV parameters. These are deployed with the program, and in principle, they could be hardcoded inside the circuit for efficiency.
  • public_key → Published for every E3 request. We should check if it can be retrieved on-chain or if only a commitment should be stored instead.
  • merkle_root → Can be retrieved from the Validator contract.
  • slot_address → Passed explicitly with the proof.
  • is_first_vote → Can be derived on-chain: if the slot is empty, pass true; otherwise, false.

This issue depends on: #983

Metadata

Metadata

Assignees

Labels

crispRelated to the crisp example app

Type

No fields configured for Task.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions