Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
PlutusTx.Builtins.Internal
Description
This module contains the special Haskell names that are used to map to builtin types or functions in Plutus Core.
Most users should not use this module directly, but rather use Builtins
.
Please note that the documentation for each function will only include operational invariants if there are any. This documentation assumes type system correctly enforces and prevents any structural errors on the generated UPLC. See Note [Structural vs operational errors within builtins].
Synopsis
- error ∷ BuiltinUnit → a
- data BuiltinBool = BuiltinBool ~Bool
- true ∷ BuiltinBool
- false ∷ BuiltinBool
- ifThenElse ∷ BuiltinBool → a → a → a
- data BuiltinUnit = BuiltinUnit ~()
- unitval ∷ BuiltinUnit
- chooseUnit ∷ BuiltinUnit → a → a
- type BuiltinInteger = Integer
- addInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- subtractInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- multiplyInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- divideInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- modInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- quotientInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- remainderInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger
- lessThanInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool
- lessThanEqualsInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool
- equalsInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool
- data BuiltinByteString = BuiltinByteString ~ByteString
- appendByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString
- consByteString ∷ BuiltinInteger → BuiltinByteString → BuiltinByteString
- sliceByteString ∷ BuiltinInteger → BuiltinInteger → BuiltinByteString → BuiltinByteString
- lengthOfByteString ∷ BuiltinByteString → BuiltinInteger
- indexByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinInteger
- emptyByteString ∷ BuiltinByteString
- sha2_256 ∷ BuiltinByteString → BuiltinByteString
- sha3_256 ∷ BuiltinByteString → BuiltinByteString
- blake2b_224 ∷ BuiltinByteString → BuiltinByteString
- blake2b_256 ∷ BuiltinByteString → BuiltinByteString
- keccak_256 ∷ BuiltinByteString → BuiltinByteString
- ripemd_160 ∷ BuiltinByteString → BuiltinByteString
- verifyEd25519Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool
- verifyEcdsaSecp256k1Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool
- verifySchnorrSecp256k1Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool
- traceAll ∷ ∀ (a ∷ Type) (f ∷ Type → Type). Foldable f ⇒ f Text → a → a
- equalsByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinBool
- lessThanByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinBool
- lessThanEqualsByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinBool
- decodeUtf8 ∷ BuiltinByteString → BuiltinString
- data BuiltinString = BuiltinString ~Text
- appendString ∷ BuiltinString → BuiltinString → BuiltinString
- emptyString ∷ BuiltinString
- equalsString ∷ BuiltinString → BuiltinString → BuiltinBool
- trace ∷ BuiltinString → a → a
- encodeUtf8 ∷ BuiltinString → BuiltinByteString
- data BuiltinPair a b = BuiltinPair ~(a, b)
- fst ∷ BuiltinPair a b → a
- snd ∷ BuiltinPair a b → b
- mkPairData ∷ BuiltinData → BuiltinData → BuiltinPair BuiltinData BuiltinData
- data BuiltinList a = BuiltinList ~[a]
- null ∷ BuiltinList a → BuiltinBool
- head ∷ BuiltinList a → a
- tail ∷ BuiltinList a → BuiltinList a
- chooseList ∷ BuiltinList a → b → b → b
- caseList' ∷ ∀ a r. r → (a → BuiltinList a → r) → BuiltinList a → r
- drop ∷ Integer → BuiltinList a → BuiltinList a
- mkNilData ∷ BuiltinUnit → BuiltinList BuiltinData
- mkNilPairData ∷ BuiltinUnit → BuiltinList (BuiltinPair BuiltinData BuiltinData)
- mkCons ∷ a → BuiltinList a → BuiltinList a
- data BuiltinData = BuiltinData ~Data
- builtinDataToData ∷ BuiltinData → Data
- dataToBuiltinData ∷ Data → BuiltinData
- chooseData ∷ ∀ a. BuiltinData → a → a → a → a → a → a
- caseData' ∷ (Integer → BuiltinList BuiltinData → r) → (BuiltinList (BuiltinPair BuiltinData BuiltinData) → r) → (BuiltinList BuiltinData → r) → (Integer → r) → (BuiltinByteString → r) → BuiltinData → r
- mkConstr ∷ BuiltinInteger → BuiltinList BuiltinData → BuiltinData
- mkMap ∷ BuiltinList (BuiltinPair BuiltinData BuiltinData) → BuiltinData
- mkList ∷ BuiltinList BuiltinData → BuiltinData
- mkI ∷ BuiltinInteger → BuiltinData
- mkB ∷ BuiltinByteString → BuiltinData
- unsafeDataAsConstr ∷ BuiltinData → BuiltinPair BuiltinInteger (BuiltinList BuiltinData)
- unsafeDataAsMap ∷ BuiltinData → BuiltinList (BuiltinPair BuiltinData BuiltinData)
- unsafeDataAsList ∷ BuiltinData → BuiltinList BuiltinData
- unsafeDataAsI ∷ BuiltinData → BuiltinInteger
- unsafeDataAsB ∷ BuiltinData → BuiltinByteString
- equalsData ∷ BuiltinData → BuiltinData → BuiltinBool
- serialiseData ∷ BuiltinData → BuiltinByteString
- data BuiltinArray a = BuiltinArray ~(Vector a)
- lengthOfArray ∷ BuiltinArray a → BuiltinInteger
- listToArray ∷ BuiltinList a → BuiltinArray a
- indexArray ∷ BuiltinArray a → BuiltinInteger → a
- data BuiltinBLS12_381_G1_Element = BuiltinBLS12_381_G1_Element ~Element
- bls12_381_G1_equals ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element → BuiltinBool
- bls12_381_G1_add ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element
- bls12_381_G1_neg ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element
- bls12_381_G1_scalarMul ∷ BuiltinInteger → BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element
- bls12_381_G1_compress ∷ BuiltinBLS12_381_G1_Element → BuiltinByteString
- bls12_381_G1_uncompress ∷ BuiltinByteString → BuiltinBLS12_381_G1_Element
- bls12_381_G1_hashToGroup ∷ BuiltinByteString → BuiltinByteString → BuiltinBLS12_381_G1_Element
- bls12_381_G1_compressed_zero ∷ BuiltinByteString
- bls12_381_G1_compressed_generator ∷ BuiltinByteString
- data BuiltinBLS12_381_G2_Element = BuiltinBLS12_381_G2_Element ~Element
- bls12_381_G2_equals ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element → BuiltinBool
- bls12_381_G2_add ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element
- bls12_381_G2_neg ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element
- bls12_381_G2_scalarMul ∷ BuiltinInteger → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element
- bls12_381_G2_compress ∷ BuiltinBLS12_381_G2_Element → BuiltinByteString
- bls12_381_G2_uncompress ∷ BuiltinByteString → BuiltinBLS12_381_G2_Element
- bls12_381_G2_hashToGroup ∷ BuiltinByteString → BuiltinByteString → BuiltinBLS12_381_G2_Element
- bls12_381_G2_compressed_zero ∷ BuiltinByteString
- bls12_381_G2_compressed_generator ∷ BuiltinByteString
- data BuiltinBLS12_381_MlResult = BuiltinBLS12_381_MlResult ~MlResult
- bls12_381_millerLoop ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_MlResult
- bls12_381_mulMlResult ∷ BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult
- bls12_381_finalVerify ∷ BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult → BuiltinBool
- integerToByteString ∷ BuiltinBool → BuiltinInteger → BuiltinInteger → BuiltinByteString
- byteStringToInteger ∷ BuiltinBool → BuiltinByteString → BuiltinInteger
- shiftByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinByteString
- rotateByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinByteString
- countSetBits ∷ BuiltinByteString → BuiltinInteger
- findFirstSetBit ∷ BuiltinByteString → BuiltinInteger
- andByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString
- orByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString
- xorByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString
- complementByteString ∷ BuiltinByteString → BuiltinByteString
- readBit ∷ BuiltinByteString → BuiltinInteger → BuiltinBool
- writeBits ∷ BuiltinByteString → BuiltinList BuiltinInteger → BuiltinBool → BuiltinByteString
- replicateByte ∷ BuiltinInteger → BuiltinInteger → BuiltinByteString
- expModInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger → BuiltinInteger
Documentation
error ∷ BuiltinUnit → a Source #
data BuiltinBool Source #
Constructors
BuiltinBool ~Bool |
Instances
ifThenElse ∷ BuiltinBool → a → a → a Source #
data BuiltinUnit Source #
Constructors
BuiltinUnit ~() |
Instances
unitval ∷ BuiltinUnit Source #
Unit
chooseUnit ∷ BuiltinUnit → a → a Source #
type BuiltinInteger = Integer Source #
addInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Adds two integers and never fails.
subtractInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Subtracts two integers and never fails.
multiplyInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Multiplies two integers and never fails.
divideInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Finds the quotient of two integers and fails when the second argument, the divisor, is zero.
See Note [Integer division operations] for explanation on divideInteger
, modInteger
,
quotientInteger
, and remainderInteger
.
modInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Finds the remainder of two integers and fails when the second argument, the divisor, is zero.
quotientInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Finds the quotient of two integers and fails when the second argument, the divisor, is zero.
remainderInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Finds the remainder of two integers and fails when the second argument, the divisor, is zero.
lessThanInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool Source #
Compares two integers and returns true when the first argument is less than the second | argument.
lessThanEqualsInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool Source #
Compares two integers and returns true when the first argument is less or equal to than the | second argument.
equalsInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinBool Source #
Checks equality of two integers and never fails.
data BuiltinByteString Source #
An opaque type representing Plutus Core ByteStrings.
Constructors
BuiltinByteString ~ByteString |
Instances
appendByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString Source #
Appends a bytestring to another and never fails.
consByteString ∷ BuiltinInteger → BuiltinByteString → BuiltinByteString Source #
Appends a byte to the given bytestring.
The semantics of this function differ based on [Builtin semantics variants].
- For builtin semantics variant A and B, that is for PlutusV1 and PlutusV2, this reduces the first argument
modulo 256 and will never fail.
- For builtin semantics variant C, that is for PlutusV3, this will expect first argument to be in range
[0..255]
and fail otherwise.
sliceByteString ∷ BuiltinInteger → BuiltinInteger → BuiltinByteString → BuiltinByteString Source #
Slices the given bytestring and never fails. The first integer marks the beginning index and the second marks the end. Indices are expected to be 0-indexed, and when the first integer is greater than the second, it returns an empty bytestring.
lengthOfByteString ∷ BuiltinByteString → BuiltinInteger Source #
Returns the length of the provided bytestring.
indexByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinInteger Source #
Returns the n-th byte from the bytestring. Fails if the given index is not in the range [0..j)
,
where j
is the length of the bytestring.
emptyByteString ∷ BuiltinByteString Source #
An empty bytestring.
sha2_256 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the SHA2-256 hash of the given bytestring.
sha3_256 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the SHA3-256 hash of the given bytestring.
blake2b_224 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the Blake2b-224 hash of the given bytestring.
blake2b_256 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the Blake2b-256 hash of the given bytestring.
keccak_256 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the Keccak-256 hash of the given bytestring.
ripemd_160 ∷ BuiltinByteString → BuiltinByteString Source #
Computes the RIPEMD-160 hash of the given bytestring.
verifyEd25519Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool Source #
Ed25519 signature verification. The first bytestring is the public key (32 bytes), followed by an arbitrary-size message and the signature (64 bytes). The sizes of the public key and signature are enforced, and it fails when given bytestrings of incorrect size.
verifyEcdsaSecp256k1Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool Source #
ECDSA signature verification on the SECP256k1 curve. The first bytestring is the public key (32 bytes), followed by the message hash (32 bytes) and the signature (64 bytes). The sizes of the public key and signature are enforced, and it fails when given bytestrings of incorrect size.
verifySchnorrSecp256k1Signature ∷ BuiltinByteString → BuiltinByteString → BuiltinByteString → BuiltinBool Source #
Schnorr signature verification on the SECP256k1 curve. The first bytestring is the public key (32 bytes), followed by an arbitrary-length message and the signature (64 bytes). The sizes of the public key and signature are enforced, and it fails when given bytestrings of incorrect size.
traceAll ∷ ∀ (a ∷ Type) (f ∷ Type → Type). Foldable f ⇒ f Text → a → a Source #
Runs trace for each element in a foldable structure.
equalsByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinBool Source #
Checks the equality of two bytestrings and never fails
lessThanEqualsByteString ∷ BuiltinByteString → BuiltinByteString → BuiltinBool Source #
Checks if the first bytestring is less than or equal to the second bytestring and never fails.
decodeUtf8 ∷ BuiltinByteString → BuiltinString Source #
Decodes the given bytestring to a string and fails when the given bytestring is not a valid UTF-8 bytestring.
data BuiltinString Source #
Constructors
BuiltinString ~Text |
Instances
appendString ∷ BuiltinString → BuiltinString → BuiltinString Source #
Appends a string to another and never fails.
emptyString ∷ BuiltinString Source #
An empty string.
equalsString ∷ BuiltinString → BuiltinString → BuiltinBool Source #
Checks the equality of two strings and never fails.
trace ∷ BuiltinString → a → a Source #
Emits a trace message and never fails.
encodeUtf8 ∷ BuiltinString → BuiltinByteString Source #
Encodes a string into a bytestring and never fails.
data BuiltinPair a b Source #
Constructors
BuiltinPair ~(a, b) |
Instances
fst ∷ BuiltinPair a b → a Source #
Takes first value from the tuple and never fails.
snd ∷ BuiltinPair a b → b Source #
Takes second value from the tuple and never fails.
mkPairData ∷ BuiltinData → BuiltinData → BuiltinPair BuiltinData BuiltinData Source #
Constructs tuple from two builtin data.
data BuiltinList a Source #
Constructors
BuiltinList ~[a] |
Instances
null ∷ BuiltinList a → BuiltinBool Source #
Checks if the given list is empty.
head ∷ BuiltinList a → a Source #
Takes the first element of the list and fails if given list is empty.
tail ∷ BuiltinList a → BuiltinList a Source #
Takes the last element of the list and fails if given list is empty.
chooseList ∷ BuiltinList a → b → b → b Source #
Branches out depending on the structure of given list and never fails. If given list is empty, it will take the first branch and if not it will take the second branch.
caseList' ∷ ∀ a r. r → (a → BuiltinList a → r) → BuiltinList a → r Source #
Similar to chooseList
but deconstructs the list in case provided list is not empty.
drop ∷ Integer → BuiltinList a → BuiltinList a Source #
Drops first n elements from the given list and never fails.
mkNilData ∷ BuiltinUnit → BuiltinList BuiltinData Source #
Creates an empty data list and never fails. Prefer using constant. See Note [Constants vs built-in functions]
mkNilPairData ∷ BuiltinUnit → BuiltinList (BuiltinPair BuiltinData BuiltinData) Source #
Creates an empty data pair list and never fails. Prefer using constant. See Note [Constants vs built-in functions]
mkCons ∷ a → BuiltinList a → BuiltinList a Source #
Appends a new element to the given list and never fails.
data BuiltinData Source #
A type corresponding to the Plutus Core builtin equivalent of Data
.
The point of this type is to be an opaque equivalent of Data
, so as to
ensure that it is only used in ways that the compiler can handle.
As such, you should use this type in your on-chain code, and in any data structures that you want to be representable on-chain.
For off-chain usage, there are conversion functions builtinDataToData
and
dataToBuiltinData
, but note that these will not work on-chain.
Constructors
BuiltinData ~Data |
Instances
builtinDataToData ∷ BuiltinData → Data Source #
NOT a builtin. Converts a BuiltinData
into a Data
. Only works off-chain.
dataToBuiltinData ∷ Data → BuiltinData Source #
NOT a builtin. Converts a Data
into a BuiltinData
. Only works off-chain.
chooseData ∷ ∀ a. BuiltinData → a → a → a → a → a → a Source #
Branches out depending on the structure of given data and never fails.
caseData' ∷ (Integer → BuiltinList BuiltinData → r) → (BuiltinList (BuiltinPair BuiltinData BuiltinData) → r) → (BuiltinList BuiltinData → r) → (Integer → r) → (BuiltinByteString → r) → BuiltinData → r Source #
Similar to chooseData
but deconstructs the data on each cases. Never fails.
mkConstr ∷ BuiltinInteger → BuiltinList BuiltinData → BuiltinData Source #
Creates Constr
data value with the given index and elements; never fails.
mkMap ∷ BuiltinList (BuiltinPair BuiltinData BuiltinData) → BuiltinData Source #
Creates Map
data value with the given list of pairs and never fails.
mkList ∷ BuiltinList BuiltinData → BuiltinData Source #
Creates List
data value with the given list and never fails.
mkI ∷ BuiltinInteger → BuiltinData Source #
Creates I
data value with the given integer and never fails.
mkB ∷ BuiltinByteString → BuiltinData Source #
Creates B
data value with the given bytestring and never fails.
unsafeDataAsConstr ∷ BuiltinData → BuiltinPair BuiltinInteger (BuiltinList BuiltinData) Source #
Deconstructs the given data as a Constr
, failing if it is not a Constr
.
unsafeDataAsMap ∷ BuiltinData → BuiltinList (BuiltinPair BuiltinData BuiltinData) Source #
Deconstructs the given data as a Map
, failing if it is not a Map
.
unsafeDataAsList ∷ BuiltinData → BuiltinList BuiltinData Source #
Deconstructs the given data as a List
, failing if it is not a List
.
unsafeDataAsI ∷ BuiltinData → BuiltinInteger Source #
Deconstructs the given data as a I
, failing if it is not a I
.
unsafeDataAsB ∷ BuiltinData → BuiltinByteString Source #
Deconstructs the given data as a B
, failing if it is not a B
.
equalsData ∷ BuiltinData → BuiltinData → BuiltinBool Source #
Checks equality of two data and never fails.
data BuiltinArray a Source #
Constructors
BuiltinArray ~(Vector a) |
Instances
lengthOfArray ∷ BuiltinArray a → BuiltinInteger Source #
Returns the length of the provided array and never fails
listToArray ∷ BuiltinList a → BuiltinArray a Source #
Converts given list into array and never fails.
indexArray ∷ BuiltinArray a → BuiltinInteger → a Source #
Returns the n-th element from the array. Fails if the given index is not in the range [0..j)
,
where j
is the length of the array.
data BuiltinBLS12_381_G1_Element Source #
Constructors
BuiltinBLS12_381_G1_Element ~Element |
Instances
bls12_381_G1_equals ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element → BuiltinBool Source #
Checks equality of two G1 elements and never fails.
bls12_381_G1_add ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element Source #
Adds two G1 elements and never fails.
bls12_381_G1_neg ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element Source #
Negates a G1 element and never fails.
bls12_381_G1_scalarMul ∷ BuiltinInteger → BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G1_Element Source #
Multiplies a G1 element by a scalar and never fails.
bls12_381_G1_compress ∷ BuiltinBLS12_381_G1_Element → BuiltinByteString Source #
Compresses a G1 element to a bytestring and never fails.
bls12_381_G1_uncompress ∷ BuiltinByteString → BuiltinBLS12_381_G1_Element Source #
Uncompresses a bytestring to a G1 element, failing if the bytestring is not a valid compressed G1 element.
bls12_381_G1_hashToGroup ∷ BuiltinByteString → BuiltinByteString → BuiltinBLS12_381_G1_Element Source #
Hashes an arbitrary bytestring message to a G1 element using the given domain separation tag (DST), failing if length of the DST is bigger than 255 bytes.
bls12_381_G1_compressed_zero ∷ BuiltinByteString Source #
The compressed form of the G1 identity element.
bls12_381_G1_compressed_generator ∷ BuiltinByteString Source #
The compressed form of the G1 generator element.
data BuiltinBLS12_381_G2_Element Source #
Constructors
BuiltinBLS12_381_G2_Element ~Element |
Instances
bls12_381_G2_equals ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element → BuiltinBool Source #
Checks equality of two G2 elements and never fails.
bls12_381_G2_add ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element Source #
Adds two G2 elements and never fails.
bls12_381_G2_neg ∷ BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element Source #
Negates a G2 element and never fails.
bls12_381_G2_scalarMul ∷ BuiltinInteger → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_G2_Element Source #
Multiplies a G2 element by a scalar and never fails.
bls12_381_G2_compress ∷ BuiltinBLS12_381_G2_Element → BuiltinByteString Source #
Compresses a G2 element to a bytestring and never fails.
bls12_381_G2_uncompress ∷ BuiltinByteString → BuiltinBLS12_381_G2_Element Source #
Uncompresses a bytestring to a G2 element, failing if the bytestring is not a valid compressed G2 element.
bls12_381_G2_hashToGroup ∷ BuiltinByteString → BuiltinByteString → BuiltinBLS12_381_G2_Element Source #
Hashes an arbitrary bytestring message to a G2 element using the given domain separation tag (DST), failing if length of the DST is bigger than 255 bytes.
bls12_381_G2_compressed_zero ∷ BuiltinByteString Source #
The compressed form of the G2 identity element (also known as zero or point at infinity).
bls12_381_G2_compressed_generator ∷ BuiltinByteString Source #
The compressed form of the G2 generator element.
data BuiltinBLS12_381_MlResult Source #
Constructors
BuiltinBLS12_381_MlResult ~MlResult |
Instances
bls12_381_millerLoop ∷ BuiltinBLS12_381_G1_Element → BuiltinBLS12_381_G2_Element → BuiltinBLS12_381_MlResult Source #
Computes the Miller loop between a G1 element and a G2 element and never fails.
bls12_381_mulMlResult ∷ BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult Source #
Multiplies two Miller loop results and never fails.
bls12_381_finalVerify ∷ BuiltinBLS12_381_MlResult → BuiltinBLS12_381_MlResult → BuiltinBool Source #
Performs the final verification step of a pairing check. Returns true if e(P,Q) == e(R,S) for the given Miller loop results, and never fails.
integerToByteString ∷ BuiltinBool → BuiltinInteger → BuiltinInteger → BuiltinByteString Source #
Converts the given integer to a bytestring. The first argument specifies
endianness (True for big-endian), followed by the target length of the resulting bytestring
and the integer itself. See integerToByteString
for its invariances.
byteStringToInteger ∷ BuiltinBool → BuiltinByteString → BuiltinInteger Source #
Converts the given bytestring to the integer and never fails. The first argument specifies endianness (True for big-endian), followed by the bytestring.
shiftByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinByteString Source #
Shifts the bytestring to the left if the second argument is positive, and to the right otherwise. Right-shifts fill with 0s from the left (logical shift); left-shifts fill with 0s from the right. Never fails.
rotateByteString ∷ BuiltinByteString → BuiltinInteger → BuiltinByteString Source #
Rotates the bytestring to the left if the second argument is positive, and to the right otherwise. Never fails.
countSetBits ∷ BuiltinByteString → BuiltinInteger Source #
Counts the number of bits set to 1 in the bytestring and never fails.
findFirstSetBit ∷ BuiltinByteString → BuiltinInteger Source #
Finds the index of the first bit set to 1 in the bytestring. If the bytestring consists only of 0s, it returns the length of the bytestring in bits. Never fails.
andByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString Source #
Performs a bitwise AND on two bytestrings. The first boolean argument indicates whether to use padding (True) or truncation (False) if the bytestrings have different lengths. Never fails.
orByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString Source #
Performs a bitwise OR on two bytestrings. The first boolean argument indicates whether to use padding (True) or truncation (False) if the bytestrings have different lengths. Never fails.
xorByteString ∷ BuiltinBool → BuiltinByteString → BuiltinByteString → BuiltinByteString Source #
Performs a bitwise XOR on two bytestrings. The first boolean argument indicates whether to use padding (True) or truncation (False) if the bytestrings have different lengths. Never fails.
complementByteString ∷ BuiltinByteString → BuiltinByteString Source #
Performs a bitwise complement on the bytestring and never fails.
readBit ∷ BuiltinByteString → BuiltinInteger → BuiltinBool Source #
Reads the bit at the given index in the bytestring. Fails if the index is out of bounds.
writeBits ∷ BuiltinByteString → BuiltinList BuiltinInteger → BuiltinBool → BuiltinByteString Source #
Writes the given bit (third argument, True for 1, False for 0) at the specified indices (second argument) in the bytestring. Fails if any index is out of bounds.
replicateByte ∷ BuiltinInteger → BuiltinInteger → BuiltinByteString Source #
Creates a bytestring of a given length by repeating the given byte.
Fails if the byte, second argument, is not in range [0,255]
or the length is negative.
expModInteger ∷ BuiltinInteger → BuiltinInteger → BuiltinInteger → BuiltinInteger Source #
Computes modular exponentiation (base^exponent mod modulus). Fails if the modulus is zero or negative, or if the exponent is negative and the modular inverse does not exist.