Function arrabiata::interpreter::run_ivc

source ·
pub fn run_ivc<E: InterpreterEnv>(env: &mut E, instr: Instruction)
Expand description

Run an iteration of the IVC scheme

It consists of the following steps:

  1. Compute the hash of the public input.
  2. Compute the elliptic curve addition.
  3. Run the polynomial-time function.
  4. Compute the hash of the output. The environment is updated over time. When the environment is the one described in the Witness environment, the structure will be updated with the new accumulator, the new public input, etc. The public output will be in the structure also. The user can simply rerun the function for the next iteration. A row must be created to generate a challenge to combine the constraints later. The challenge will be also accumulated over time.

FIXME: the resulting constraints do not include the selectors, yet. The resulting constraints must be multiplied by the corresponding selectors.