Documentation ¶
Overview ¶
Package gnark provides fast Zero Knowledge Proofs (ZKP) systems and a high level APIs to design ZKP circuits.
gnark supports the following ZKP schemes:
 Groth16
 PLONK
gnark supports the following curves:
 BN254
 BLS12_377
 BLS12_381
 BW6_761
 BLS24_315
 BW6_633
 BLS24_317
User documentation https://docs.gnark.consensys.net
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Version = semver.MustParse("0.10.0alpha")
Functions ¶
Types ¶
This section is empty.
Directories ¶
Path  Synopsis 

Package backend implements Zero Knowledge Proof systems: it consumes circuit compiled with gnark/frontend.

Package backend implements Zero Knowledge Proof systems: it consumes circuit compiled with gnark/frontend. 
groth16
Package groth16 implements Groth16 Zero Knowledge Proof system (aka zkSNARK).

Package groth16 implements Groth16 Zero Knowledge Proof system (aka zkSNARK). 
groth16/bn254/icicle
Package icicle_bn254 implements ICICLE acceleration for BN254 Groth16 backend.

Package icicle_bn254 implements ICICLE acceleration for BN254 Groth16 backend. 
plonk
Package plonk implements PLONK Zero Knowledge Proof system.

Package plonk implements PLONK Zero Knowledge Proof system. 
witness
Package witness provides serialization helpers to encode a witness into a []byte.

Package witness provides serialization helpers to encode a witness into a []byte. 
Package constraint provides constructs needed to build and use a constraint system.

Package constraint provides constructs needed to build and use a constraint system. 
examples


schema/internal/reflectwalk
reflectwalk is a package that allows you to "walk" complex structures similar to how you may "walk" a filesystem: visiting every element one by one and calling callback functions allowing you to handle and manipulate those elements.

reflectwalk is a package that allows you to "walk" complex structures similar to how you may "walk" a filesystem: visiting every element one by one and calling callback functions allowing you to handle and manipulate those elements. 
internal


backend/circuits
Package circuits contains test circuits

Package circuits contains test circuits 
frontendtype
Package frontendtype allows to assert frontend type.

Package frontendtype allows to assert frontend type. 
kvstore
Package kvstore implements simple keyvalue store

Package kvstore implements simple keyvalue store 
regression_tests
Package regressiontests includes tests to avoid reintroducing regressions.

Package regressiontests includes tests to avoid reintroducing regressions. 
tinyfield
Package tinyfield contains field arithmetic operations for modulus = 0x2f.

Package tinyfield contains field arithmetic operations for modulus = 0x2f. 
Package io offers serialization interfaces for gnark objects.

Package io offers serialization interfaces for gnark objects. 
Package logger provides a configurable logger across gnark components

Package logger provides a configurable logger across gnark components 
Package profile provides a simple way to generate pprof compatible gnark circuit profile.

Package profile provides a simple way to generate pprof compatible gnark circuit profile. 
internal/graph
Package graph collects a set of samples into a directed graph.

Package graph collects a set of samples into a directed graph. 
internal/measurement
Package measurement export utility functions to manipulate/format performance profile sample values.

Package measurement export utility functions to manipulate/format performance profile sample values. 
internal/report
Package report summarizes a performance profile into a humanreadable report.

Package report summarizes a performance profile into a humanreadable report. 
Package std provides components or functions to help design gnark circuits.

Package std provides components or functions to help design gnark circuits. 
accumulator/merkle
Package merkle provides a ZKPcircuit function to verify merkle proofs.

Package merkle provides a ZKPcircuit function to verify merkle proofs. 
algebra
Package algebra implements:

Package algebra implements: 
algebra/algopts
Package algopts provides shareable options for modifying algebraic operations.

Package algopts provides shareable options for modifying algebraic operations. 
algebra/emulated/fields_bls12381
Package fields_bls12381 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BLS12381 curve.

Package fields_bls12381 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BLS12381 curve. 
algebra/emulated/fields_bn254
Package fields_bn254 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BN254 curve.

Package fields_bn254 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BN254 curve. 
algebra/emulated/fields_bw6761
Package fields_bw6761 implements the fields arithmetic of the Fp6 tower used to compute the pairing over the BW6761 curve.

Package fields_bw6761 implements the fields arithmetic of the Fp6 tower used to compute the pairing over the BW6761 curve. 
algebra/emulated/sw_bls12381
Package sw_bls12381 implements G1 and G2 arithmetics and pairing computation over BLS12381 curve.

Package sw_bls12381 implements G1 and G2 arithmetics and pairing computation over BLS12381 curve. 
algebra/emulated/sw_bn254
Package sw_bn254 implements G1 and G2 arithmetics and pairing computation over BN254 curve.

Package sw_bn254 implements G1 and G2 arithmetics and pairing computation over BN254 curve. 
algebra/emulated/sw_bw6761
Package sw_bw6761 implements G1 and G2 arithmetics and pairing computation over BW6761 curve.

Package sw_bw6761 implements G1 and G2 arithmetics and pairing computation over BW6761 curve. 
algebra/emulated/sw_emulated
Package sw_emulated implements elliptic curve group operations in (short) Weierstrass form.

