{"id":20009103,"url":"https://github.com/alxkzmn/zk-atlas","last_synced_at":"2026-03-05T07:01:06.987Z","repository":{"id":61300455,"uuid":"549993835","full_name":"alxkzmn/zk-atlas","owner":"alxkzmn","description":"A(n almost) complete atlas of contemporary Zero-Knowledge Proof technologies","archived":false,"fork":false,"pushed_at":"2022-10-14T08:36:57.000Z","size":29,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-02T01:43:19.343Z","etag":null,"topics":["cryptography","zero-knowledge","zero-knowledge-proof","zero-knowledge-proofs","zkp","zkproof"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alxkzmn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-12T03:31:40.000Z","updated_at":"2024-08-05T08:03:14.000Z","dependencies_parsed_at":"2022-10-14T17:05:11.138Z","dependency_job_id":null,"html_url":"https://github.com/alxkzmn/zk-atlas","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alxkzmn/zk-atlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxkzmn%2Fzk-atlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxkzmn%2Fzk-atlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxkzmn%2Fzk-atlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxkzmn%2Fzk-atlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alxkzmn","download_url":"https://codeload.github.com/alxkzmn/zk-atlas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxkzmn%2Fzk-atlas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30113109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cryptography","zero-knowledge","zero-knowledge-proof","zero-knowledge-proofs","zkp","zkproof"],"created_at":"2024-11-13T07:14:20.345Z","updated_at":"2026-03-05T07:01:06.877Z","avatar_url":"https://github.com/alxkzmn.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# A(n almost) complete atlas of Zero-Knowledge Proof technologies\r\n\r\nMost of the blocks are clickable!\r\n\r\n```mermaid\r\n%% This is a comment! TD means \"Top-Down\"\r\ngraph TD\r\n%% No need to \"define\" a new block in a special way, the first mention is the definition.\r\n%% The connection length is determined by the number of dashes, but the minimum is three ---.\r\n%% If you need to skip a level, use more than three dashes.\r\n    Rust --- Bellman\r\n    Rust --- arkworks\r\n    Rust --- Halo2\r\n    Halo2 ---- UltraPLONK\r\n    arkworks ---- Groth16\r\n    R1CS --- PLONK\r\n    ACIR --- PLONK\r\n    Bellman ---- PLONK\r\n    Lurk ----- Nova\r\n    Lurk ----- SnarkPack[SnarkPack+]\r\n    TypeScript --- SnarkyJS\r\n    Lurk ----- Groth16\r\n    snarkjs ---- Groth16\r\n    snarkjs ---- PLONK\r\n    gnark ---- Groth16\r\n    R1CS --- Groth16\r\n    gnark ---- PLONK\r\n    arkworks --- R1CS\r\n    SnarkyJS ---- PLONK\r\n    Circom --- snarkjs\r\n    Go --- gnark\r\n    arkworks ---- Marlin\r\n    arkworks ---- ripp\r\n    arkworks ---- gm17\r\n    arkworks ---- gemini\r\n    ripp --- QAP\r\n    gm17 --- QAP\r\n    gemini --- QAP\r\n    Groth16 --- QAP\r\n    Nova --- QAP\r\n    Noir ---- ACIR\r\n    SnarkPack --- QAP\r\n    Marlin --- QAP\r\n    Leo ---- R1CS\r\n    ZoKrates ---- R1CS\r\n    snarkjs --- R1CS\r\n    Circom ---- R1CS\r\n    gnark --- R1CS\r\n    PLONK --- QAP\r\n    UltraPLONK ---- zkSNARK\r\n    ACIR --- Marlin\r\n    ACIR --- Groth16\r\n    QAP --- zkSNARK\r\n    Cairo ---- RAP\r\n    RAP ----- zkSTARK\r\n    \r\n    %% Visual style definition. Color here refers to text color.\r\n    %% If you want to modify a style, please modify the corresponding style of the legend below.\r\n    \r\n    classDef framework fill:#f94144,color:#fff\r\n    classDef lang fill:#277da1,color:#fff\r\n    classDef compiler fill:#f8961e,color:#000\r\n    classDef intermediate fill:#f9844a,color:#000\r\n    classDef lib fill:#f9c74f,color:#000\r\n    classDef provingSystem fill:#90be6d,color:#000\r\n    classDef algForm fill:#43aa8b,color:#000\r\n    classDef tech fill:#4d908e,color:#fff\r\n    classDef color9 fill:#f3722c,color:#000\r\n    classDef color10 fill:#577590,color:#000\r\n    \r\n    %% These are class assignments. There should be no spaces around commas.\r\n    class SnarkyJS framework\r\n    class Circom,ZoKrates,Leo,Noir,Cairo,Lurk,Rust,TypeScript,Go lang\r\n    class R1CS,ACIR,RAP intermediate\r\n    class snarkjs,Bellman,Halo2,arkworks,gnark lib\r\n    class Groth16,PLONK,Marlin,SnarkPack,Nova,UltraPLONK,gm17,gemini,ripp provingSystem\r\n    class QAP algForm\r\n    class zkSNARK,zkSTARK tech\r\n    \r\n    %% These are onclicks. Docs say you can even use an arbitrary JS callback.\r\n    click Circom href \"https://docs.circom.io/\"\r\n    click ZoKrates href \"https://zokrates.github.io/\"\r\n    click Leo href \"https://leo-lang.org/\"\r\n    click Noir href \"https://docs.aztec.network/developers/noir\"\r\n    click snarkjs href \"https://github.com/iden3/snarkjs\"\r\n    click Cairo href \"https://eprint.iacr.org/2021/1063.pdf\"\r\n    click RAP href \"https://eprint.iacr.org/2021/1063.pdf\"\r\n    click Lurk href \"https://github.com/lurk-lang\"\r\n    click SnarkPack href \"https://research.protocol.ai/blog/2021/snarkpack-how-to-aggregate-snarks-efficiently/\"\r\n    click Nova href \"https://github.com/microsoft/Nova\"\r\n    click Bellman href \"https://github.com/matter-labs/bellman\"\r\n    click Rust href \"https://www.rust-lang.org/\"\r\n    click SnarkyJS href \"https://github.com/o1-labs/snarkyjs\"\r\n    click TypeScript href \"https://www.typescriptlang.org/\"\r\n    click ACIR href \"https://noir-lang.github.io/book/acir.html\"\r\n    click PLONK href \"https://eprint.iacr.org/2019/953.pdf\"\r\n    click Groth16 href \"https://eprint.iacr.org/2016/260.pdf\"\r\n    click Marlin href \"https://eprint.iacr.org/2019/1047.pdf\"\r\n    click zkSTARK href \"https://eprint.iacr.org/2018/046.pdf\"\r\n    click Halo2 href \"https://zcash.github.io/halo2/index.html\"\r\n    click arkworks href \"https://github.com/arkworks-rs/\"\r\n    click gm17 href \"https://github.com/arkworks-rs/gm17\"\r\n    click gemini href \"https://github.com/arkworks-rs/gemini\"\r\n    click ripp href \"https://github.com/arkworks-rs/ripp\"\r\n    click Go href \"https://go.dev/\"\r\n    click gnark href \"https://docs.gnark.consensys.net/en/latest/\"\r\n```\r\n```mermaid\r\n%% This legend graph is separate because I couldn't find a way to force the subgrapg to be rendered within the main graph in the same position\r\ngraph LR\r\n    subgraph Legend\r\n        direction LR\r\n        Lang([Language])---Framework([Framework])---Compiler([Compiler])---Intermediate([Intermediate Format])---Library([Library])---ProvingSystem([Proving System])---AlgebraicForm([Algebraic Form])---Tech([Technology])\r\n    end\r\n    \r\n    %% This styling makes the connections invisible\r\n    linkStyle default stroke-width:0px;\r\n    \r\n    classDef framework fill:#f94144,color:#fff\r\n    classDef lang fill:#277da1,color:#fff\r\n    classDef compiler fill:#f8961e,color:#000\r\n    classDef intermediate fill:#f9844a,color:#000\r\n    classDef lib fill:#f9c74f,color:#000\r\n    classDef provingSystem fill:#90be6d,color:#000\r\n    classDef algForm fill:#43aa8b,color:#000\r\n    classDef tech fill:#4d908e,color:#fff\r\n    classDef color9 fill:#f3722c,color:#000\r\n    classDef color10 fill:#577590,color:#000\r\n    \r\n    class Framework framework\r\n    class Lang lang\r\n    class Compiler compiler\r\n    class Intermediate intermediate\r\n    class Library lib\r\n    class ProvingSystem provingSystem\r\n    class AlgebraicForm algForm\r\n    class Tech tech\r\n```\r\n---\r\nInspired by [https://harryr.github.io/zklangs/](https://harryr.github.io/zklangs/).\r\nThis diagram uses [Mermaid syntax](https://mermaid-js.github.io/mermaid/#/). Its learning curve is relatively shallow, so the comments inside this file would probably be enough for you to start contributing.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxkzmn%2Fzk-atlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falxkzmn%2Fzk-atlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxkzmn%2Fzk-atlas/lists"}