G.Srs
type polynomial = Mavkit_bls12_381_polynomial.Polynomial.t
val t : t Repr.t
type elt = G.t
val empty : t
val size : t -> int
Returns the pippenger ctxt size, i.e. the number of elements the context is supposed to be called with
val of_bigstring :
?len:int ->
Bigstringaf.t ->
(t, [> `End_of_file of string | `Invalid_point of int ]) Stdlib.result
of_bigstring ~len bs
reads len
points of G in affine compressed format from bs
and returns a Srs. If len
is omitted the whole bs is read. The bigstring can be loaded from a file with:
let bigstring_of_file filename =
let fd = Unix.openfile filename [ Unix.O_RDONLY ] 0o440 in
Bigarray.array1_of_genarray
@@ Unix.map_file fd Bigarray.char Bigarray.c_layout false
[| (* [-1] means read the whole file *) -1 |]
in
Srs_g1.of_bigstring
(bigstring_of_file ("srs_zcash_g1_21"))
(1 lsl 5)
or with Lwt:
let bigstring_of_file filename =
let fd = Unix.openfile filename [ Unix.O_RDONLY ] 0o440 in
Lwt_bytes.map_file ~fd ~shared:false ()
in
val generate_insecure : int -> Mavryk_bls12_381.Fr.t -> t
val pippenger : ?offset:int -> ?len:int -> t -> polynomial -> elt
pippenger ctxt poly
computes the multiscalar exponentiation using the SRS saved in the context and the coefficients of the given polynomial