Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- newtype Element = Element {
- unElement :: Point1
- add :: Element -> Element -> Element
- neg :: Element -> Element
- scalarMul :: Integer -> Element -> Element
- hashToGroup :: ByteString -> ByteString -> Either BLS12_381_Error Element
- compress :: Element -> ByteString
- uncompress :: ByteString -> Either BLSTError Element
- offchain_zero :: Element
- compressed_zero :: ByteString
- compressed_generator :: ByteString
- memSizeBytes :: Int
- compressedSizeBytes :: Int
Documentation
Instances
scalarMul :: Integer -> Element -> Element Source #
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 Source #
Take an arbitrary bytestring and a Domain Separation Tag (DST) and hash them to a get point in G1.
compress :: Element -> ByteString Source #
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 https://github.com/supranational/blst#serialization-format
uncompress :: ByteString -> Either BLSTError Element Source #
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 Source #
The zero element of G1. This cannot be flat-serialised and is provided only for off-chain testing.
compressed_zero :: ByteString Source #
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 Source #
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 Source #
Memory usage of a G1 point (144 bytes)
compressedSizeBytes :: Int Source #
Compressed size of a G1 point (48 bytes)