cardano-ledger-api-1.7.0.1: Public API for the cardano ledger codebase
Safe HaskellSafe-Inferred
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 (Babbage)
>>> import Lens.Micro
>>> import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -- Neded 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 @Babbage 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), ToJSON (TxOut era), DecCBOR (Value era), DecCBOR (CompactForm (Value era)), EncCBOR (Value era), ToCBOR (TxOut era), FromCBOR (TxOut era), EncCBOR (TxOut era), DecCBOR (TxOut era), DecShareCBOR (TxOut era), Share (TxOut era) ~ Interns (Credential 'Staking (EraCrypto era)), NoThunks (TxOut era), NFData (TxOut era), Show (TxOut era), Eq (TxOut era), EraPParams era) => EraTxOut era #

Minimal complete definition

mkBasicTxOut, upgradeTxOut, valueEitherTxOutL, addrEitherTxOutL, (getMinCoinSizedTxOut | getMinCoinTxOut)

Associated Types

type TxOut era = (r :: Type) | r -> era #

mkBasicTxOut :: EraTxOut era => Addr (EraCrypto era) -> Value era -> TxOut era #

upgradeTxOut :: EraTxOut era => TxOut (PreviousEra era) -> TxOut era #

Value

valueTxOutL :: EraTxOut era => Lens' (TxOut era) (Value era) #

coinTxOutL :: (HasCallStack, EraTxOut era) => Lens' (TxOut era) Coin #

isAdaOnlyTxOutF :: EraTxOut era => SimpleGetter (TxOut era) Bool #

Address

addrTxOutL :: EraTxOut era => Lens' (TxOut era) (Addr (EraCrypto era)) #

bootAddrTxOutF :: EraTxOut era => SimpleGetter (TxOut era) (Maybe (BootstrapAddress (EraCrypto era))) #

Size

getMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> Coin #

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 #

setMinCoinSizedTxOut :: forall era. 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 :: forall era. 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

class (AlonzoEraPParams era, EraTxOut era) => AlonzoEraTxOut era #

Minimal complete definition

dataHashTxOutL, datumTxOutF

dataHashTxOutL :: AlonzoEraTxOut era => Lens' (TxOut era) (StrictMaybe (DataHash (EraCrypto era))) #

type DataHash c = SafeHash c EraIndependentData #

datumTxOutF :: AlonzoEraTxOut era => SimpleGetter (TxOut era) (Datum era) #

Babbage Era

class (AlonzoEraTxOut era, EraScript era) => BabbageEraTxOut era #

Minimal complete definition

referenceScriptTxOutL, dataTxOutL, datumTxOutL

dataTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (StrictMaybe (Data era)) #

data Data era where #

Bundled Patterns

pattern Data :: Era era => Data -> Data era 

Instances

Instances details
Memoized Data 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type RawType Data = (r :: Type -> Type)

Methods

getMemoBytes :: Data era -> MemoBytes (RawType Data) era

wrapMemoBytes :: MemoBytes (RawType Data) era -> Data era

Generic (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type Rep (Data era) :: Type -> Type Source #

Methods

from :: Data era -> Rep (Data era) x Source #

to :: Rep (Data era) x -> Data era Source #

HashAlgorithm (HASH (EraCrypto era)) => Show (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

showsPrec :: Int -> Data era -> ShowS Source #

show :: Data era -> String Source #

showList :: [Data era] -> ShowS Source #

Typeable era => ToCBOR (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toCBOR :: Data era -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (Data era) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [Data era] -> Size

Era era => DecCBOR (Annotator (Data era)) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

decCBOR :: Decoder s (Annotator (Data era))

dropCBOR :: Proxy (Annotator (Data era)) -> Decoder s ()

label :: Proxy (Annotator (Data era)) -> Text

Typeable era => EncCBOR (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

encCBOR :: Data era -> Encoding

encodedSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Data era) -> Size

encodedListSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Data era] -> Size

SafeToHash (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

originalBytes :: Data era -> ByteString

makeHashWithExplicitProxys :: HashAlgorithm (HASH c) => Proxy c -> Proxy index -> Data era -> SafeHash c index

NFData (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

rnf :: Data era -> () Source #

Eq (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

(==) :: Data era -> Data era -> Bool Source #

(/=) :: Data era -> Data era -> Bool Source #

Typeable era => NoThunks (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

noThunks :: Context -> Data era -> IO (Maybe ThunkInfo)

wNoThunks :: Context -> Data era -> IO (Maybe ThunkInfo)

showTypeOf :: Proxy (Data era) -> String

ToExpr (Data era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toExpr :: Data era -> Expr

listToExpr :: [Data era] -> Expr

EraCrypto era ~ c => HashAnnotated (Data era) EraIndependentData c 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

indexProxy :: Data era -> Proxy EraIndependentData

hashAnnotated :: Data era -> SafeHash c EraIndependentData

type RawType Data 
Instance details

Defined in Cardano.Ledger.Plutus.Data

type RawType Data = PlutusData
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.9.0.0-1dQ7WLDbkZc8aXLEpNIvOr" 'True) (C1 ('MetaCons "DataConstr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MemoBytes PlutusData era))))

datumTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (Datum era) #

data Datum era #

Constructors

NoDatum 
DatumHash !(DataHash (EraCrypto era)) 
Datum !(BinaryData era) 

Instances

Instances details
Era era => ToJSON (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toJSON :: Datum era -> Value

toEncoding :: Datum era -> Encoding

toJSONList :: [Datum era] -> Value

toEncodingList :: [Datum era] -> Encoding

omitField :: Datum era -> Bool

Generic (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Associated Types

type Rep (Datum era) :: Type -> Type Source #

Methods

from :: Datum era -> Rep (Datum era) x Source #

to :: Rep (Datum era) x -> Datum era Source #

Show (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

showsPrec :: Int -> Datum era -> ShowS Source #

show :: Datum era -> String Source #

showList :: [Datum era] -> ShowS Source #

Era era => DecCBOR (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

decCBOR :: Decoder s (Datum era)

dropCBOR :: Proxy (Datum era) -> Decoder s ()

label :: Proxy (Datum era) -> Text

Era era => EncCBOR (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

encCBOR :: Datum era -> Encoding

encodedSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy (Datum era) -> Size

encodedListSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [Datum era] -> Size

Eq (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

(==) :: Datum era -> Datum era -> Bool Source #

(/=) :: Datum era -> Datum era -> Bool Source #

Ord (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

compare :: Datum era -> Datum era -> Ordering Source #

(<) :: Datum era -> Datum era -> Bool Source #

(<=) :: Datum era -> Datum era -> Bool Source #

(>) :: Datum era -> Datum era -> Bool Source #

(>=) :: Datum era -> Datum era -> Bool Source #

max :: Datum era -> Datum era -> Datum era Source #

min :: Datum era -> Datum era -> Datum era Source #

NoThunks (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

noThunks :: Context -> Datum era -> IO (Maybe ThunkInfo)

wNoThunks :: Context -> Datum era -> IO (Maybe ThunkInfo)

showTypeOf :: Proxy (Datum era) -> String

ToExpr (Datum era) 
Instance details

Defined in Cardano.Ledger.Plutus.Data

Methods

toExpr :: Datum era -> Expr

listToExpr :: [Datum era] -> Expr

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.9.0.0-1dQ7WLDbkZc8aXLEpNIvOr" 'False) (C1 ('MetaCons "NoDatum" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "DatumHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (DataHash (EraCrypto era)))) :+: C1 ('MetaCons "Datum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BinaryData era)))))

referenceScriptTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (StrictMaybe (Script era)) #