Aggregation.Polynomial_commitment
module SMap = Kzg.SMap
module type S = sig ... end
module Make_impl
(PC :
Kzg.Interfaces.Polynomial_commitment
with type Commitment.t = Kzg.Bls.G1.t SMap.t) :
sig ... end
module Make
(PC :
Kzg.Interfaces.Polynomial_commitment
with type Commitment.t = Kzg.Bls.G1.t SMap.t) :
S
include sig ... end
type secret = Kzg.Bls.Poly.t Kzg.SMap.t
type query = Kzg.Bls.Scalar.t Kzg.SMap.t
val query_t : query Repr.t
type answer = Kzg.Bls.Scalar.t Kzg.SMap.t Kzg.SMap.t
val answer_t : answer Repr.t
type proof = Make(Kzg.Polynomial_commitment).proof
val proof_t : proof Repr.t
module Commitment : sig ... end
module Public_parameters : sig ... end
val commit :
?all_keys:string list ->
Public_parameters.prover ->
secret ->
Commitment.t * Commitment.prover_aux
val prove :
Public_parameters.prover ->
Kzg.Utils.Transcript.t ->
secret list ->
Commitment.prover_aux list ->
query list ->
answer list ->
proof * Kzg.Utils.Transcript.t
val verify :
Public_parameters.verifier ->
Kzg.Utils.Transcript.t ->
Commitment.t list ->
query list ->
answer list ->
proof ->
bool * Kzg.Utils.Transcript.t
type prover_aux = Make(Kzg.Polynomial_commitment).prover_aux = {
r : Kzg.Bls.Scalar.t;
s_list : Kzg.Bls.Scalar.t SMap.t list;
}
Auxiliary information needed by the prover for the meta-verification in aPlonK
val prove_super_aggregation :
Public_parameters.prover ->
Kzg.Utils.Transcript.t ->
Kzg.Bls.Poly.t SMap.t list ->
Commitment.prover_aux list ->
query list ->
Kzg.Bls.Scalar.t SMap.t SMap.t list ->
(proof * prover_aux) * Kzg.Utils.Transcript.t
val verify_super_aggregation :
Public_parameters.verifier ->
Kzg.Utils.Transcript.t ->
Commitment.t list ->
query list ->
Kzg.Bls.Scalar.t SMap.t list ->
proof ->
bool * Kzg.Bls.Scalar.t * Kzg.Utils.Transcript.t