Circom
Browse all Circom articles.
6 min read
Intermediate Signals and Sub-Component
Circom’s primary purpose is to compile down to a Rank 1 Constraint System (R1CS), but its secondary purpose is to populate the witness.
11 min read
Introduction to ZK Circuits with Circom
Circom is a programming language for creating Rank 1 Constraint Systems (R1CS) and populating the witness vector of the R1CS.
4 min read
Public and Private Inputs
A public input in Circom is a signal in the witness that will be revealed to the verifier.
3 min read
Symbolic Variables in Circom
A symbolic variable in Circom is a variable that has been assigned values from a signal.
6 min read
Circom Template Parameters, Variables, Loops, If Statements, Assert
This chapter covers essential syntax, which you'll see in most Circom programs.
10 min read
Hello World Circom
This chapter shows the relationship between Circom code and the Rank 1 Constraint System (R1CS) it compiles to.
6 min read
Indicate Then Constrain
The solution is to create indicator signals of the different conditions (e.g., x being less than 5, or being greater than 17), then apply constraints to…
3 min read
Quadratic Constraints
A Rank 1 Constraint System has at most one multiplication between signals per constraint. This is called a "quadratic" constraint.
6 min read
AliasCheck and Num2Bits_strict in Circomlib
An alias bug in Circom (or any ZK circuit language) occurs when a binary array of signals encodes a number larger than the field element can hold.
4 min read
Hacking Underconstrained Circom Circuits With Fake Proofs
The <-- operator in Circom can be dangerous because it assigns values to signals but does not constrain them.
29 min read
Converting Algebraic Circuits to R1CS (Rank One Constraint System)
This article is explains how to turn a set of arithmetic constraints into Rank One Constraint System (R1CS).
20 min read
Circom language tutorial with circomlib walkthrough
This tutorial introduces the Circom language and how to use it, along with common pitfalls.