Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- module Cardano.Ledger.Api.Tx.Address
- 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 where
- mkBasicTxOut :: EraTxOut era => Addr (EraCrypto era) -> Value era -> TxOut era
- upgradeTxOut :: EraTxOut era => TxOut (PreviousEra era) -> TxOut era
- valueTxOutL :: EraTxOut era => Lens' (TxOut era) (Value era)
- coinTxOutL :: (HasCallStack, EraTxOut era) => Lens' (TxOut era) Coin
- isAdaOnlyTxOutF :: EraTxOut era => SimpleGetter (TxOut era) Bool
- addrTxOutL :: EraTxOut era => Lens' (TxOut era) (Addr (EraCrypto era))
- bootAddrTxOutF :: EraTxOut era => SimpleGetter (TxOut era) (Maybe (BootstrapAddress (EraCrypto era)))
- getMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> Coin
- setMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> TxOut era
- getMinCoinSizedTxOut :: EraTxOut era => PParams era -> Sized (TxOut era) -> Coin
- setMinCoinSizedTxOut :: forall era. EraTxOut era => PParams era -> Sized (TxOut era) -> Sized (TxOut era)
- ensureMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> TxOut era
- ensureMinCoinSizedTxOut :: forall era. EraTxOut era => PParams era -> Sized (TxOut era) -> Sized (TxOut era)
- class (AlonzoEraPParams era, EraTxOut era) => AlonzoEraTxOut era
- dataHashTxOutL :: AlonzoEraTxOut era => Lens' (TxOut era) (StrictMaybe (DataHash (EraCrypto era)))
- type DataHash c = SafeHash c EraIndependentData
- datumTxOutF :: AlonzoEraTxOut era => SimpleGetter (TxOut era) (Datum era)
- class (AlonzoEraTxOut era, EraScript era) => BabbageEraTxOut era
- dataTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (StrictMaybe (Data era))
- data Data era where
- datumTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (Datum era)
- data Datum era
- = NoDatum
- | DatumHash !(DataHash (EraCrypto era))
- | Datum !(BinaryData era)
- referenceScriptTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (StrictMaybe (Script era))
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)
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 :: AlonzoEraTxOut era => Lens' (TxOut era) (StrictMaybe (DataHash (EraCrypto era))) #
datumTxOutF :: AlonzoEraTxOut era => SimpleGetter (TxOut era) (Datum era) #
Babbage Era
class (AlonzoEraTxOut era, EraScript era) => BabbageEraTxOut era #
Minimal complete definition
dataTxOutL :: BabbageEraTxOut era => Lens' (TxOut era) (StrictMaybe (Data era)) #
Instances
Memoized Data | |
Defined in Cardano.Ledger.Plutus.Data Methods getMemoBytes :: Data era -> MemoBytes (RawType Data) era wrapMemoBytes :: MemoBytes (RawType Data) era -> Data era | |
Generic (Data era) | |
HashAlgorithm (HASH (EraCrypto era)) => Show (Data era) | |
Typeable era => ToCBOR (Data era) | |
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)) | |
Typeable era => EncCBOR (Data era) | |
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) | |
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) | |
Defined in Cardano.Ledger.Plutus.Data | |
Eq (Data era) | |
Typeable era => NoThunks (Data era) | |
ToExpr (Data era) | |
Defined in Cardano.Ledger.Plutus.Data | |
EraCrypto era ~ c => HashAnnotated (Data era) EraIndependentData c | |
Defined in Cardano.Ledger.Plutus.Data Methods indexProxy :: Data era -> Proxy EraIndependentData hashAnnotated :: Data era -> SafeHash c EraIndependentData | |
type RawType Data | |
Defined in Cardano.Ledger.Plutus.Data type RawType Data = PlutusData | |
type Rep (Data era) | |
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) #
Constructors
NoDatum | |
DatumHash !(DataHash (EraCrypto era)) | |
Datum !(BinaryData era) |
Instances
Era era => ToJSON (Datum era) | |
Defined in Cardano.Ledger.Plutus.Data Methods toEncoding :: Datum era -> Encoding toJSONList :: [Datum era] -> Value toEncodingList :: [Datum era] -> Encoding | |
Generic (Datum era) | |
Show (Datum era) | |
Era era => DecCBOR (Datum era) | |
Era era => EncCBOR (Datum era) | |
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) | |
Ord (Datum era) | |
Defined in Cardano.Ledger.Plutus.Data | |
NoThunks (Datum era) | |
ToExpr (Datum era) | |
Defined in Cardano.Ledger.Plutus.Data | |
type Rep (Datum era) | |
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)) #