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

PlutusCore.Crypto.BLS12_381.G1

Synopsis

add :: Element -> Element -> Element #

Add two G1 group elements

neg :: Element -> Element #

Negate a G1 group element

scalarMul :: Integer -> Element -> Element #

Multiplication of group elements by scalars. In the blst library the arguments are the other way round, but scalars acting on the left is more consistent with standard mathematical practice.

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

Take an arbitrary bytestring and a Domain Separation Tag (DST) and hash them to a get point in G1.

compress :: Element -> ByteString #

Compress a G1 element to a bytestring. This serialises a curve point to its x coordinate only. The compressed bytestring is 48 bytes long, with three spare bits used to convey extra information about the point, including determining which of two possible y coordinates the point has and whether the point is the point at infinity. See BLSTError Element #

Uncompress a bytestring to get a G1 point. This will fail if any of the following are true. * The bytestring is not exactly 48 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 E1 curve. * The bytestring does represent a point on the E1 curve, but the point is not in the G1 subgroup.

offchain_zero :: Element #

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

compressed_zero :: ByteString #

The zero element of G1 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 G1 compressed into a bytestring. This is provided for convenience in PlutusTx and is not exported as a builtin.

memSizeBytes :: Int #

Memory usage of a G1 point (144 bytes)

compressedSizeBytes :: Int #

Compressed size of a G1 point (48 bytes)

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

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