cardano-node-emulator-1.1.0.0
Safe HaskellNone
LanguageHaskell2010

Cardano.Node.Emulator.Fee

Contents

Description

Calculating transaction fees in the emulator.

Synopsis

Documentation

makeAutoBalancedTransaction Source #

Arguments

:: Params 
-> UTxO EmulatorEra

Just the transaction inputs, not the entire UTxO.

-> CardanoBuildTx 
-> CardanoAddress

Change address

-> Either CardanoLedgerError (Tx BabbageEra) 

Creates a balanced transaction by calculating the execution units, the fees and the change, which is assigned to the given address. Only balances Ada.

makeAutoBalancedTransactionWithUtxoProvider Source #

Arguments

:: Monad m 
=> Params 
-> UtxoIndex

Just the transaction inputs, not the entire UTxO.

-> CardanoAddress

Change address

-> (Value -> m ([(TxOutRef, TxOut)], Value))

The utxo provider, it return outputs that cover at least the given value, and return the change, i.e. how much the outputs overshoot the given value.

-> (forall a. CardanoLedgerError -> m a)

How to handle errors

-> CardanoBuildTx 
-> m (Tx BabbageEra) 

Creates a balanced transaction by calculating the execution units, the fees and then the balance. If the balance is negative the utxo provider is asked to pick extra inputs to make the balance is positive, which is then assigned to the change address. The collateral is similarly balanced. Unlike makeAutoBalancedTransaction this function also balances non-Ada.

utxoProviderFromWalletOutputs Source #

Arguments

:: Map TxOutRef TxOut

The unspent transaction outputs. Make sure that this doesn't contain any inputs from the transaction being balanced.

-> Value 
-> Either BalancingError ([(TxOutRef, TxOut)], Value) 

data BalancingError Source #

Constructors

InsufficientFunds

Not enough extra inputs available to balance a transaction.

Fields

CardanoLedgerError CardanoLedgerError 

Instances

Instances details
Eq BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

Show BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

Generic BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

Associated Types

type Rep BalancingError :: Type -> Type Source #

ToJSON BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

FromJSON BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

type Rep BalancingError Source # 
Instance details

Defined in Cardano.Node.Emulator.Fee

type Rep BalancingError = D1 ('MetaData "BalancingError" "Cardano.Node.Emulator.Fee" "cardano-node-emulator-1.1.0.0-86RbaXcxDhk56O3Y8j0lgb" 'False) (C1 ('MetaCons "InsufficientFunds" 'PrefixI 'True) (S1 ('MetaSel ('Just "total") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value) :*: S1 ('MetaSel ('Just "expected") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)) :+: C1 ('MetaCons "CardanoLedgerError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CardanoLedgerError)))

Internals

selectCoin Source #

Arguments

:: Eq a 
=> [(a, Value)]

Possible inputs to choose from

-> Value

The target value

-> Either BalancingError ([a], Value)

The chosen inputs and the change

Given a set of as with coin values, and a target value, select a number of a such that their total value is greater than or equal to the target.