package octez-libs
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=aa2f5bc99cc4ca2217c52a1af2a2cdfd3b383208cb859ca2e79ca0903396ca1d
    
    
  sha512=d68bb3eb615e3dcccc845fddfc9901c95b3c6dc8e105e39522ce97637b1308a7fa7aa1d271351d5933febd7476b2819e1694f31198f1f0919681f1f9cc97cb3a
    
    
  doc/aggregation/Aggregation/Polynomial_protocol/Make_aggregation/index.html
Module Polynomial_protocol.Make_aggregationSource
Parameters
module PC : Polynomial_commitment.SSignature
module PC = PCmodule Answers_commitment = Answers_commitmentinclude Plonk.Polynomial_protocol.S with module PC := PC
type prover_public_parameters = PC.Public_parameters.proverThe type of prover public parameters.
val prover_public_parameters_t : prover_public_parameters Repr.ttype verifier_public_parameters = PC.Public_parameters.verifierThe type of verifier public parameters.
val verifier_public_parameters_t : verifier_public_parameters Repr.ttype transcript = PC.transcriptThe type for transcripts, used for applying the Fiat-Shamir heuristic
val transcript_t : transcript Repr.tThe type for proofs, containing a commitment to the polynomial T that asserts the satisfiability of the identities over the subset of interest, as well as a PC proof and a list of PC answers.
val proof_t : proof Repr.tval setup : 
  setup_params:PC.Public_parameters.setup_params ->
  srs:(Octez_bls12_381_polynomial.Srs.t * Octez_bls12_381_polynomial.Srs.t) ->
  prover_public_parameters * verifier_public_parametersThe polynomial commitment setup function, requires a labeled argument of setup parameters for the underlying PC and a labeled argument containing the path location of a set of SRS files.
val prove : 
  prover_public_parameters ->
  transcript ->
  n:int ->
  generator:Plonk.Bls.Scalar.t ->
  secrets:(Plonk.Bls.Poly.t Plonk.SMap.t * PC.Commitment.prover_aux) list ->
  eval_points:Plonk.Identities.eval_point list list ->
  evaluations:Plonk.Bls.Evaluations.t Plonk.SMap.t ->
  identities:Plonk.Identities.prover_identities ->
  nb_of_t_chunks:int ->
  proof * transcriptThe prover function. Takes as input the prover_public_parameters, an initial transcript (possibly including a context if this prove is used as a building block of a bigger protocol), the size n of subgroup H, the canonical generator of subgroup H, a list of secrets including polynomials that have supposedly been committed (and a verifier received such commitments) as well as prover auxiliary information generated during the committing process, a list of evaluation point lists specifying the evaluation points where each secret needs to be evaluated at, a map of the above-mentioned polynomials this time in FFT evaluations form, for efficient polynomial multiplication, and some prover_identities that are supposedly satisfied by the secret polynomials. Outputs a proof and an updated transcript.
val verify : 
  verifier_public_parameters ->
  transcript ->
  n:int ->
  generator:Plonk.Bls.Scalar.t ->
  commitments:PC.Commitment.t list ->
  eval_points:Plonk.Identities.eval_point list list ->
  identities:Plonk.Identities.verifier_identities ->
  proof ->
  bool * transcriptThe verifier function. Takes as input the verifier_public_parameters, an initial transcript (that should coincide with the initial transcript used by prove), the size n of subgroup H, the canonical generator of subgroup H, a list of commitments to the secret polynomials by the prover, a list of evaluation points as in prove, some verifier_identities, and a proof. Outputs a bool value representing acceptance or rejection.
type prover_aux = {answers : Plonk.Bls.Scalar.t SMap.t SMap.t list;batch : Plonk.Bls.Scalar.t SMap.t list;alpha : Plonk.Bls.Scalar.t;x : Plonk.Bls.Scalar.t;r : Plonk.Bls.Scalar.t;cms_answers : Answers_commitment.t SMap.t;t_answers : Plonk.Bls.Scalar.t list;
}Auxiliary information needed by the prover for the meta-verification in aPlonK
type verifier_aux = {alpha : Plonk.Bls.Scalar.t;x : Plonk.Bls.Scalar.t;r : Plonk.Bls.Scalar.t;
}Auxiliary information needed by the verifier for the meta-verification in aPlonK
val update_transcript_with_formatted_answers : 
  transcript ->
  (Plonk.Bls.Scalar.t SMap.t SMap.t list -> Answers_commitment.t) SMap.t ->
  Plonk.Bls.Scalar.t SMap.t SMap.t list ->
  Plonk.Bls.Scalar.t list * Answers_commitment.t SMap.t * transcriptval prove_super_aggregation : 
  prover_public_parameters ->
  transcript ->
  commit_to_answers_map:
    (Plonk.Bls.Scalar.t SMap.t SMap.t list -> Answers_commitment.t) SMap.t ->
  n:int ->
  generator:Plonk.Bls.Scalar.t ->
  secrets:(Plonk.Bls.Poly.t SMap.t * PC.Commitment.prover_aux) list ->
  eval_points:Plonk.Identities.eval_point list list ->
  evaluations:Plonk.Bls.Evaluations.t SMap.t ->
  identities:Plonk.Identities.prover_identities ->
  nb_of_t_chunks:int ->
  (proof * prover_aux) * transcriptval verify_super_aggregation : 
  verifier_public_parameters ->
  transcript ->
  n:int ->
  generator:Plonk.Bls.Scalar.t ->
  commitments:PC.Commitment.t list ->
  eval_points:Plonk.Identities.eval_point list list ->
  s_list:Plonk.Bls.Scalar.t SMap.t list ->
  cms_answers:Answers_commitment.public SMap.t ->
  t_answers:Plonk.Bls.Scalar.t list ->
  ids_batch:(Plonk.Bls.Scalar.t * int) SMap.t ->
  proof ->
  (bool * verifier_aux) * PC.transcript