baldino.dev > Studies

15 May 2026
ZKP & zkSNARK
Master's thesis
supv.: L. Ricci, M. Nardelli

Master's thesis

master-thesis.pdf

This is the thesis of my master's degree in mathematics, titled "A systematic comparison of zero-knowledge proof systems across theory, implementations, and applications".

The purpose of this work was to produce a comparative analysis of zero-knowledge proofs (ZKP) and the succinct non-interactive variant (zkSNARK) taking into consideration both the theoretical aspects of the cryptographic protocols, as well as the practical aspects of the implementation frameworks, in order to provide operative guidelines that would help developers in the choice of the protocol+framework combo for the desired use case. The guidelines, rooted in the results found in the theoretical and practical analysis, are structured on the properties of the use case (rather than being tailored on a handful of use cases) in order to be applicable to a wide range of scenarios.

The zkSNARKs considered in the analysis are:

  • Groth16
  • Marlin
  • Plonk
  • Hyrax
  • Virgo

through the implementations in the following frameworks:

  • snarkJS (JavaScript library)
  • arkworks (ecosystem of Rust libraries)
  • ZoKrates (DSL for ZKP)
  • Noir (DSL for ZKP)

Below you can find the abstract of the thesis

Abstract

Zero-knowledge proofs of knowledge and zero-knowledge Succinct Non-interactive Arguments of Knowledge (zkSNARK) are a rapidly evolving field of study which is enabling breakthroughs in decentralised applications, verifiable computation, self-sovereign identity, as well as machine learning. As such, zkSNARKs are being applied in scenarios where security and privacy are the primary concern. However, with protocol definitions which span multiple fields in mathematics and theoretical computer science, it remains challenging for a developer of such applications to assess the security assumptions, efficiency trade-offs, and suitability of different protocols. Some libraries such as arkworks and snarkjs exist to simplify the workflow of developers in implementing zkSNARK protocols in various applications, but they usually treat the backend protocol as a black-box, focusing on simplicity of use for non-cryptographers rather than clarity of the underlying cryptographic assumptions.

This work addresses this gap by providing a systematic and comparative analysis of modern zero-knowledge proof systems. We present an in-depth analysis of the most prominent zkSNARKs in the current literature, with a theoretical comparison focusing on security analysis, cryptographic assumptions, and computational costs of proof size and prover/verifier time. We then analyse the most notable libraries for implementing zkSNARK protocols, highlighting the mismatch between available protocol implementations and the abstractions exposed to developers. Finally, we analyse a range of real-world applications, to identify how protocol properties influence their suitability across different scenarios. Building on this analysis, we present a developer-friendly guide to support informed selection of zero-knowledge protocols while preserving awareness of their security and performance implications.