plutus-core-1.60.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusCore.Crypto.BLS12_381.G2

Synopsis

add :: Element -> Element -> Element #

Add two G2 group elements

neg :: Element -> Element #

Negate a G2 group element

scalarMul :: Integer -> Element -> Element #

hashToGroup :: ByteString -> ByteString -> Either BLS12_381_Error Element #

compress :: Element -> ByteString #

Compress a G2 element to a bytestring. This serialises a curve point to its x coordinate only, using an extra bit to determine which of two possible y coordinates the point has. The compressed bytestring is 96 bytes long. See BLSTError Element #

Uncompress a bytestring to get a G2 point. This will fail if any of the following are true: * The bytestring is not exactly 96 bytes long * The most significant three bits are used incorrectly * The bytestring encodes a field element which is not the x coordinate of a point on the E2 curve * The bytestring does represent a point on the E2 curve, but the point is not in the G2 subgroup

offchain_zero :: Element #

The zero element of G2. This cannot be flat-serialised and is provided only for off-chain testing.

compressed_zero :: ByteString #

The zero element of G2 compressed into a bytestring. This is provided for convenience in PlutusTx and is not exported as a builtin.

compressed_generator :: ByteString #

The standard generator of G2 compressed into a bytestring. This is provided for convenience in PlutusTx and is not exported as a builtin.

memSizeBytes :: Int #

Memory usage of a G2 point (288 bytes)

compressedSizeBytes :: Int #

Compressed size of a G2 point (96 bytes)

multiScalarMul :: [Integer] -> [Element] -> BuiltinResult Element #

Multi-scalar multiplication of G2 points. We limit the allowable size of scalars to simplify costing.