Core API
CircomState
This object stores the states required to generate a ZK proof.
Example of usage:
// Instantiate CircomStatelet mut circom_state = CircomState::new();// Initialize with keyslet wasm_path = "./multiplier2.wasm";let zkey_path = "./multiplier2_final.zkey";let setup_res = circom_state.initialize(zkey_path, wasm_path);// Prepare inputslet mut inputs = HashMap::new();let a = 3;let b = 5;inputs.insert("a".to_string(), vec![BigInt::from(a)]);inputs.insert("b".to_string(), vec![BigInt::from(b)]);// Proof generationlet generate_proof_res = circom_state.generate_proof(inputs);// Proof verificationlet (serialized_proof, serialized_inputs) = generate_proof_res.unwrap();let verify_res = circom_state.verify_proof(serialized_proof, serialized_inputs);
new
Creates and returns a new instance of the struct.
pub fn new() -> Self
initialize
Initializes the instance with the given zkey_path
and wasm_path
.
pub fn initialize( &mut self, zkey_path: &str, wasm_path: &str) -> Result<(), MoproError>
generate_proof
Generates a proof based on the provided circuit inputs.
pub fn generate_proof( &mut self, inputs: CircuitInputs,) -> Result<(SerializableProof, SerializableInputs), MoproError>
verify_proof
Verifies the provided proof against the given inputs.
pub fn verify_proof( &self, serialized_proof: SerializableProof, serialized_inputs: SerializableInputs,) -> Result<bool, MoproError>
generate_proof_static
Generates a proof based on the provided circuit inputs.
Note: The function is different from generate_proof
.
In this function, the zkey and wasm are precompiled during cargo build
.
You can specify the mopro-config.toml to build the default circuits.
pub fn generate_proof_static( inputs: CircuitInputs,) -> Result<(SerializableProof, SerializableInputs), MoproError>
verify_proof_static
Verifies the provided proof against the given inputs.
Note: The function is different from verify_proof
.
In this function, the zkey and wasm are precompiled during cargo build
.
You can specify the mopro-config.toml to build the default circuits.
pub fn verify_proof_static( serialized_proof: SerializableProof, serialized_inputs: SerializableInputs,) -> Result<bool, MoproError>