provekit-common 1.0.0

Common types and utilities for the ProveKit proving system
Documentation
use {
    crate::{
        noir_proof_scheme::NoirProofScheme, utils::serde_jsonify, whir_r1cs::WhirR1CSScheme, R1CS,
    },
    noirc_abi::Abi,
    serde::{Deserialize, Serialize},
};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Verifier {
    pub r1cs:             R1CS,
    pub whir_for_witness: Option<WhirR1CSScheme>,
    #[serde(with = "serde_jsonify")]
    pub abi:              Abi,
}

impl Verifier {
    #[must_use]
    pub fn from_noir_proof_scheme(scheme: NoirProofScheme) -> Self {
        Self {
            r1cs:             scheme.r1cs,
            whir_for_witness: Some(scheme.whir_for_witness),
            abi:              scheme.witness_generator.abi.clone(),
        }
    }
}