cardano-ledger-api-1.15.0.0: Public API for the cardano ledger codebase
Safe HaskellNone
LanguageHaskell2010

Cardano.Ledger.Api.Tx.Out

Description

This module is used for building and inspecting transaction outputs.

You'll find some examples below.

Let's start by defining the GHC extensions and imports.

>>> :set -XTypeApplications
>>> import Cardano.Ledger.Api.Era (BabbageEra)
>>> import Lens.Micro
>>> import Test.Cardano.Ledger.Babbage.Arbitrary() -- Needed for doctests only
>>> import Test.QuickCheck -- Needed for doctests only

Here's an example on how to build a very basic Babbage era transaction output with a random address and value, and without any datum or reference script.

>>> :{
quickCheck $ \addr val ->
    let
        -- Defining a Babbage era transaction output with some random address and value.
        txOut = mkBasicTxOut @BabbageEra addr val
     in
        -- We verify that the transaction output contains our random address and value.
        txOut ^. addrTxOutL == addr && txOut ^. valueTxOutL == val
:}
+++ OK, passed 100 tests.
Synopsis

Documentation

class (Val (Value era), FromJSON (TxOut era), ToJSON (TxOut era), DecCBOR (Value era), DecCBOR (CompactForm (Value era)), MemPack (CompactForm (Value era)), EncCBOR (Value era), EncCBOR (TxOut era), DecCBOR (TxOut era), DecShareCBOR (TxOut era), Share (TxOut era) ~ Interns (Credential 'Staking), NoThunks (TxOut era), NFData (TxOut era), Show (TxOut era), Eq (TxOut era), Ord (TxOut era), MemPack (TxOut era), EraPParams era) ⇒ EraTxOut era Source #

Abstract interface into specific fields of a TxOut

Associated Types

type TxOut era = (r ∷ Type) | r → era Source #

The output of a UTxO for a particular era

Instances

Instances details
EraTxOut AllegraEra 
Instance details

Defined in Cardano.Ledger.Allegra.TxOut

Associated Types

type TxOut AllegraEra 
Instance details

Defined in Cardano.Ledger.Allegra.TxOut

EraTxOut AlonzoEra 
Instance details

Defined in Cardano.Ledger.Alonzo.TxOut

Associated Types

type TxOut AlonzoEra 
Instance details

Defined in Cardano.Ledger.Alonzo.TxOut

EraTxOut BabbageEra 
Instance details

Defined in Cardano.Ledger.Babbage.TxOut

Associated Types

type TxOut BabbageEra 
Instance details

Defined in Cardano.Ledger.Babbage.TxOut

EraTxOut ConwayEra 
Instance details

Defined in Cardano.Ledger.Conway.TxOut

Associated Types

type TxOut ConwayEra 
Instance details

Defined in Cardano.Ledger.Conway.TxOut

EraTxOut DijkstraEra 
Instance details

Defined in Cardano.Ledger.Dijkstra.TxOut

Associated Types

type TxOut DijkstraEra 
Instance details

Defined in Cardano.Ledger.Dijkstra.TxOut

EraTxOut MaryEra 
Instance details

Defined in Cardano.Ledger.Mary.TxOut

Associated Types

type TxOut MaryEra 
Instance details

Defined in Cardano.Ledger.Mary.TxOut

EraTxOut ShelleyEra 
Instance details

Defined in Cardano.Ledger.Shelley.TxOut

Associated Types

type TxOut ShelleyEra 
Instance details

Defined in Cardano.Ledger.Shelley.TxOut

mkBasicTxOut ∷ EraTxOut era ⇒ Addr → Value era → TxOut era Source #

upgradeTxOut ∷ EraTxOut era ⇒ TxOut (PreviousEra era) → TxOut era Source #

Every era, except Shelley, must be able to upgrade a TxOut from a previous era.

Any Era

class (EraTxOut era, AnyEraScript era) ⇒ AnyEraTxOut era where Source #

Minimal complete definition

Nothing

Instances

Instances details
AnyEraTxOut AllegraEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut AlonzoEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut BabbageEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut ConwayEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut DijkstraEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut MaryEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

AnyEraTxOut ShelleyEra Source # 
Instance details

Defined in Cardano.Ledger.Api.Tx.Out

Value

valueTxOutL ∷ EraTxOut era ⇒ Lens' (TxOut era) (Value era) Source #

isAdaOnlyTxOutF ∷ EraTxOut era ⇒ SimpleGetter (TxOut era) Bool Source #

This is a getter that implements an efficient way to check whether TxOut contains ADA only.

Address

Size

getMinCoinTxOut ∷ EraTxOut era ⇒ PParams era → TxOut era → Coin Source #

Same as getMinCoinSizedTxOut, except information about the size of TxOut will be computed by serializing the TxOut. If the size turns out to be not needed, then serialization will have no overhead, since it is computed lazily.

setMinCoinTxOut ∷ EraTxOut era ⇒ PParams era → TxOut era → TxOut era Source #

Same as setMinCoinSizedTxOut, except it doesn't require the size of the TxOut and will recompute it if needed. Initial amount is not important.

getMinCoinSizedTxOut ∷ EraTxOut era ⇒ PParams era → Sized (TxOut era) → Coin Source #

Produce the minimum lovelace that a given transaction output must contain. Information about the size of the TxOut is required in some eras. Use getMinCoinTxOut if you don't have the size readily available to you.

setMinCoinSizedTxOut ∷ EraTxOut era ⇒ PParams era → Sized (TxOut era) → Sized (TxOut era) Source #

This function will adjust the output's Coin value to the smallest amount allowed by the UTXO rule. Initial amount is not important.

ensureMinCoinTxOut ∷ EraTxOut era ⇒ PParams era → TxOut era → TxOut era Source #

Similar to setMinCoinTxOut it will guarantee that the minimum requirement for the output amount is satisified, however it makes it possible to set a higher amount than the minimaly required.

> ensureMinCoinTxOut pp (txOut & coinTxOutL .~ zero) == setMinCoinTxOut pp (txOut & coinTxOutL .~ zero)
> (ensureMinCoinTxOut pp txOut ^. coinTxOutL) >= (setMinCoinTxOut pp txOut ^. coinTxOutL)

ensureMinCoinSizedTxOut ∷ EraTxOut era ⇒ PParams era → Sized (TxOut era) → Sized (TxOut era) Source #

Similar to setMinCoinSizedTxOut it will guarantee that the minimum requirement for the output amount is satisified, however it makes it possible to set a higher amount than the minimaly required.

ensureMinCoinSizedTxOut relates to setMinCoinSizedTxOut in the same way that ensureMinCoinTxOut relates to setMinCoinTxOut.

Shelley, Allegra and Mary Era

Alonzo Era

Babbage Era

data Data era where Source #

Bundled Patterns

pattern Data ∷ Era era ⇒ Data → Data era 

Instances

Instances details
Era era ⇒ FromJSON (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

ToJSON (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toJSON ∷ Data era → Value Source #

toEncoding ∷ Data era → Encoding Source #

toJSONList ∷ [Data era] → Value Source #

toEncodingList ∷ [Data era] → Encoding Source #

omitField ∷ Data era → Bool Source #

Typeable era ⇒ ToCBOR (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toCBOR ∷ Data era → Encoding Source #

encodedSizeExpr ∷ (∀ t. ToCBOR t ⇒ Proxy t → Size) → Proxy (Data era) → Size Source #

encodedListSizeExpr ∷ (∀ t. ToCBOR t ⇒ Proxy t → Size) → Proxy [Data era] → Size Source #

Era era ⇒ DecCBOR (Annotator (Data era)) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

decCBOR ∷ Decoder s (Annotator (Data era)) Source #

dropCBOR ∷ Proxy (Annotator (Data era)) → Decoder s () Source #

label ∷ Proxy (Annotator (Data era)) → Text Source #

Typeable era ⇒ DecCBOR (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

decCBOR ∷ Decoder s (Data era) Source #

dropCBOR ∷ Proxy (Data era) → Decoder s () Source #

label ∷ Proxy (Data era) → Text Source #

Typeable era ⇒ EncCBOR (Data era)

Encodes memoized bytes created upon construction.

Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

encCBOR ∷ Data era → Encoding Source #

SafeToHash (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Memoized (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type RawType (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type RawType (Data era) = PlutusData era

Methods

getMemoBytes ∷ Data era → MemoBytes (RawType (Data era))

wrapMemoBytes ∷ MemoBytes (RawType (Data era)) → Data era

NFData (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

rnf ∷ Data era → () #

Generic (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type Rep (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type Rep (Data era) = D1 ('MetaData "Data" "Cardano.Ledger.Plutus.Data" "cardano-ledger-core-1.22.0.0-inplace" 'True) (C1 ('MetaCons "MkData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MemoBytes (PlutusData era)))))

Methods

from ∷ Data era → Rep (Data era) x #

to ∷ Rep (Data era) x → Data era #

Show (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

showsPrec ∷ Int → Data era → ShowS #

show ∷ Data era → String #

showList ∷ [Data era] → ShowS #

Eq (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

(==) ∷ Data era → Data era → Bool #

(/=) ∷ Data era → Data era → Bool #

Ord (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

compare ∷ Data era → Data era → Ordering #

(<) ∷ Data era → Data era → Bool #

(<=) ∷ Data era → Data era → Bool #

(>) ∷ Data era → Data era → Bool #

(>=) ∷ Data era → Data era → Bool #

max ∷ Data era → Data era → Data era #

min ∷ Data era → Data era → Data era #

Typeable era ⇒ NoThunks (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

HashAnnotated (Data era) EraIndependentData 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type RawType (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type RawType (Data era) = PlutusData era
type Rep (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type Rep (Data era) = D1 ('MetaData "Data" "Cardano.Ledger.Plutus.Data" "cardano-ledger-core-1.22.0.0-inplace" 'True) (C1 ('MetaCons "MkData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MemoBytes (PlutusData era)))))

data Datum era Source #

Datum can be described by a either a data hash or binary data, but not both. It can also be neither one of them.

Constructors

NoDatum 
DatumHash !DataHash 
Datum !(BinaryData era) 

Instances

Instances details
Era era ⇒ FromJSON (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Era era ⇒ ToJSON (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Era era ⇒ DecCBOR (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

decCBOR ∷ Decoder s (Datum era) Source #

dropCBOR ∷ Proxy (Datum era) → Decoder s () Source #

label ∷ Proxy (Datum era) → Text Source #

Era era ⇒ EncCBOR (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

encCBOR ∷ Datum era → Encoding Source #

Generic (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type Rep (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type Rep (Datum era) = D1 ('MetaData "Datum" "Cardano.Ledger.Plutus.Data" "cardano-ledger-core-1.22.0.0-inplace" 'False) (C1 ('MetaCons "NoDatum" 'PrefixI 'False) (U1 ∷ Type → Type) :+: (C1 ('MetaCons "DatumHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataHash)) :+: C1 ('MetaCons "Datum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BinaryData era)))))

Methods

from ∷ Datum era → Rep (Datum era) x #

to ∷ Rep (Datum era) x → Datum era #

Show (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

showsPrec ∷ Int → Datum era → ShowS #

show ∷ Datum era → String #

showList ∷ [Datum era] → ShowS #

Eq (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

(==) ∷ Datum era → Datum era → Bool #

(/=) ∷ Datum era → Datum era → Bool #

Ord (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

compare ∷ Datum era → Datum era → Ordering #

(<) ∷ Datum era → Datum era → Bool #

(<=) ∷ Datum era → Datum era → Bool #

(>) ∷ Datum era → Datum era → Bool #

(>=) ∷ Datum era → Datum era → Bool #

max ∷ Datum era → Datum era → Datum era #

min ∷ Datum era → Datum era → Datum era #

Era era ⇒ MemPack (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

typeName ∷ String Source #

packedByteCount ∷ Datum era → Int Source #

packM ∷ Datum era → Pack s () Source #

unpackM ∷ Buffer b ⇒ Unpack s b (Datum era) Source #

NoThunks (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type Rep (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type Rep (Datum era) = D1 ('MetaData "Datum" "Cardano.Ledger.Plutus.Data" "cardano-ledger-core-1.22.0.0-inplace" 'False) (C1 ('MetaCons "NoDatum" 'PrefixI 'False) (U1 ∷ Type → Type) :+: (C1 ('MetaCons "DatumHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataHash)) :+: C1 ('MetaCons "Datum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BinaryData era)))))