plutus-tx-1.60.0.0: Libraries for Plutus Tx and its prelude
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusTx

Synopsis

data CompiledCodeIn uni fun a #

A compiled Plutus Tx program. The last type parameter indicates the type of the Haskell expression that was compiled, and hence the type of the compiled code.

Note: the compiled PLC program does *not* have normalized types, if you want to put it on the chain you must normalize the types first.

getPlc :: (SomeTypeIn uni)) => CompiledCodeIn uni fun (a -> b) -> CompiledCodeIn uni fun a -> CompiledCodeIn uni fun b #

Apply a compiled function to a compiled argument. Will throw if the versions don't match, should only be used in non-production code.

data BuiltinData #

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.

Instances

Instances details
TyName uni ()) #

HasToOpaque (BuiltinData, BuiltinData) (BuiltinPair BuiltinData BuiltinData) # 
Instance details

Defined in PlutusTx.Builtins.HasOpaque

type Rep BuiltinData # 
Instance details

Defined in PlutusTx.Builtins.Internal

type Rep BuiltinData = D1 ('MetaData "BuiltinData" "PlutusTx.Builtins.Internal" "plutus-tx-1.60.0.0-inplace" 'False) (C1 ('MetaCons "BuiltinData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceLazy 'DecidedLazy) (Rec0 Data)))
type Unroll BuiltinData # 
Instance details

Defined in PlutusTx.Blueprint.Definition.Unroll

type FromBuiltin BuiltinData # 
Instance details

Defined in PlutusTx.Builtins.HasBuiltin

data Data #

A generic "data" type.

The main constructor Constr represents a datatype value in sum-of-products form: Constr i args represents a use of the ith constructor along with its arguments.

The other constructors are various primitives.

class ToData (a :: Type) where #

A typeclass for types that can be converted to and from BuiltinData.

Methods

toBuiltinData :: a -> BuiltinData #

Convert a value to BuiltinData.

Instances

Instances details
ToData Void # 
Instance details

Defined in PlutusTx.IsData.Class

ToData BuiltinBLS12_381_G1_Element #

For the BLS12-381 G1 and G2 types we use the compress functions to convert to a ByteString and then encode that as Data as usual. We have to be more careful going the other way because we decode a Data object to (possibly) get a BuiltinByteString and then uncompress the underlying ByteString to get a group element. However uncompression can fail so we have to check what happens: we don't use bls12_381_G?_uncompress because that invokes error if something goes wrong (but we do use it for unsafeFromData).

Instance details

Defined in PlutusTx.IsData.Class

ToData BuiltinBLS12_381_G2_Element # 
Instance details

Defined in PlutusTx.IsData.Class

