Skip to main content

Module vote_proof

Module vote_proof 

Source
Expand description

Vote proof ZKP circuit (ZKP #2).

Proves that a vote is well-formed and authorized with respect to delegation and the vote commitment tree. The circuit verifies 12 conditions; all are fully constrained.

  • Condition 1: VAN Membership (Poseidon Merkle path, constrain_instance).
  • Condition 2: VAN Integrity (Poseidon hash).
  • Condition 3: Diversified Address Integrity (CommitIvk chain, constrain_equal).
  • Condition 4: Spend Authority (fixed-base mul + point add, constrain_instance).
  • Condition 5: VAN Nullifier Integrity (nested Poseidon, constrain_instance).
  • Condition 6: Proposal Authority Decrement (AddChip + range check).
  • Condition 7: New VAN Integrity (Poseidon hash, constrain_instance).
  • Condition 8: Shares Sum Correctness (AddChip, constrain_equal).
  • Condition 9: Shares Range (LookupRangeCheck, [0, 2^30)).
  • Condition 10: Shares Hash Integrity (Poseidon ConstantLength<16> over 16 blinded share commitments; output flows to condition 12).
  • Condition 11: Encryption Integrity (ECC variable-base mul, constrain_equal).
  • Condition 12: Vote Commitment Integrity (Poseidon ConstantLength<5>, constrain_instance).

Re-exports§

pub use crate::circuit::elgamal::base_to_scalar;
pub use crate::circuit::elgamal::elgamal_encrypt;
pub use crate::circuit::elgamal::spend_auth_g_affine;
pub use circuit::domain_van_nullifier;
pub use circuit::poseidon_hash_2;
pub use circuit::share_commitment;
pub use circuit::shares_hash;
pub use circuit::van_integrity_hash;
pub use circuit::van_nullifier_hash;
pub use circuit::vote_commitment_hash;
pub use circuit::Circuit;
pub use circuit::Config;
pub use circuit::Instance;
pub use circuit::K;
pub use circuit::DOMAIN_VAN;
pub use circuit::DOMAIN_VC;
pub use circuit::VOTE_COMM_TREE_DEPTH;
pub use builder::build_vote_proof_from_delegation;
pub use builder::derive_share_blind;
pub use builder::derive_share_randomness;
pub use builder::EncryptedShareOutput;
pub use builder::VoteProofBuildError;
pub use builder::VoteProofBundle;
pub use prove::create_vote_proof;
pub use prove::verify_vote_proof;
pub use prove::verify_vote_proof_raw;
pub use prove::vote_proof_params;
pub use prove::vote_proof_proving_key;

Modules§

builder
Vote proof builder (ZKP #2).
circuit
The Vote Proof circuit implementation (ZKP #2).
prove
Real Halo2 prove/verify for the vote proof circuit (ZKP #2).