├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Paul 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

awesome zk verifier

3 | 4 | A curated list of awesome things related to zero knowledge proof verifiers. 5 | 6 | Inculding: onchain zk proof verifier, recursive zk proof verifier etc. 7 | 8 |

9 | 10 | awesome list badge 11 | 12 | 13 | GitHub contributors 14 | 15 | 16 | pull requests welcome badge 17 | 18 |

19 | 20 |
21 | 22 | 23 | ## Contents 24 | 25 | - [Awesome zk verifier](#awesome-zk-verifier) 26 | - [Circuit Verifier](#circuit-verifier) 27 | - [Groth16 Circuit Verifier](#Groth16-Circuit-Verifier) 28 | - [Halo2 Circuit Verifier](#Halo2-Circuit-Verifier) 29 | - [Plonky2 Circuit Verifier](#Plonky2-Circuit-Verifier) 30 | - [Plonky3 Circuit Verifier](#Plonky3-Circuit-Verifier) 31 | - [Boojum Circuit Verifier](#Boojum-Circuit-Verifier) 32 | - [Winterfell Circuit Verifier](#winterfell-circuit-verifier) 33 | - [zkVM Circuit Verifier](#zkVM-Circuit-Verifier) 34 | - [Contract Verifier](#Contract-Verifier) 35 | - [Bitcoin Script Verifier](#bitcoin-script-verifier) 36 | - [Solidity Verifier](#solidity-verifier) 37 | - [Cairo Verifier](#cairo-verifier) 38 | - [Solona Verifier](#solona-verifier) 39 | - [Move Verifier](#move-verifier) 40 | - [Cosmwasm Verifier](#cosmwasm-verifier) 41 | - [Other Verifiers](#other-verifiers) 42 | - [Gnark Arkworks Verifier](#gnark-arkworks-verifier) 43 | - [Groth16 Wasm Verifier](#groth16-wasm-verifier) 44 | - [Fflonk Verifier](#fflonk-verifier) 45 | - [Snarkjs Verifier](#snarkjs-verifier) 46 | - [Related Awesome Lists](#related-awesome-lists) 47 | 48 | ## Circuit Verifier 49 | 50 | Verify zkp'sproof by (another) zk prover circuit. Aka. aggregation/recursive prove. 51 | 52 | ### Groth16 Circuit Verifier 53 | * By snarkpack 54 | * https://github.com/filecoin-project/bellperson/tree/master/src/groth16/aggregate 55 | * https://github.com/nikkolasg/snarkpack 56 | 57 | 58 | ### Halo2 Circuit Verifier: 59 | * https://github.com/privacy-scaling-explorations/snark-verifier 60 | 61 | ### Plonky2 Circuit Verifier 62 | * https://github.com/arnaucube/plonky2-recursion-experiment 63 | * By gnark 64 | * https://github.com/succinctlabs/gnark-plonky2-verifier 65 | * https://github.com/Lagrange-Labs/mapreduce-plonky2/tree/main/gnark-utils 66 | * https://github.com/zkMIPS/gnark-plonky2-verifier 67 | * https://github.com/cf/gnark-plonky2-verifier/blob/c59e33fd8f1b407b355d7b9a74e34792e7c78f37/prover/src/lib.rs#L24-L40 68 | * By circom 69 | * https://github.com/polymerdao/plonky2-circom 70 | * By halo2 71 | * https://github.com/maxgillett/halo2-fri-gadget 72 | * https://github.com/shuklaayush/halo2-plonky2-verifier 73 | * https://github.com/Omniverse-Web3-Labs/fri-kzg-verifier 74 | * https://github.com/DoHoonKim8/stark-verifier 75 | * https://github.com/qope/another-circuit 76 | * by groth16 77 | * https://github.com/Electron-Labs/plonky2-groth16-verifier 78 | 79 | ### Plonky3 Circuit Verifier 80 | * By gnark 81 | * https://github.com/succinctlabs/sp1/tree/main/recursion/gnark-ffi/go/sp1 82 | * By plonky2 83 | * https://github.com/QEDProtocol/plonky2.5 84 | 85 | 86 | ### Boojum Circuit Verifier 87 | * https://github.com/matter-labs/snark-wrapper 88 | 89 | ### Winterfell Circuit Verifier 90 | * By circom 91 | * https://github.com/VictorColomb/stark-snark-recursive-proofs 92 | 93 | 94 | ### zkVM Circuit Verifier 95 | As the raw verifier of a prover is a program(most of them writen in Rust), which can be proven by a zkvm. 96 | So that we can generate aggregationg proof by zkvm instead of writing a aggregation circuit. 97 | 98 | #### KZG zkVM Circuit Verifier 99 | * https://github.com/smtmfft/sp1-c-kzg 100 | 101 | #### Fflonk zkVM Circuit Verifier 102 | * https://github.com/RizeLabs/sp1-fflonk 103 | 104 | #### Plonky2 zkVM Circuit Verifier 105 | * https://github.com/wborgeaud/sp1-plonky2 106 | 107 | #### Platinum zkVM Circuit Verifier 108 | * https://github.com/raphaelDkhn/sp1_recursion 109 | 110 | ## Contract Verifier 111 | > Verify proof by onchain contract. 112 | 113 | ### Bitcoin Script Verifier 114 | Verify zkp proof in bitcoin Script 115 | 116 | #### Groth16 Bitcoin Script Verifier 117 | * https://github.com/chainwayxyz/bitvm-zk-verifier 118 | * https://github.com/FairgateLabs/rust-bitvmx-zk-proof 119 | 120 | #### Circle Stark Bitcoin Script Verifier 121 | * https://github.com/Bitcoin-Wildlife-Sanctuary/bitcoin-circle-stark 122 | * https://github.com/bitlayer-org/tap-stark 123 | 124 | ### Solidity Verifier 125 | Verify zkp proof in Solidity Contract 126 | 127 | #### Groth16 Solidity Verifier 128 | * https://github.com/recmo/evm-groth16 129 | * https://github.com/succinctlabs/sp1-contracts/blob/main/contracts/src/v3.0.0-rc1/Groth16Verifier.sol 130 | * https://github.com/circuitscan/snarkjs-groth16-multi-verifier/blob/main/test/contracts/semaphorev4-1.sol 131 | 132 | #### whir Solidity Verifier 133 | * https://github.com/privacy-scaling-explorations/sol-whir 134 | 135 | #### Fflonk Solidity Verifier 136 | * https://github.com/recmo/evm-groth16 137 | * https://github.com/0xPolygonHermez/zkevm-contracts/tree/main/contracts/verifiers 138 | 139 | #### Plonk Solidity Verifier 140 | * https://github.com/matter-labs/solidity_plonk_verifier 141 | * https://github.com/DelphinusLab/delphinus-solidity 142 | * https://github.com/fluidex/solidity_recursive_plonk_verifier 143 | * https://github.com/matter-labs/era-contracts/blob/main/l1-contracts/contracts/state-transition/Verifier.sol 144 | Rust Version: 145 | * https://github.com/HorizenLabs/zksync-era-verifier 146 | * https://github.com/succinctlabs/sp1-contracts/blob/main/contracts/src/v3.0.0-rc1/PlonkVerifier.sol 147 | * https://github.com/zkVerify/ultraplonk_verifier 148 | 149 | #### Halo2 Solidity Verifier 150 | * https://github.com/privacy-scaling-explorations/halo2-solidity-verifier 151 | * https://github.com/akinovak/instance-verifier 152 | 153 | #### Plonky2 Solidity Verifier 154 | * https://github.com/polymerdao/plonky2-solidity-verifier 155 | 156 | #### Marlin Solidity Verifier 157 | * https://github.com/Zokrates/ZoKrates/blob/develop/zokrates_proof_systems/src/scheme/marlin.rs 158 | 159 | #### Nova Solidity Verifier 160 | * https://github.com/argumentcomputer/solidity-verifier 161 | * https://github.com/privacy-scaling-explorations/folding-schemes 162 | 163 | #### gm17 Solidity Verifier 164 | * https://github.com/Zokrates/ZoKrates/blob/develop/zokrates_proof_systems/src/scheme/gm17.rs 165 | * Rust 166 | * https://github.com/arkworks-rs/gm17 167 | 168 | #### Mina Solidity Verifier 169 | * https://github.com/NilFoundation/mina-state-proof 170 | 171 | #### Placeholder Solidity Verifier 172 | * https://github.com/NilFoundation/cairo-placeholder-verification 173 | 174 | #### Sp1 Solidity Verifier 175 | * https://github.com/RizeLabs/sp1-verifier 176 | 177 | ### Cairo Verifier 178 | Verify zkp proof in Cairo Contract 179 | 180 | #### Stark Cairo Verifier 181 | * https://github.com/HerodotusDev/cairo-verifier 182 | * https://github.com/ZeroSync/ZeroSync/tree/main/src/stark_verifier 183 | 184 | #### Snark Cairo Verifier 185 | * https://github.com/keep-starknet-strange/garaga Including Groth16 and protostar's test demos. 186 | 187 | #### Circom Cairo Verifier 188 | * https://github.com/lambdaclass/circom_export_to_cairo 189 | 190 | #### Placeholder Cairo Verifier 191 | * https://github.com/NilFoundation/cairo-placeholder-verification 192 | 193 | ### Solona Verifier 194 | Verify zkp proof in Solona Contract 195 | 196 | #### Groth16 Solona Verifier 197 | * https://github.com/Lightprotocol/groth16-solana 198 | * https://github.com/zkLinkProtocol/groth16-sol-verifier 199 | * https://github.com/gnosed/solana_groth16_verifier 200 | 201 | ### Move Verifier 202 | Verify zkp proof in Move Contract 203 | 204 | #### Groth16 Move Verifier 205 | * https://github.com/MystenLabs/sui/blob/main/sui_programmability/examples/crypto/sources/groth16.move 206 | 207 | #### Halo2 Move Verifier 208 | * https://github.com/zkmove/halo2-verifier.move 209 | 210 | 211 | ### Cosmwasm Verifier 212 | #### Groth16 Cosmwasm Verifier 213 | * https://github.com/DoraFactory/zk-cosmwasm/tree/main/cw-groth16 214 | 215 | #### Plonk Cosmwasm Verifier 216 | * https://github.com/DoraFactory/zk-cosmwasm/tree/main/cw-plonk 217 | 218 | 219 | ## Other Verifiers 220 | Following contains verifier by other crypto-lib implement. 221 | * eg: CryptoA's verified by cryptoB, aka `CryptoA CryptoB Verifier` 222 | 223 | ### Gnark Arkworks Verifier 224 | * https://github.com/succinctlabs/snark-bn254-verifier 225 | which not using ark-groth16. 226 | * https://github.com/Bisht13/gnark-bn254-verifier 227 | * https://github.com/geometers/gnark-arkworks-verifier 228 | 229 | ### Groth16 Wasm Verifier 230 | * https://github.com/xycloo/wasm-groth16-verifier 231 | 232 | ### Fflonk Verifier 233 | * https://github.com/SuccinctPaul/ark-fflonk-verifier 234 | * https://github.com/RizeLabs/sp1-fflonk 235 | * https://github.com/HorizenLabs/fflonk_verifier 236 | 237 | ### Snarkjs Verifier 238 | * https://github.com/DoraFactory/snarkjs-bellman-adapter 239 | 240 | 241 | ## Related Awesome Lists 242 | 243 | https://github.com/seresistvanandras/awesome-evm-proof-verifiers --------------------------------------------------------------------------------