noname ASM

The circuit that noname compiles to can be serialized as a simple ASM language. For example the following noname program:

fn main(pub public_input: Field, private_input: Field) {
    let x = private_input + public_input;
    assert_eq(x, 2);
}

will be compiled to the following noname asm:

@ noname.0.5.0

DoubleGeneric<1>
DoubleGeneric<1,1,-1>
DoubleGeneric<1,0,0,0,-2>
DoubleGeneric<1,-1>
(0,0) -> (1,1)
(1,2) -> (3,1)
(2,0) -> (3,0)

which includes:

  • the version of noname used to compile this circuit. This is important as the prover needs to know what version of noname to use to prove executions of this circuit.
  • a list of gates and how they are tweaked (the values in the brackets).
  • a list of wires which is canonically ordered so that every compilation gives the same resulting noname asm.