Investigating IVC with Accumulation Schemes
This repository accompanies the report “Investigating IVC with Accumulation Schemes”. It explores the theoretical foundation of accumulation schemes and their application in Incrementally Verifiable Computation (IVC). While the Rust implementation included here serves as a concrete demonstration of the theory, the focus remains on the mathematical and cryptographic insights behind the constructions and benchmarking, not production-grade code.
The theory and code is mostly based on the 2020 paper “Proof-Carrying Data from Accumulation Schemes” by Benedikt Bünz, Alessandro Chiesa, Pratyush Mishra, and Nicholas Spooner.
Background
What Are Accumulation Schemes?
Accumulation schemes are cryptographic primitives that allow for the incremental verification of multiple computations or proofs. They enable efficient proof systems by cheaply “accumulating” intermediate results, which can then be checked in a single, possibly expensive, verification step.
These schemes are particularly relevant in IVC, where a sequence of computations or proofs needs to be verified succinctly. By using the accumulation scheme, benchmarking shows significant improvements over naive series of PCS checks.
Motivation for This Work
The ASDL allows for an efficient IVC
                  construction despite the linear runtime of a full PCS
                  check, by leveraging the succinct check in
                  PCDL. This means you can have
                  verification that does not scale linearly with the
                  number of IVC steps, since the linear computation is
                  only done at the end of the IVC chain, not at
                  each step. This means that, using a PCS based on
                  Bulletproof’s Inner Product Argument, we can create an
                  IVC construction that does not depend on a trusted
                  setup.
Theory Overview
The report included in this repository covers:
- Prerequisites and Cryptographic
                  Background
                  - Proof Systems
- Fiat-Shamir heuristic
 
- SNARKs and Bulletproofs
 
- Incrementally Verifiable Computation
                  (IVC)
                  - Introduction to IVC and its applications
 
- An IVC construction using traditional SNARKS with sublinear verification
 
- Introduction to IVC and its applications
- Polynomial Commitment Schemes
                  (PCS)
                  - Theory behind PCS and their role in succinct proofs
 
- Accumulation Schemes (AS)
                  - How accumulation schemes work
 
- Theoretical properties (completeness, soundness)
 
- How accumulation schemes work
- IVC Using Accumulation Schemes
                  - How accumulation schemes lead to new IVC constructions, without the need for a trusted setup
 
- The Implementation
                  - Implementation details for PCDL, with a completeness proof and a knowledge extractability discussion
 
- Implementation details for ASDL, with soundness and completeness proofs.
 
- Implementation details for 
- Efficiency and Benchmarking
                  - Comparison between naive PCS and accumulation
                  schemes
 
- Preliminary benchmarking results showing promising results
 
- Comparison between naive PCS and accumulation
                  schemes
Rust Implementation
The Rust code provides a concrete implementation of
                  the described accumulation scheme (ASDL)
                  and polynomial commitment scheme (PCDL).
                  While the implementation is not designed for
                  production use, it is a useful tool for understanding
                  the theory and experimenting with the concepts.
Developement Environment using Nix
This project has nix support, as such, navigating
                  to /code and typing
                  nix develop, will install the necessary
                  rust version, with the correct formatter and
                  rust-analyzer included.
Unit Tests
Unit tests can be run with cargo test
                  in the /code directory.
Benchmarks
Benchmarks can be run with
                  cargo benchmark in the /code
                  directory.
Features
- Polynomial Commitment Scheme
                  (PCDL): Implements commitment, opening, and succinct checking.
 
- Accumulation Scheme
                  (ASDL): Demonstrates the efficiency of accumulation-based verification.
 
- Benchmarks: Includes preliminary performance comparisons between naive PCS usage and accumulation schemes.
Report
The full report, “Investigating IVC with Accumulation Schemes”, is included in this repository and provides a detailed explanation of the theory, constructions, and benchmarks.
Contributions
This work is primarily intended for those interested in understanding the theory behind accumulation schemes and their application to IVC. Contributions or suggestions for improving the theoretical explanations are welcome.
License
This project is licensed under the MIT License. See
                  the LICENSE file for details.