Skip to main content
Try out the RareSkills ZK AI Tutor!

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.

Last updated onJun 20, 2025
Read Article

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.

Last updated onNov 8, 2026
Read Article

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.

Last updated onApr 15, 2025
Read Article

3 min read

Symbolic Variables in Circom

A symbolic variable in Circom is a variable that has been assigned values from a signal.

Last updated onApr 15, 2025
Read Article

6 min read

Circom Template Parameters, Variables, Loops, If Statements, Assert

This chapter covers essential syntax, which you'll see in most Circom programs.

Last updated onApr 15, 2025
Read Article

10 min read

Hello World Circom

This chapter shows the relationship between Circom code and the Rank 1 Constraint System (R1CS) it compiles to.

Last updated onAug 20, 2025
Read Article

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…

Last updated onJun 20, 2025
Read Article

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.

Last updated onApr 15, 2025
Read Article

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.

Last updated onSep 29, 2025
Read Article

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.

Last updated onAug 10, 2024
Read Article

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).

Last updated onJan 22, 2026
Read Article

20 min read

Circom language tutorial with circomlib walkthrough

This tutorial introduces the Circom language and how to use it, along with common pitfalls.

Last updated onSep 29, 2025
Read Article