(TypeError ('Text "toBuiltinData is not supported for BuiltinBLS12_381_MlResult") :: Constraint) => ToData BuiltinBLS12_381_MlResult #

We do not provide instances of any of these classes for BuiltinBLS12_381_MlResult since there is no serialisation format: we expect that values of that type will only occur as the result of on-chain computations.

Instance details

Defined in PlutusTx.IsData.Class

ToData BuiltinByteString # 
Instance details

Defined in PlutusTx.IsData.Class

ToData BuiltinData # 
Instance details

Defined in PlutusTx.IsData.Class

ToData Rational # 
Instance details

Defined in PlutusTx.Ratio

ToData Sqrt # 
Instance details

Defined in PlutusTx.Sqrt

ToData Integer # 
Instance details

Defined in PlutusTx.IsData.Class

ToData () # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

toBuiltinData :: () -> BuiltinData #

ToData Bool # 
Instance details

Defined in PlutusTx.IsData.Instances

(TypeError ('Text "Int is not supported, use Integer instead") :: Constraint) => ToData Int # 
Instance details

Defined in PlutusTx.IsData.Class

ToData (List a) # 
Instance details

Defined in PlutusTx.Data.List

ToData a => ToData (Maybe a) # 
Instance details

Defined in PlutusTx.IsData.Instances

ToData a => ToData [a] # 
Instance details

Defined in PlutusTx.IsData.Class

Methods

toBuiltinData :: [a] -> BuiltinData #

(ToData a, ToData b) => ToData (Either a b) # 
Instance details

Defined in PlutusTx.IsData.Instances

(ToData k, ToData v) => ToData (Map k v) #

Hand-written instances to use the underlying Map type in Data, and to be reasonably efficient.

Instance details

Defined in PlutusTx.AssocMap

Methods

toBuiltinData :: Map k v -> BuiltinData #

ToData (Map k a) # 
Instance details

Defined in PlutusTx.Data.AssocMap

Methods

toBuiltinData :: Map k a -> BuiltinData #

(ToData a, ToData b) => ToData (These a b) # 
Instance details

Defined in PlutusTx.These

Methods

toBuiltinData :: These a b -> BuiltinData #

(ToData a, ToData b) => ToData (a, b) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

toBuiltinData :: (a, b) -> BuiltinData #

(ToData a, ToData b, ToData c) => ToData (a, b, c) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

toBuiltinData :: (a, b, c) -> BuiltinData #

(ToData a, ToData b, ToData c, ToData d) => ToData (a, b, c, d) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

toBuiltinData :: (a, b, c, d) -> BuiltinData #

class FromData (a :: Type) where #

Methods

fromBuiltinData :: BuiltinData -> Maybe a #

Convert a value from BuiltinData, returning Nothing if this fails.

Instances

Instances details
FromData Void # 
Instance details

Defined in PlutusTx.IsData.Class

FromData BuiltinBLS12_381_G1_Element # 
Instance details

Defined in PlutusTx.IsData.Class

FromData BuiltinBLS12_381_G2_Element # 
Instance details

Defined in PlutusTx.IsData.Class

(TypeError ('Text "fromBuiltinData is not supported for BuiltinBLS12_381_MlResult") :: Constraint) => FromData BuiltinBLS12_381_MlResult # 
Instance details

Defined in PlutusTx.IsData.Class

FromData BuiltinByteString # 
Instance details

Defined in PlutusTx.IsData.Class

FromData BuiltinData # 
Instance details

Defined in PlutusTx.IsData.Class

FromData Rational # 
Instance details

Defined in PlutusTx.Ratio

FromData Sqrt # 
Instance details

Defined in PlutusTx.Sqrt

FromData Integer # 
Instance details

Defined in PlutusTx.IsData.Class

FromData () # 
Instance details

Defined in PlutusTx.IsData.Instances

FromData Bool # 
Instance details

Defined in PlutusTx.IsData.Instances

(TypeError ('Text "Int is not supported, use Integer instead") :: Constraint) => FromData Int # 
Instance details

Defined in PlutusTx.IsData.Class

FromData (List a) # 
Instance details

Defined in PlutusTx.Data.List

FromData a => FromData (Maybe a) # 
Instance details

Defined in PlutusTx.IsData.Instances

FromData a => FromData [a] # 
Instance details

Defined in PlutusTx.IsData.Class

(FromData a, FromData b) => FromData (Either a b) # 
Instance details

Defined in PlutusTx.IsData.Instances

(FromData k, FromData v) => FromData (Map k v) #

A hand-written transformation from Data to Map. Compared to unsafeFromBuiltinData, it is safe to call when it is unknown if the Data is built with Datas Map constructor. Note that it is, however, unsafe in the sense that it assumes that any map encoded in the Data is well-formed, i.e. fromBuiltinData does not perform any deduplication of keys or of key-value pairs!

Instance details

Defined in PlutusTx.AssocMap

FromData (Map k a) # 
Instance details

Defined in PlutusTx.Data.AssocMap

(FromData a, FromData b) => FromData (These a b) # 
Instance details

Defined in PlutusTx.These

(FromData a, FromData b) => FromData (a, b) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

fromBuiltinData :: BuiltinData -> Maybe (a, b) #

(FromData a, FromData b, FromData c) => FromData (a, b, c) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

fromBuiltinData :: BuiltinData -> Maybe (a, b, c) #

(FromData a, FromData b, FromData c, FromData d) => FromData (a, b, c, d) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

fromBuiltinData :: BuiltinData -> Maybe (a, b, c, d) #

class UnsafeFromData (a :: Type) where #

Methods

unsafeFromBuiltinData :: BuiltinData -> a #

Convert a value from BuiltinData, calling error if this fails. This is typically much faster than fromBuiltinData.

When implementing this function, make sure to call unsafeFromBuiltinData rather than fromBuiltinData when converting substructures!

This is a simple type without any validation, use with caution.

Instances

Instances details
UnsafeFromData Void # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData BuiltinBLS12_381_G1_Element # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData BuiltinBLS12_381_G2_Element # 
Instance details

Defined in PlutusTx.IsData.Class

(TypeError ('Text "unsafeFromBuiltinData is not supported for BuiltinBLS12_381_MlResult") :: Constraint) => UnsafeFromData BuiltinBLS12_381_MlResult # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData BuiltinByteString # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData BuiltinData # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData Rational # 
Instance details

Defined in PlutusTx.Ratio

UnsafeFromData Sqrt # 
Instance details

Defined in PlutusTx.Sqrt

UnsafeFromData Integer # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData () # 
Instance details

Defined in PlutusTx.IsData.Instances

UnsafeFromData Bool # 
Instance details

Defined in PlutusTx.IsData.Instances

(TypeError ('Text "Int is not supported, use Integer instead") :: Constraint) => UnsafeFromData Int # 
Instance details

Defined in PlutusTx.IsData.Class

UnsafeFromData (List a) # 
Instance details

Defined in PlutusTx.Data.List

UnsafeFromData a => UnsafeFromData (Maybe a) # 
Instance details

Defined in PlutusTx.IsData.Instances

UnsafeFromData a => UnsafeFromData [a] # 
Instance details

Defined in PlutusTx.IsData.Class

(UnsafeFromData a, UnsafeFromData b) => UnsafeFromData (Either a b) # 
Instance details

Defined in PlutusTx.IsData.Instances

(UnsafeFromData k, UnsafeFromData v) => UnsafeFromData (Map k v) #

A hand-written transformation from Data to Map. It is unsafe because the caller must provide the guarantee that the Data is constructed using the Datas Map constructor. Note that it assumes, like the fromBuiltinData transformation, that the map encoded in the Data is well-formed, i.e. unsafeFromBuiltinData does not perform any deduplication of keys or of key-value pairs!

Instance details

Defined in PlutusTx.AssocMap

UnsafeFromData (Map k a) # 
Instance details

Defined in PlutusTx.Data.AssocMap

(UnsafeFromData a, UnsafeFromData b) => UnsafeFromData (These a b) # 
Instance details

Defined in PlutusTx.These

(UnsafeFromData a, UnsafeFromData b) => UnsafeFromData (a, b) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

unsafeFromBuiltinData :: BuiltinData -> (a, b) #

(UnsafeFromData a, UnsafeFromData b, UnsafeFromData c) => UnsafeFromData (a, b, c) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

unsafeFromBuiltinData :: BuiltinData -> (a, b, c) #

(UnsafeFromData a, UnsafeFromData b, UnsafeFromData c, UnsafeFromData d) => UnsafeFromData (a, b, c, d) # 
Instance details

Defined in PlutusTx.IsData.Instances

Methods

unsafeFromBuiltinData :: BuiltinData -> (a, b, c, d) #

toData :: ToData a => a -> Data #

Convert a value to Data.

Note: off-chain only.

fromData :: FromData a => Data -> Maybe a #

Convert a value from Data, returning Nothing if this fails.

Note: off-chain only.

builtinDataToData :: BuiltinData -> Data #

NOT a builtin. Converts a BuiltinData into a Data. Only works off-chain.

dataToBuiltinData :: Data -> BuiltinData #

NOT a builtin. Converts a Data into a BuiltinData. Only works off-chain.

unstableMakeIsData :: Name -> Q [Dec] #

Generate a FromData and a ToData instance for a type. This may not be stable in the face of constructor additions, renamings, etc. Use makeIsDataIndexed if you need stability.

makeIsDataIndexed :: Name -> [(Name, Int)] -> Q [Dec] #

Generate a ToData, 'FromData and a UnsafeFromData instances for a type, using an explicit mapping of constructor names to indices. Use this for types where you need to keep the representation stable.

makeIsDataSchemaIndexed :: Name -> [(Name, Natural)] -> Q [InstanceDec] #

Generate a ToData, FromData, UnsafeFromData, HasBlueprintSchema instances for a type, using an explicit mapping of constructor names to indices. Use this for types where you need to keep the representation stable.

Note: Requires ViewPatterns, FlexibleInstances, UndecidableInstances, MultiParamTypeClasses, TypeApplications language extensions and an `import PlutusTx.Blueprint.Definition (definitionRef)`.

class Lift uni a #

Class for types which can be lifted into Plutus IR. Instances should be derived, do not write your own instance!

Minimal complete definition

lift

Instances

Instances details
Lift DefaultUni fun ()) #

class Typeable uni (a :: k) #

Class for types which have a corresponding Plutus IR type. Instances should always be derived, do not write your own instance!

Minimal complete definition

typeRep

Instances

Instances details
Typeable RewriteRules uni fun), Hashable fun) => a -> CompiledCodeIn uni fun a #

Get a Plutus Core program with the default version, corresponding to the given value as a CompiledCodeIn, throwing any errors that occur as exceptions and ignoring fresh names.