{"id":22952779,"url":"https://github.com/rasmus-kirk/halo-accumulation","last_synced_at":"2025-04-01T23:44:56.955Z","repository":{"id":267627980,"uuid":"901842230","full_name":"rasmus-kirk/halo-accumulation","owner":"rasmus-kirk","description":"A rust implementation of the Halo2 accumulation scheme from the paper \"Proof-Carrying Data from Accumulation Schemes\"","archived":false,"fork":false,"pushed_at":"2025-02-04T14:20:09.000Z","size":2795,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T22:05:32.838Z","etag":null,"topics":["accumulation-schemes","blockchain","crypto","cryptocurrency","cryptography","halo2","rust"],"latest_commit_sha":null,"homepage":"https://halo-accumulation.rasmuskirk.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rasmus-kirk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-11T12:20:33.000Z","updated_at":"2025-02-04T14:20:13.000Z","dependencies_parsed_at":"2025-01-25T21:28:18.390Z","dependency_job_id":null,"html_url":"https://github.com/rasmus-kirk/halo-accumulation","commit_stats":null,"previous_names":["rasmus-kirk/halo-accumulation"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rasmus-kirk%2Fhalo-accumulation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rasmus-kirk%2Fhalo-accumulation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rasmus-kirk%2Fhalo-accumulation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rasmus-kirk%2Fhalo-accumulation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rasmus-kirk","download_url":"https://codeload.github.com/rasmus-kirk/halo-accumulation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246730262,"owners_count":20824396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accumulation-schemes","blockchain","crypto","cryptocurrency","cryptography","halo2","rust"],"created_at":"2024-12-14T15:51:13.532Z","updated_at":"2025-04-01T23:44:56.925Z","avatar_url":"https://github.com/rasmus-kirk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository accompanies the report *\"Investigating IVC with Accumulation\nSchemes\"*. It explores the theoretical foundation of accumulation schemes\nand their application in Incrementally Verifiable Computation (IVC). While\nthe Rust implementation included here serves as a concrete demonstration of\nthe theory, the focus remains on the mathematical and cryptographic insights\nbehind the constructions and benchmarking, _not_ production-grade code.\n\nThe theory and code is mostly based on the 2020 paper _\"Proof-Carrying Data\nfrom Accumulation Schemes\"_ by Benedikt Bünz, Alessandro Chiesa, Pratyush\nMishra, and Nicholas Spooner.\n\n## Background  \n\n### What Are Accumulation Schemes?  \n\nAccumulation schemes are cryptographic primitives that allow for the\nincremental verification of multiple computations or proofs. They enable\nefficient proof systems by cheaply \"accumulating\" intermediate results,\nwhich can then be checked in a single, possibly expensive, verification step.\n\nThese schemes are particularly relevant in IVC, where a sequence of\ncomputations or proofs needs to be verified succinctly. By using the\naccumulation scheme, benchmarking shows significant improvements over naive\nseries of PCS checks.\n\n### Motivation for This Work  \n\nThe `ASDL` allows for an efficient IVC construction despite the linear runtime\nof a full PCS check, by leveraging the succinct check in `PCDL`. This means\nyou can have verification that does not scale linearly with the number of\nIVC steps, since the linear computation is only done at the end of the IVC\nchain, _not_ at each step. This means that, using a PCS based on Bulletproof's\nInner Product Argument, we can create an IVC construction that does not\ndepend on a trusted setup.\n\n## Theory Overview  \n\nThe report included in this repository covers:  \n\n1. **Prerequisites and Cryptographic Background**  \n   - Proof Systems\n   - Fiat-Shamir heuristic  \n   - SNARKs and Bulletproofs  \n\n2. **Incrementally Verifiable Computation (IVC)**  \n   - Introduction to IVC and its applications  \n   - An IVC construction using traditional SNARKS with sublinear verification\n\n3. **Polynomial Commitment Schemes (PCS)**  \n   - Theory behind PCS and their role in succinct proofs  \n\n4. **Accumulation Schemes (AS)**  \n   - How accumulation schemes work  \n   - Theoretical properties (completeness, soundness)  \n\n5. **IVC Using Accumulation Schemes**  \n   - How accumulation schemes lead to new IVC constructions, without the need for a trusted setup  \n\n6. **The Implementation**  \n   - Implementation details for `PCDL`, with a completeness proof and a knowledge extractability discussion  \n   - Implementation details for `ASDL`, with soundness and completeness proofs.\n\n7. **Efficiency and Benchmarking**  \n   - Comparison between naive PCS and accumulation schemes  \n   - Preliminary benchmarking results showing promising results  \n\n## Rust Implementation  \n\nThe Rust code provides a concrete implementation of the described accumulation\nscheme (`ASDL`) and polynomial commitment scheme (`PCDL`). While the\nimplementation is not designed for production use, it is a useful tool for\nunderstanding the theory and experimenting with the concepts.\n\n### Developement Environment using Nix\n\nThis project has nix support, as such, navigating to `/code` and typing\n`nix develop`, will install the necessary rust version, with the correct\nformatter and rust-analyzer included.\n\n### Unit Tests\n\nUnit tests can be run with `cargo test` in the `/code` directory.\n\n### Benchmarks\n\nBenchmarks can be run with `cargo benchmark` in the `/code` directory.\n\n### Features  \n- **Polynomial Commitment Scheme (`PCDL`)**: Implements commitment, opening, and succinct checking.  \n- **Accumulation Scheme (`ASDL`)**: Demonstrates the efficiency of accumulation-based verification.  \n- **Benchmarks**: Includes preliminary performance comparisons between naive PCS usage and accumulation schemes.  \n\n## Report  \n\nThe full report, *[\"Investigating IVC with Accumulation\nSchemes\"](https://halo-accumulation.rasmuskirk.com/report/report.pdf)*,\nis included in this repository and provides a detailed explanation of the\ntheory, constructions, and benchmarks.\n\n## Contributions  \n\nThis work is primarily intended for those interested in understanding the\ntheory behind accumulation schemes and their application to IVC. Contributions\nor suggestions for improving the theoretical explanations are welcome.\n\n## License  \n\nThis project is licensed under the MIT License. See the `LICENSE` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frasmus-kirk%2Fhalo-accumulation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frasmus-kirk%2Fhalo-accumulation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frasmus-kirk%2Fhalo-accumulation/lists"}