Module Kzg.Kate_amortized

type public_parameters = {
  1. max_polynomial_length : int;
  2. shard_length : int;
  3. srs_g1 : Kzg.Bls.Srs_g1.t;
  4. number_of_shards : int;
}

Public_parameters are needed for commit, preprocess, prove & verify Notably the type is the same for both prover & verifier, but the needed SRS size is shorter for the verifier (= max_polynomial_length - shard_length) than for the prover (= max_polynomial_length)

type preprocess

The preprocess is the SRS under a certain form. It is a necessary step for proving

val preprocess_encoding : preprocess Data_encoding.t
type shard_proof = Commitment.Single_G1.t
type commitment = Commitment.Single_G1.t
val preprocess_equal : preprocess -> preprocess -> bool

Comparison function for preprocess, used for test purposes

val preprocess_multiple_multi_reveals : public_parameters -> preprocess
val multiple_multi_reveals : public_parameters -> preprocess:preprocess -> coefficients:Octez_bls12_381_polynomial.scalar array -> shard_proof array
val verify : public_parameters -> commitment:commitment -> srs_point:Bls.G2.t -> domain:Bls.Domain.t -> root:Octez_bls12_381_polynomial.scalar -> evaluations:Octez_bls12_381_polynomial.scalar array -> proof:shard_proof -> bool
val verify_multi : public_parameters -> commitment:commitment -> srs_point:Bls.G2.t -> domain:Bls.Domain.t -> root_list:Octez_bls12_381_polynomial.scalar list -> evaluations_list:Octez_bls12_381_polynomial.scalar array list -> proof_list:shard_proof list -> bool

Verifies shard proofs in a batch : compared to using verify several times, this reduces the time spend to commit (only one commit for all proofs) and the time in pairing (only one pairing for all proofs).