Building Cryptographic Proofs: Zero-Knowledge Proofs & SNARKs

  • Marco Zecchini – Università di Roma “La Sapienza”, Italia.

Abstract 

The increasing demand for privacy, verifiable computation and trust in web applications highlights the inherent limitations of the traditional client/server architecture.
Zero-Knowledge Proofs (ZKPs) and Succinct Non-Interactive Arguments of Knowledge (SNARKs) emerge as revolutionary technologies, offering the ability to prove the correctness of a computation or the possession of information without disclosing any underlying sensitive data for users.

This course will explore the foundational concepts of ZKPs, from interactive protocols to highly efficient non-interactive proof systems. During the course hands-on sessions and practical exercises will allow students, in some cases, to implement and, in others, apply these technologies.

We will delve into cryptographic constructions like Groth16, Plonk, and Halo2, understanding their architecture, their practical implications and how to use them in real-world cryptography.

Indeed, the course will also emphasize their applications in enhancing privacy and scalability in blockchain systems, digital media integrity, and web security.

The curriculum is informed by the latest research and enriched by practical experience in applied cryptography, extending the course made by Anca Nitulescu at crypt-a-bit 2024 and building on my own teaching and research experiences. Furthermore, the course is thought to be in continuity with Prof. Vitaletti’s course on blockchain technologies of ECI2025.

Objectives of the course 

The course “Building Cryptographic Proofs: Zero-Knowledge Proofs & SNARKs“ is designed to give a first understanding of the main concepts and practical challenges behind verifiable computation, from interactive proofs to modern non-interactive arguments.

The main goal of the course is to give the attendees the chance to understand how these advanced cryptographic tools are realized in practice in order to give them the chance to grasp the technical challenges to use such technologies in real-world applications.

Specifically, at the end of the course, attendees should be able to understand:

how group-based cryptography is implemented in practice in basic protocols such as Schnorr and in more advanced ones such as Bulletproof; how statements are encoded as circuits with tools like Circom; how to generate and verify Groth16 proofs with SnarkJS/Rapidsnark; grasp the foundations of IOP-based proofs based on Plonk arithmetization which are the base of nowadays advancements in the field and see how to generate proofs in such proof systems (e.g., Halo2, Plonky2 & 3);

Finally, attendees should also be able to clearly identify the use cases where SNARKs can enable privacy and scalability in blockchain systems, digital media, and web integrity and they should also be able to identify the challenges of the adoption of these technologies in real-world applications.

A basic knowledge of programming and fundamental cryptographic concepts can help.

Language: English

Brief index

  • Introduction to Zero-Knowledge Proofs (ZKPs): Motivation and formal definition of zero-knowledge. Interactive proofs and the Σ-protocol paradigm. Implementing basic ZK proofs (e.g., Schnorr protocol) using Python libraries.
  • From ZK to SNARKs: Non-interactive proofs via Fiat–Shamir transformation. From Schnorr to Bulletproofs: range proofs and aggregation. Hands-on session on Bulletproofs implementation.
  • From Bulletproofs to Groth16: Arithmetic circuits and Rank-1 Constraint Systems (R1CS): how statements are encoded as circuits. Introduction to Circom and SnarkJS for compiling, generating and verifying Groth16 proofs.
  • From Groth16 to IOP-based proofs: Interactive Oracle Proofs (IOP) as the foundation of modern SNARKs (guaranteeing additional properties through recursion or folding or aggregation. Overview of Plonk and Halo2 (a recursive proof system) frameworks.
  • Applications of SNARKs: How ZK proofs enable privacy and scalability in blockchain systems (ZK-Rollups, zkVM Risc0). Use of SNARKs for verifiable digital media, PDF signatures and Web integrity proofs.

Program per day:

  • DAY 1 (3 hours): Intro to Zero-knowledge proofs: Sigma Protocols and implementation. Example of I will conduct the implementation is available here: https://hackmd.io/@LsH8lGjzQEiZJROqMMzmCA/SJ8f_85Jbx
  • DAY 2 (3 hours): From ZK towards SNARKS (and from Schnorr to Bulletproofs) and implementation.
  • DAY 3 (3 hours): From Bulletproofs to Groth16. The concept of circuits: Circom and Snarkjs.
  • DAY 4 (3 hours): From Groth16 to IOPs: Plonk and Halo2.
  • DAY 5 (3 hours): SNARK applications in blockchains (for scalability and privacy), digital media (e.g., image transformation) and web (e.g., TLS). Analysis of a zkVM: Risc0.