Overview

Interactive Proof Systems

The following zero-knowledge proof systems are currently supported by a frontend or backend provider:

  • Succinct Non-Interactive Arguments of Knowledge (zkSNARKs)

The following zero-knowledge proof systems may be supported by a frontend or backend provider in the future:

  • Succinct Non-interactive Oecumenical (Universal) aRguments of Knowledge (zkSNORKs)

  • Succinct (Scalable) Transparent ARguments of Knowledge (zkSTARKs)

The following provider implementations are either supported or are being considered at this time:

Provider
Supported?
Resources

gnark

Yes

zokrates

No¹

¹ ZoKrates is not currently supported but listed as a provider above as it would be interesting to complete this effort and support it.

Circuit Provider Interface

// ProverProvider provides a common interface to interact with zero-knowledge circuits
type ZKCircuitProvider interface {
	Compile(argv ...interface{}) (interface{}, error)
	ComputeWitness(artifacts map[string]interface{}, argv ...interface{}) (interface{}, error)
	ExportVerifier(verifyingKey string) (interface{}, error)
	Prove(prover, provingKey []byte, witness string) (interface{}, error)
	Setup(prover interface{}) (interface{}, interface{})
	Verify(proof, verifyingKey []byte, witness string) error
}

Note that not all of the above interface methods will be implemented by every provider.

Last updated