Unified Verifier for difference zk system.
- Provide generic verifier contract for all supported chain.
- Export verifier contract for special circuit.
- Widely supports multiple proof system implementations.
- snarkjs
- gnark
- arkworks
- zkvm
- risc0
- sp1
- EVM
- EVM:Prague (support bls12-381)
- Solana
- Move (sui)
- Move (aptos)
- Cairo
- Ton
- Groth16
- PLONK
- BN254
- BLS12-381
If you want to export evm verifier contract from snarkjs, you can use the following command:
forgeproof export \
--input-triple groth16-snarkjs-bn254 \
--verifying-key-path <path-to-verifying-key> \
--target evm \
<path-to-output>
You can forge output of zkproof implementation to used them in generic verifier contract.
# forge verifying key
forgeproof forge \
--input-triple "path-to-proof" \
--target evm \
--verifying-key-path "path-to-verifying-key" \
--proof-path "path-to-proof" \
--public-input-path "path-to-public-input" \
The Proof Triple
is a string to identify the proof type. It have the following format:
<algorithm>-<implementation>-<curve>:<version>