From 1b07509eaa4e87cf1fa3e777aa70647aa412553e Mon Sep 17 00:00:00 2001 From: Gregor Date: Tue, 5 Mar 2024 13:33:08 +0100 Subject: [PATCH] add state accessors --- src/base/snark0.ml | 4 ++++ src/base/snark_intf.ml | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/base/snark0.ml b/src/base/snark0.ml index 9521fad9f..202aad44f 100644 --- a/src/base/snark0.ml +++ b/src/base/snark0.ml @@ -724,6 +724,10 @@ module Run = struct ~eval_constraints:false ~num_inputs:0 ~next_auxiliary:(ref 0) ~with_witness:false ~stack:[] ~is_running:false () ) + let get_state () = !state + + let set_state s = state := s + let dump () = Run_state.dump !state let in_prover () : bool = Run_state.has_witness !state diff --git a/src/base/snark_intf.ml b/src/base/snark_intf.ml index 877296038..242dac132 100644 --- a/src/base/snark_intf.ml +++ b/src/base/snark_intf.ml @@ -1122,6 +1122,11 @@ module type Run_basic = sig (** The finite field over which the R1CS operates. *) type field + (* get and set the internal Run_state.t *) + val get_state : unit -> field Run_state.t + + val set_state : field Run_state.t -> unit + module Bigint : sig include Snarky_intf.Bigint_intf.Extended with type field := field @@ -1381,9 +1386,9 @@ module type Run_basic = sig -> Proof_inputs.t type ('input_var, 'return_var, 'result) manual_callbacks = - { run_circuit : 'a. ('input_var -> unit -> 'a) -> 'a - ; finish_computation : 'return_var -> 'result - } + { run_circuit : 'a. ('input_var -> unit -> 'a) -> 'a + ; finish_computation : 'return_var -> 'result + } (** Callback version of [constraint_system]. *) val constraint_system_manual : @@ -1397,7 +1402,10 @@ module type Run_basic = sig -> input_typ:('input_var, 'input_value) Typ.t -> return_typ:('return_var, 'return_value) Typ.t -> 'input_value - -> ('input_var, 'return_var, Proof_inputs.t * 'return_value) manual_callbacks + -> ( 'input_var + , 'return_var + , Proof_inputs.t * 'return_value ) + manual_callbacks (** Generate the public input vector for a given statement. *) val generate_public_input :