[
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribution Guidelines\n\nPlease ensure your pull request adheres to the following guidelines:\n\n- Search previous suggestions before making a new one, as yours may be a duplicate.\n- Suggested packages should be tested and documented.\n- Make an individual pull request for each suggestion.\n- Use the following format: `[PACKAGE](LINK) - DESCRIPTION.`\n- New categories, or improvements to the existing categorization are welcome.\n- Keep descriptions short and simple, but descriptive.\n- End all descriptions with a full stop/period.\n- Check your spelling and grammar.\n- Make sure your text editor is set to remove trailing whitespace.\n\nThank you for your suggestions!\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2024 rkdud007\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "<div align=\"center\">\n  <h1 align=\"center\">awesome zkVM</h1>\n\nA curated list of zkVM, zero-knowledge virtual machine.\n\n  <p align=\"center\">\n    <a href=\"https://github.com/sindresorhus/awesome\">\n      <img alt=\"awesome list badge\" src=\"https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg\">\n    </a>\n    <a href=\"https://github.com/rkdud007/awesome-zkvm/graphs/contributors\">\n      <img alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/rkdud007/awesome-zkvm\">\n    </a>\n    <a href=\"http://makeapullrequest.com\">\n      <img alt=\"pull requests welcome badge\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\">\n    </a>\n  </p>\n\n</div>\n\n[Contributions](./CONTRIBUTING.md) and suggestions are always welcome; open issues or pull requests with any changes you want to be made.\n\n# contents\n\n- [contents](#contents)\n  - [projects](#projects)\n  - [Technical details](#technical-details)\n  - [bench](#bench)\n  - [Independent/third-party Benchmarks](#independentthird-party-benchmarks)\n  - [papers](#papers)\n    - [Cairo](#cairo)\n    - [Cairo M](#cairo-m)\n    - [Ceno](#ceno)\n    - [Jolt](#jolt)\n    - [Nexus](#nexus)\n    - [SP1](#sp1)\n    - [Risc Zero](#risc-zero)\n    - [EDEN](#eden)\n  - [resources](#resources)\n  - [tutorials / educational zkVM](#tutorials--educational-zkvm)\n  - [related tooling](#related-tooling)\n  - [related awesome lists](#related-awesome-lists)\n\n## projects\n\n> [!NOTE]  \n> Maintained by [@0xpiapark](https://x.com/0xpiapark) and [@alexanderlhicks](https://x.com/alexanderlhicks). Some details may be outdated; feel free to open an issue or PR. For discussions on fair tracking methods, see the [open issues](https://github.com/rkdud007/awesome-zkvm/issues).\n\n- ISA ([Instruction Set Architecture](https://en.wikipedia.org/wiki/Instruction_set_architecture)): The fundamental “language” of the VM, defining all its basic operations and how they interact with data.\n- Continuations: Also known as chunking/sharding. A technique to break oversized computations — too big for a single run — into smaller segments that get proven individually and recursively (proof of segment `n+1` includes the proving of segment `n`'s verifier). How self-contained the proving of each segment is (no commitment passed from one segment to the other) and how efficiently parallelizatable it is (minimal inter-thread comm) differs from one implementation to another.\n- Precompiles (Built-ins, Chiplets, Accelerate etc): Specialized, pre-built functions for complex tasks (like cryptography) that boost efficiency and reduce proof overhead.\n- GPU: Indicates whether proving on GPU is supported (based on publicly exposed Metal/CUDA code).\n- Proving Frontend: The programming language the programmer expresses their business logic in, which then get compiled down into the VM’s supported ISA for constrained execution.\n\n|                               zkVM                                |         ISA          |   Continuations    | Parallelizable Proving |                                         Precompiles                                          |        GPU         |              Frontend               |\n| :---------------------------------------------------------------: | :------------------: | :----------------: | :--------------------: | :------------------------------------------------------------------------------------------: | :----------------: | :---------------------------------: |\n|         [cairo](https://github.com/lambdaclass/cairo-vm)          |        Cairo         |        :x:         |          :x:           |        [:white_check_mark:](https://book.cairo-lang.org/ch204-02-builtins-list.html)         |                    |                Cairo                |\n|         [cairo m](https://github.com/kkrt-labs/cairo-m)           |       Cairo M        | :white_check_mark: |          :x:           |                                             :x:                                              |                    |               Cairo M               |\n|            [ceno](https://github.com/scroll-tech/ceno)            |        RISC-V        |        :x:         |          :x:           | [:white_check_mark:](https://github.com/scroll-tech/ceno/tree/master/ceno_emul/src/syscalls) |                    |                Rust                 |\n|      [eigen zkvm](https://github.com/0xEigenLabs/eigen-zkvm)      |        RISC-V        | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      | :white_check_mark: |             Circom, PIL             |\n|               [jolt](https://github.com/a16z/jolt)                |        RISC-V        |        :x:         |          :x:           |                  [:x:](https://jolt.a16zcrypto.com/future/precompiles.html)                  |                    |                Rust                 |\n|        [miden](https://github.com/0xPolygonMiden/miden-vm)        | MASM(Miden Assembly) |        :x:         |          :x:           |                                      :white_check_mark:                                      | :white_check_mark: |             Rust, Wasm              |\n|          [mozak vm](https://github.com/0xmozak/mozak-vm)          |        RISC-V        |        :x:         |          :x:           |                                             :x:                                              |                    |                Rust                 |\n|         [nexus](https://github.com/nexus-xyz/nexus-zkvm)          |        RISC-V        | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      |                    |                Rust                 |\n| [o1vm](https://github.com/o1-labs/proof-systems/tree/master/o1vm) |         MIPS         |        :x:         |          :x:           |                                             :x:                                              |                    |                 Go                  |\n|              [olavm](https://github.com/Sin7Y/olavm)              |     Ola Assembly     |        :x:         |          :x:           |                                      :white_check_mark:                                      |                    |            Ola Assembly             |\n|          [openvm](https://github.com/openvm-org/openvm)           |        RISC-V        | :white_check_mark: |   :white_check_mark:   |        [:white_check_mark:](https://book.openvm.dev/custom-extensions/overview.html)         |                    |                Rust                 |\n|          [pico](https://github.com/brevis-network/pico)           |        RISC-V        | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      |                    |                Rust                 |\n|          [powdrVM](https://github.com/powdr-labs/powdr)           |        RISC-V        | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      |                    |            ASM assembly             |\n|              [risc0](https://github.com/risc0/risc0)              |        RISC-V        | :white_check_mark: |   :white_check_mark:   |             [:white_check_mark:](https://dev.risczero.com/api/zkvm/precompiles)              | :white_check_mark: |                Rust                 |\n|            [sp1](https://github.com/succinctlabs/sp1)             |        RISC-V        | :white_check_mark: |   :white_check_mark:   |    [:white_check_mark:](https://docs.succinct.xyz/docs/sp1/writing-programs/precompiles)     | :white_check_mark: |                Rust                 |\n|       [sphinx](https://github.com/argumentcomputer/sphinx)        |        RISC-V        | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      |                    |             Rust, Lurk              |\n|        [triton vm](https://github.com/TritonVM/triton-vm)         |   Triton Assembly    |        :x:         |          :x:           |                                             :x:                                              |                    |           Triton Assembly           |\n|       [valida](https://github.com/lita-xyz/valida-releases)       |        Valida        |        :x:         |          :x:           |                                             :x:                                              |                    |               Rust, C               |\n|          [zisk](https://github.com/0xPolygonHermez/zisk)          |        RISC-V        |       :white_check_mark:        |          :white_check_mark:          |                                            [:white_check_mark:]( https://github.com/0xPolygonHermez/zisk/blob/f3f8fb28da7bf35a1fd69a72bdf5b8b567019cce/book/getting_started/precompiles.md  )                                          |                    |                 PIL                 |\n|               [zkm](https://github.com/zkMIPS/zkm)                |         MIPS         | :white_check_mark: |   :white_check_mark:   | [:white_check_mark:](https://github.com/zkMIPS/zkm/blob/main/runtime/precompiles/src/lib.rs) |                    |              Rust, Go               |\n|         [zkWasm](https://github.com/DelphinusLab/zkWasm)          |         Wasm         | :white_check_mark: |   :white_check_mark:   |                                      :white_check_mark:                                      |                    | C, C++, rust, etc (wasm compilable) |\n\n## Technical details\n\n<details>\n<summary><b>Proof systems</b></summary>\n  \n- Arithmetization: The process of turning an execution trace into an algebraic statement (polynomial equations) that can be verified.\n- Optimizations: Ingredients in the proof system that can optimize the size and complexity of the constraints overall. \n- Backends: The proof system, typically in the form of a (Polynomial) Interactive Oracle Proof (IOP) and Polynomial Commitment Scheme (PCS), used for the (typically non-interactive) prover-verifier checks. \n- Verifiers: Programs that can do the (typically non-interactive) verification given a proof and public inputs. \n\n|                               zkVM                                |         Arithmetization         |                               Optimizations                               |                                 Backends                                  |   Verifiers    |\n| :---------------------------------------------------------------: | :-----------------------------: | :-----------------------------------------------------------------------: | :-----------------------------------------------------------------------: | :------------: |\n|         [cairo](https://github.com/lambdaclass/cairo-vm)          |               AIR               |                                                                           |                                    FRI                                    |                |\n|         [cairo m](https://github.com/kkrt-labs/cairo-m)           |               AIR               |                                   Lookup                                  |                                    FRI                                    |      Rust      |\n|            [ceno](https://github.com/scroll-tech/ceno)            |               GKR               |                             Lookup, Sumcheck                              |                                 Brakedown                                 |      Rust      |\n|      [eigen zkvm](https://github.com/0xEigenLabs/eigen-zkvm)      |              eAIR               |                                                                           |                               FRI, Groth16                                |    Solidity    |\n|               [jolt](https://github.com/a16z/jolt)                |              R1CS               |                    Lookup, Sumcheck, Offline Mem Check                    |                                  Spartan                                  |      WASM      |\n|        [miden](https://github.com/0xPolygonMiden/miden-vm)        |        AIR  (winterfell)        |                                  Lookup,                                  |                                Winterfell                                 |      Rust      |\n|          [mozak vm](https://github.com/0xmozak/mozak-vm)          |          AIR  (Starky)          |                                  Lookup,                                  |                                    FRI                                    |      Rust      |\n|         [nexus](https://github.com/nexus-xyz/nexus-zkvm)          | Folded Accumulated Relaxed R1CS |                            Accumulated Folding                            |                  Spartan + {Zeromorph, PSE-Halo2 (KZG)}                   |      Rust      |\n| [o1vm](https://github.com/o1-labs/proof-systems/tree/master/o1vm) |            Plonkish             |                                  Lookup                                   |                                    IPA                                    |      Rust      |\n|              [olavm](https://github.com/Sin7Y/olavm)              |         AIR  (plonky2)          |                                  Lookup                                   |                                    FRI                                    |      Rust      |\n|          [openvm](https://github.com/openvm-org/openvm)           |       AIR  (plonky3), GKR       |                                                                           |                                    FRI                                    |      Rust      |\n|          [pico](https://github.com/brevis-network/pico)           |          AIR (plonky3)          |                                  Lookup                                   |                                    FRI                                    | Rust, Solidity |\n|          [powdrVM](https://github.com/powdr-labs/powdr)           |     AIR -ish (PIL, plonky3)     |                                     -                                     | PSE-Halo2 (KZG), Plonky3, FRI([eSTARK](https://eprint.iacr.org/2023/474)) |    Solidity    |\n|              [risc0](https://github.com/risc0/risc0)              |              PLONK              |                                  Plookup                                  |          [DEEP-FRI & ALI](https://eprint.iacr.org/2021/582.pdf)           | Rust, Solidity |\n|            [sp1](https://github.com/succinctlabs/sp1)             |         AIR  (plonky3)          |                                  Lookup                                   |                                    FRI                                    | Rust, Solidity |\n|       [sphinx](https://github.com/argumentcomputer/sphinx)        |   AIR  (core), PLONK  (wrap)    |                                  Lookup,                                  |                                    FRI                                    |      Rust      |\n|        [triton vm](https://github.com/TritonVM/triton-vm)         |               AIR               | Lookup,  [Contiguity](https://triton-vm.org/spec/memory-consistency.html) |                                    FRI                                    |      Rust      |\n|       [valida](https://github.com/lita-xyz/valida-releases)       |         AIR  (plonky3)          |                                                                           |                                    FRI                                    |       ?        |\n|          [zisk](https://github.com/0xPolygonHermez/zisk)          |                ?                |                                     ?                                     |                                     ?                                     |       ?        |\n|               [zkm](https://github.com/zkMIPS/zkm)                |         AIR  (plonky2)          |                                  Lookup,                                  |                                    FRI                                    |      Rust      |\n|         [zkWasm](https://github.com/DelphinusLab/zkWasm)          |              PLONK              |                                     -                                     |                                   IPA?                                    |      Rust      |\n\n</details>\n\n## bench\n\n- [benchmarks (kkrt-labs)](https://github.com/kkrt-labs/zkvm-benchmarks/blob/master/.outputs/benchmark/simple_benchmarks.ipynb) | [code](https://github.com/kkrt-labs/zkvm-benchmarks)\n- [benchmarks (lita)](https://lita.gitbook.io/lita-documentation/architecture/benchmarks) | [code](https://github.com/lita-xyz/benchmarks)\n- [benchmark (risc0)](https://reports.risczero.com/benchmarks/Linux-cpu) | [code](https://github.com/risc0/risc0/tree/main/benchmarks)\n- zkvm-benchmarks (a16z) | [code](https://github.com/a16z/zkvm-benchmarks)\n- zkvm perf (succinct) | [code](https://github.com/succinctlabs/zkvm-perf)\n- zkvm bench (brevis) | [code](https://github.com/brevis-network/zkvm-bench)\n\n## Independent/third-party Benchmarks\n- Benchmarks of VM proving times made by Aligned | [results](https://zkbenchmarks.com/) [code](https://github.com/yetanotherco/zkvm_benchmarks)\n- Benchmarking of π<sup>2</sup> ZK Metamath checkers | [code](https://github.com/Pi-Squared-Inc/zk-benchmark), including [results](https://github.com/Pi-Squared-Inc/zk-benchmark?tab=readme-ov-file#our-results)\n- definitive guide to zkVMs | [article](http://mirror.xyz/stackrlabs.eth/jEBSBZtKEiMiTrRIGMCxN7n6r7al-vi25lmrnD610W4)\n- Lurk 0.5 Benchmarks | [article](https://argument.xyz/blog/perf-2024/)\n- benchmark of zkVMs and proving schemes | [code](https://github.com/babybear-labs/benchmark)\n- zkvm testing | [article](https://vac.dev/rlog/zkVM-testing/#summary-table)\n- prooflab benchmarks | [page](https://prooflab.dev/benchmarks)\n- Agglayer pessimistic Proof Benchmarks using zkVMs | [code](https://github.com/BrianSeong99/Agglayer_PessimisticProof_Benchmark)\n\n## papers\n\n### Cairo\n\n- [Cairo – a Turing-complete STARK-friendly CPU architecture](https://eprint.iacr.org/2021/1063.pdf)\n- [A Verified Algebraic Representation of Cairo Program Execution](https://dl.acm.org/doi/pdf/10.1145/3497775.3503675)\n- [A Proof-Producing Compiler for Blockchain Applications](https://drops.dagstuhl.de/storage/00lipics/lipics-vol268-itp2023/LIPIcs.ITP.2023.7/LIPIcs.ITP.2023.7.pdf)\n\n### Cairo M\n- [Cairo M Design Document](https://github.com/kkrt-labs/cairo-m/blob/main/docs/design.pdf)\n\n### Ceno\n\n- [Ceno: Non-uniform, Segment and Parallel Zero-knowledge Virtual Machine](https://eprint.iacr.org/2024/387.pdf)\n\n### Jolt\n\n- [Jolt: SNARKs for Virtual Machines via Lookups](https://eprint.iacr.org/2023/1217.pdf)\n\n### Nexus\n\n- [Nexus zkVM 3.0 Specification](https://specification.nexus.xyz/)\n\n### SP1\n\n- [SP1 V4 Turbo: Memory Argument via Elliptic Curve based Multiset Hashing](https://github.com/succinctlabs/sp1/blob/5c8a50e08b48d22b88471f39f9cc45947ca3bf5c/book/static/SP1_Turbo_Memory_Argument.pdf)\n- [Succint Network: Prove the World's software](https://www.provewith.us/)\n\n### Risc Zero\n\n- [RISC Zero zkVM: Scalable, Transparent Arguments of RISC-V Integrity](https://dev.risczero.com/proof-system-in-detail.pdf)\n\n### EDEN\n\n- [EDEN](https://eprint.iacr.org/2023/1021.pdf)\n\n## resources\n- Projects That Shaped Modern zkVMs ([Part 1](https://blog.zksecurity.xyz/posts/zkvm-projects-1/))\n- [a zero-knowledge paradigm series](https://www.lita.foundation/blog/zero-knowledge-paradigm-zkvm)\n- [cairo – a turing-complete stark-friendly cpu architecture - shahar papini](https://www.youtube.com/watch?v=vVgHL5vpJxY&t=33s)\n- [lasso + jolt playlist](https://youtube.com/playlist?list=PLjQ9HCQMu_8xjOEM_vh5p26ODtr-mmGxO&si=Uega8IMg_J8kNaa8)\n- [new paradigm in ethereum l2 scaling: multi-proving and zk-vms](https://www.mikkoikola.com/blog/2023/12/11/new-paradigm-in-ethereum-l2-scaling-multi-proving-and-zk-vms)\n- [the nexus v1.0 zkvm - daniel marin (nexus)](https://www.youtube.com/watch?v=UtzFOwQp8n4)\n- [understanding jolt: clarifications and reflections](https://a16zcrypto.com/posts/article/understanding-jolt-clarifications-and-reflections/)\n- [zk whiteboard sessions – module seven: zero knowledge virtual machines (zkvm) with grjte](https://www.youtube.com/watch?v=GRFPGJW0hic)\n- [zk10: analysis of zkvm designs - wei dai & terry chung](https://www.youtube.com/watch?v=tWJZX-WmbeY&t=325s)\n- [zk11: o1vm: building a real-world zkvm for mips - danny willems](https://www.youtube.com/watch?v=HDH2KXRAxAc)\n- [zk12: memory checking in ivc-based zkvm - jens groth](https://www.youtube.com/watch?v=kzSYNFh4uQ0&list=PLothk45x3HC9Oz4f3e9-OoYUEytfHWCl5)\n- [zk7: miden vm: a stark-friendly vm for blockchains - bobbin threadbare – polygon](https://www.youtube.com/watch?v=81UAaiIgIYA&t=803s)\n- [zeroing into zkvm](https://taiko.mirror.xyz/e_5GeGGFJIrOxqvXOfzY6HmWcRjCjRyG0NQF1zbNpNQ)\n- [zkvm design walkthrough with max and daniel](https://www.youtube.com/watch?v=aobrJ-zTcAU)\n- [Verification of zkWasm in Coq](https://github.com/CertiKProject/zkwasm-fv)\n- [zk11: polynomial acceleration for stark vms](https://www.youtube.com/watch?v=R07ina4k7hg)\n- [what does risc v have to do with risc zero's zkvm](https://www.youtube.com/watch?v=11DIflEwx50)\n- [risc zero architecture presentation @ stanford](https://www.youtube.com/watch?v=RtGk6967PC4)\n- [continuations: scaling in zkvm](https://www.youtube.com/watch?v=h1qWnf-M5lo)\n- [Getting the bugs out of SNARKs: The road ahead](https://a16zcrypto.com/posts/article/getting-bugs-out-of-snarks/)\n- [~tacryt-socryp on Zorp, the Nock zkVM | Reassembly23](https://www.youtube.com/watch?v=zD45V6GAD00)\n- [Automatic Circuit Acceleration of Guest Programs](https://www.powdr.org/blog/auto-acc-circuits)\n- [Introducing Twist and Shout](https://a16zcrypto.com/posts/article/introducing-twist-and-shout/)\n- [zkVM 系列课程 | Coset](https://youtube.com/playlist?list=PLbQFt1T_44DwyjIN_Jqoiq_WlYZAMw_vq)\n\n## tutorials / educational zkVM\n\n- [brainfuck tutorial](https://neptune.cash/learn/brainfuck-tutorial/)\n- [chip0](https://github.com/shuklaayush/chip0)\n- [continuous read only memory constraints an implementation using lambdaworks](https://blog.lambdaclass.com/continuous-read-only-memory-constraints-an-implementation-using-lambdaworks/)\n- [fri from scratch](https://blog.lambdaclass.com/how-to-code-fri-from-scratch/)\n- [stark by hand](https://dev.risczero.com/proof-system/stark-by-hand)\n- [stark brainfuck](https://aszepieniec.github.io/stark-brainfuck/)\n- [stark 101](https://starkware.co/stark-101/)\n- [stwo brainfuck](https://github.com/kkrt-labs/stwo-brainfuck)\n- [useless zkvm](https://github.com/armanthepythonguy/Useless-ZKVM)\n- [Anatomy of a STARK](https://aszepieniec.github.io/stark-anatomy/)\n  \n## related tooling\n\n- [zkaleido](https://github.com/alpenlabs/zkaleido)\n- [zkRust](https://github.com/yetanotherco/zkRust)\n- [any zkVM](https://github.com/MatteoMer/any-zkvm)\n- [ere](https://github.com/eth-act/ere)\n\n## related awesome lists\n\n- [awesome risc0](https://github.com/inversebrah/awesome-risc0)\n- [awesome sp1](https://github.com/gakonst/awesome-sp1)\n- [awesome starknet #cryptography-and-maths](https://github.com/keep-starknet-strange/awesome-starknet?tab=readme-ov-file#cryptography-and-maths)\n- [awesome zkp](https://github.com/matter-labs/awesome-zero-knowledge-proofs)\n- [awesome miden](https://github.com/phklive/awesome-miden)\n- [awesome plonky3](https://github.com/Plonky3/awesome-plonky3)\n- [awesome stwo](https://github.com/keep-starknet-strange/awesome-stwo)\n"
  }
]