package tezos-protocol-environment
- Overview
- No Docs
You can search for identifiers within the package.
in-package search v0.2.0
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=7062cd57addd452852598a2214ade393130efa087b99068d53713bdf912b3680
sha512=08e4091144a03ce3c107fb91a66501bd8b65ca3278917c455a2eaac6df3e108ade63f6ab8340a4bb152d60f404326e464d0ec95d26cafe8e82f870465d24a5fc
doc/tezos-protocol-environment.structs/Tezos_protocol_environment_structs/V2/Bls12_381/Fq12/index.html
Module Bls12_381.Fq12
Source
include module type of struct include Bls12_381.Fq12 end
An element of the field extension. It is not ensured the element are in the prime multiplicative subgroup. If you need inhabitants of the prime subgroup, use the module GT
Minimal number of bytes required to encode a value of the group
Actual number of bytes allocated for a value of type t
is_zero x
returns true
if x
is the neutral element of the additive subgroup
is_one x
returns true
if x
is the neutral element for the multiplication
inverse_exn x
returns x^-1 mod order
if x
is not 0
, else raise Division_by_zero
. Equivalently, inverse_exn x
returns the unique y
such that x * y mod order = 1
inverse_opt x
returns x^-1 mod order
as an option if x
is not 0
, else returns None
. Equivalently, inverse_opt x
returns the unique y
such that x * y mod order = 1
Generates a random element.
The routines in the module Random.State
are used to generate the elements. A state can be given to the function to be used. If no state is given, Random.get_state
is used.
To create a value of type Random.State.t
, you can use Random.State.make [|42|]
.
of_bytes_exn bs
builds a value of type t. Each coordinate is expected to be in little endian and the constant monomial is always encoded first. The size of bs
is expected to be size_in_bytes
. If the element is not in the field or if bs
is not of size size_in_bytes
, raises Not_in_field
with bs
in parameter.
Same than of_bytes_exn
but returns an option instead of raising an exception
to_bytes p
encodes the point p
following the encoding described by of_bytes_exn
val of_string :
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
String.t ->
t
Construct an element of Fq12 based on the following pattern:
Fq12 = (Fq6 (Fq2(x: x0, y: x1)) Fq2(x: x2, y: x3)) Fq2(x: x4, y: x5)), Fq6 ( Fq2(x: x6, y: x7)) Fq2(x: x8, y: x9)) Fq2(x: x10, y: x11))
x0, ..., x11
are the parameters of the function. No check is applied.
Example of usage (pairing result of the multiplicative neutre elements): ```OCaml Fq12.of_string "2819105605953691245277803056322684086884703000473961065716485506033588504203831029066448642358042597501014294104502" "1323968232986996742571315206151405965104242542339680722164220900812303524334628370163366153839984196298685227734799" "2987335049721312504428602988447616328830341722376962214011674875969052835043875658579425548512925634040144704192135" "3879723582452552452538684314479081967502111497413076598816163759028842927668327542875108457755966417881797966271311" "261508182517997003171385743374653339186059518494239543139839025878870012614975302676296704930880982238308326681253" "231488992246460459663813598342448669854473942105054381511346786719005883340876032043606739070883099647773793170614" "3993582095516422658773669068931361134188738159766715576187490305611759126554796569868053818105850661142222948198557" "1074773511698422344502264006159859710502164045911412750831641680783012525555872467108249271286757399121183508900634" "2727588299083545686739024317998512740561167011046940249988557419323068809019137624943703910267790601287073339193943" "493643299814437640914745677854369670041080344349607504656543355799077485536288866009245028091988146107059514546594" "734401332196641441839439105942623141234148957972407782257355060229193854324927417865401895596108124443575283868655" "2348330098288556420918672502923664952620152483128593484301759394583320358354186482723629999370241674973832318248497" ``` Source.
Undefined behaviours if the given elements are not in the field or any other representation than decimal is used. Use this function carefully.
See https://docs.rs/crate/pairing/0.16.0/source/src/bls12_381/README.md for more information on the instances used by the library.
FIXME: the function is not memory efficient because the elements are copied multiple times.