pub mod arithmetic;
pub mod ecc;
pub mod logic;
pub mod permutation;
pub mod range;
use crate::fft::Evaluations;
use crate::transcript::TranscriptProtocol;
use merlin::Transcript;
#[derive(Debug)]
pub struct ProverKey {
pub arithmetic: arithmetic::ProverKey,
pub logic: logic::ProverKey,
pub range: range::ProverKey,
pub ecc: ecc::ProverKey,
pub permutation: permutation::ProverKey,
pub(crate) v_h_coset_4n: Evaluations,
}
#[derive(Debug)]
pub struct VerifierKey {
pub n: usize,
pub arithmetic: arithmetic::VerifierKey,
pub logic: logic::VerifierKey,
pub range: range::VerifierKey,
pub ecc: ecc::VerifierKey,
pub permutation: permutation::VerifierKey,
}
impl VerifierKey {
pub(crate) fn seed_transcript(&self, transcript: &mut Transcript) {
transcript.append_commitment(b"q_m", &self.arithmetic.q_m);
transcript.append_commitment(b"q_l", &self.arithmetic.q_l);
transcript.append_commitment(b"q_r", &self.arithmetic.q_r);
transcript.append_commitment(b"q_o", &self.arithmetic.q_o);
transcript.append_commitment(b"q_c", &self.arithmetic.q_c);
transcript.append_commitment(b"q_4", &self.arithmetic.q_4);
transcript.append_commitment(b"q_arith", &self.arithmetic.q_arith);
transcript.append_commitment(b"q_range", &self.range.q_range);
transcript.append_commitment(b"q_logic", &self.logic.q_logic);
transcript.append_commitment(b"left_sigma", &self.permutation.left_sigma);
transcript.append_commitment(b"right_sigma", &self.permutation.right_sigma);
transcript.append_commitment(b"out_sigma", &self.permutation.out_sigma);
transcript.append_commitment(b"fourth_sigma", &self.permutation.fourth_sigma);
transcript.circuit_domain_sep(self.n as u64);
}
}
impl ProverKey {
pub(crate) fn v_h_coset_4n(&self) -> &Evaluations {
&self.v_h_coset_4n
}
}