package tezos-plonk
Install
Dune Dependency
Authors
Maintainers
Sources
md5=03d6ca5fb1c6865b6628e0dd49575895
sha512=20494d1d00ded43f3625e06e037d3bad04f0a7320914b542b882d3d0293c9b02845b7ca9ee4ff0eb8ea495eff5633016861c39370cca92c12aacae0e84483ca4
doc/tezos-plonk.aggregation/Aggregation/Main_protocol/Make/index.html
Module Main_protocol.Make
Source
Parameters
module PP : Polynomial_protocol.S with type PC.Scalar.t = Plompiler.S.t
Signature
include Plonk.Main_protocol.S
with type Scalar.t = PP.PC.Scalar.t
with type circuit_verifier_input = PP.PC.Scalar.t array list
Raised by the prover when the provided inputs are not a satisfying assignment of the circuit.
Raised by the prover when the provided inputs are not a satisfying assignment of the circuit when using Plookup.
Prime field used by aPlonk
Before proving and verifying, circuits go through a pre-processing step called setup
. The setup
takes as input a circuit_map
, which associates an identifier to a circuit and the number of statements that can be proved with that circuit. This produces a set of public_parameters
which are bound to the circuits and can be reused.
Set of public_parameters
needed by the prover. It's size is linear in the size of the circuits.
Set of public_parameters
needed by the verifier. It's size is constant w.r.t. the size of the circuits.
Succinct proof for a collection of statements.
Prover inputs for one statement. Witness is the assignment of all wires of the circuit.
Map where each circuit identifier is bound to a list of circuit_prover_input
for a list of statements.
The verifier input for one circuit and several statements
Map where each circuit identifier is bound to the verifier inputs for this circuit.
Conversion from prover_inputs
to verifier_inputs
.
val setup :
zero_knowledge:bool ->
circuit_map ->
srs:(Bls12_381_polynomial.Srs.t * Bls12_381_polynomial.Srs.t) ->
prover_public_parameters * verifier_public_parameters
setup ~zero_knowledge circuit_map ~srs
pre-processes the circuit_map
producing the public parameters. The SRSs of ZCash and Filecoin can be loaded from file using the Bls12_381_polynomial
library. Activating zero_knowledge
adds an overhead in proving time.
val update_prover_public_parameters :
Bytes.t ->
prover_public_parameters ->
prover_public_parameters
Enrich the prover_public_parameters
with extra application data to prevent replay attacks. The same data must be used for updating the prover and verifier public parameters.
val update_verifier_public_parameters :
Bytes.t ->
verifier_public_parameters ->
verifier_public_parameters
Enrich the verifier_public_parameters
with extra application data to prevent replay attacks. The same data must be used for updating the prover and verifier public parameters.
prove public_parameters ~inputs
produces a proof for the collection of statements implied by inputs
and the circuits used for generating public_parameters
.
verify public_parameters ~inputs proof
checks the validity of the proof
with regards to public_parameters
and inputs
.
val verify_list :
verifier_public_parameters ->
nb_proofs:int ->
(proof * scalar SMap.t list * scalar * scalar) ->
bool * verifier_aux