Providers

⚠️This API and documentation is still under active development.

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

Name

Provider

Supported?

Resources

Gnark

gnark

Yes

Docs | GitHub

ZoKrates¹

zokrates

No

Docs | GitHub

¹ 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

// CircuitProvider 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(circuit, provingKey []byte, witness string) (interface{}, error)
Setup(circuit 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.