Yashotantra Academy logo

2 · Arithmetic Circuits & R1CS

2. Arithmetic Circuits, R1CS and Circom

Flattening procedural logic, Rank-1 Constraint Systems, witness generation, and Circom circuit programming.

11 min read · 2 MCQs

From Code to Arithmetic Constraints

Computations are converted into arithmetic circuits consisting of addition and multiplication gates over finite field elements. Every statement must be expressed in Rank-1 Constraint System (R1CS) form: $(A \cdot s) \times (B \cdot s) = (C \cdot s)$, where $s$ is the witness vector containing inputs and intermediate variables.

Writing Circom Circuits

Circom is a domain-specific language for defining arithmetic constraints. Circuits define input signals (public or private) and generate constraints that output a witness file used by the prover.

// Circom arithmetic constraint example
pragma circom 2.1.6;

template Multiplier() {
    signal input a;
    signal input b;
    signal output c;

    // R1CS constraint: a * b === c
    c <== a * b;
}

component main = Multiplier();

Chapter quiz

2 questions · pass mark 75%
  1. 1. What is a 'Witness' in Zero-Knowledge proof generation?

  2. 2. Why cannot standard control flow (if/else on private variables) be evaluated dynamically in R1CS circuits?