Package sw_emulated implements elliptic curve group operations in (short) Weierstrass form. 
algebra/native/fields_bls12377
Package fields_bls12377 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BLS12377 curve.

Package fields_bls12377 implements the fields arithmetic of the Fp12 tower used to compute the pairing over the BLS12377 curve. 
algebra/native/fields_bls24315
Package fields_bls24315 implements the fields arithmetic of the Fp24 tower used to compute the pairing over the BLS24315 curve.

Package fields_bls24315 implements the fields arithmetic of the Fp24 tower used to compute the pairing over the BLS24315 curve. 
algebra/native/sw_bls12377
Package sw_bls12377 implements the arithmetics of G1, G2 and the pairing computation on BLS12377 as a SNARK circuit over BW6761.

Package sw_bls12377 implements the arithmetics of G1, G2 and the pairing computation on BLS12377 as a SNARK circuit over BW6761. 
algebra/native/sw_bls24315
Package sw_bls24315 implements the arithmetics of G1, G2 and the pairing computation on BLS24315 as a SNARK circuit over BW6633.

Package sw_bls24315 implements the arithmetics of G1, G2 and the pairing computation on BLS24315 as a SNARK circuit over BW6633. 
algebra/native/twistededwards
Package twistededwards implements the arithmetic of twisted Edwards curves in native fields.

Package twistededwards implements the arithmetic of twisted Edwards curves in native fields. 
commitments/kzg
Package kzg implements KZG polynomial commitment verification.

Package kzg implements KZG polynomial commitment verification. 
commitments/pedersen
Package pedersen implements the Pedersen vector commitment scheme verifier.

Package pedersen implements the Pedersen vector commitment scheme verifier. 
evmprecompiles
Package evmprecompiles implements the Ethereum VM precompile contracts.

Package evmprecompiles implements the Ethereum VM precompile contracts. 
hash
Package hash provides an interface that hash functions (as gadget) should implement.

Package hash provides an interface that hash functions (as gadget) should implement. 
hash/mimc
Package mimc provides a ZKPcircuit function to compute a MiMC hash.

Package mimc provides a ZKPcircuit function to compute a MiMC hash. 
hash/sha2
Package sha2 implements SHA2 hash computation.

Package sha2 implements SHA2 hash computation. 
hash/sha3
Package sha3 provides ZKP circuits for SHA3 hash algorithms applying sponge construction over Keccak f[1600] permutation function.

Package sha3 provides ZKP circuits for SHA3 hash algorithms applying sponge construction over Keccak f[1600] permutation function. 
internal/logderivarg
Package logderivarg implements logderivative argument.

Package logderivarg implements logderivative argument. 
internal/logderivprecomp
Package logderivprecomp allows computing functions using precomputation.

Package logderivprecomp allows computing functions using precomputation. 
lookup/logderivlookup
Package logderiv implements appendonly lookups using logderivative argument.

Package logderiv implements appendonly lookups using logderivative argument. 
math/cmp
Package cmp provides methods and functions for comparing two numbers.

Package cmp provides methods and functions for comparing two numbers. 
math/emulated
Package emulated implements operations over any modulus.

Package emulated implements operations over any modulus. 
math/emulated/emparams
Package emparams contains emulation parameters for well known fields.

Package emparams contains emulation parameters for well known fields. 
math/polynomial
Package polynomial provides fieldagnostic polynomials.

Package polynomial provides fieldagnostic polynomials. 
math/uints
Package uints implements optimised byte and long integer operations.

Package uints implements optimised byte and long integer operations. 
multicommit
Package multicommit implements commitment expansion.

Package multicommit implements commitment expansion. 
permutation/keccakf
Package keccakf implements the KeccakF1600 permutation function.

Package keccakf implements the KeccakF1600 permutation function. 
rangecheck
Package rangecheck implements range checking gadget

Package rangecheck implements range checking gadget 
recursion
Package recursion provides incircuit verifiers for different proofs systems.

Package recursion provides incircuit verifiers for different proofs systems. 
recursion/groth16
Package groth16 provides incircuit Groth16 verifier.

Package groth16 provides incircuit Groth16 verifier. 
recursion/plonk
Package plonk implements incircuit PLONK verifier.

Package plonk implements incircuit PLONK verifier. 
recursion/sumcheck
Package sumcheck implements nonnative sumcheck verifier.

Package sumcheck implements nonnative sumcheck verifier. 
selector
Package selector provides a lookup table and map, based on linear scan.

Package selector provides a lookup table and map, based on linear scan. 
signature/ecdsa
Package ecdsa implements ECDSA signature verification over any elliptic curve.

Package ecdsa implements ECDSA signature verification over any elliptic curve. 
signature/eddsa
Package eddsa provides a ZKPcircuit function to verify a EdDSA signature.

Package eddsa provides a ZKPcircuit function to verify a EdDSA signature. 
Package test provides components or functions to help test and fuzz gnark circuits.

Package test provides components or functions to help test and fuzz gnark circuits. 
unsafekzg
Package unsafekzg is a convenience package (to be use for test purposes only) to generate and cache SRS for the kzg scheme (and indirectly for PlonK setup).

Package unsafekzg is a convenience package (to be use for test purposes only) to generate and cache SRS for the kzg scheme (and indirectly for PlonK setup). 
Click to show internal directories.
Click to hide internal directories.