Utils
A collection of utility functions.
- pycardano.utils.fee(context: ChainContext, length: int, exec_steps: int = 0, max_mem_unit: int = 0, ref_script_size: int = 0) int
Calculate fee based on the length of a transaction’s CBOR bytes and script execution.
- Parameters:
context (ChainContext) – A chain context.
length (int) – The length of CBOR bytes, which could usually be derived by len(tx.to_cbor()).
exec_steps (int) – Number of execution steps run by plutus scripts in the transaction.
max_mem_unit (int) – Max numer of memory units run by plutus scripts in the transaction.
ref_script_size (int) – Size of referenced scripts in the transaction.
- Returns:
Minimum acceptable transaction fee.
- Return type:
int
- pycardano.utils.max_tx_fee(context: ChainContext, ref_script_size: int = 0) int
Calculate the maximum possible transaction fee based on protocol parameters.
- Parameters:
context (ChainContext) – A chain context.
ref_script_size (int) – Size of reference scripts in the transaction.
- Returns:
Maximum possible tx fee in lovelace.
- Return type:
int
- pycardano.utils.bundle_size(multi_asset: MultiAsset) int
Calculate size of a multi-asset in words. (1 word = 8 bytes)
- Parameters:
multi_asset (MultiAsset) – Input multi asset.
- Returns:
Number of words.
- Return type:
int
- pycardano.utils.min_lovelace(context: ChainContext, output: TransactionOutput | None = None, amount: int | Value | None = None, has_datum: bool = False) int
Calculate minimum lovelace a transaction output needs to hold.
More info could be found in this page.
- Parameters:
context (ChainContext) – A chain context.
output (TransactionOutput) – A transaction output (for post-alonzo transactions).
amount (Union[int, Value]) – Amount from a transaction output (for pre-alonzo transactions).
has_datum (bool) – Whether the transaction output contains datum hash (for pre-alonzo transactions).
- Returns:
Minimum required lovelace amount for this transaction output.
- Return type:
int
- pycardano.utils.min_lovelace_pre_alonzo(amount: int | Value | None, context: ChainContext, has_datum: bool = False) int
Calculate minimum lovelace a transaction output needs to hold.
More info could be found in this page.
- Parameters:
amount (Union[int, Value]) – Amount from a transaction output.
context (ChainContext) – A chain context.
has_datum (bool) – Whether the transaction output contains datum hash.
- Returns:
Minimum required lovelace amount for this transaction output.
- Return type:
int
- pycardano.utils.min_lovelace_post_alonzo(output: TransactionOutput, context: ChainContext) int
Calculate minimum lovelace a transaction output needs to hold post alonzo.
This implementation is copied from the original Haskell implementation: https://github.com/input-output-hk/cardano-ledger/blob/eb053066c1d3bb51fb05978eeeab88afc0b049b2/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxo.hs#L242-L265
- Parameters:
output (TransactionOutput) – A transaction output.
context (ChainContext) – A chain context.
- Returns:
Minimum required lovelace amount for this transaction output.
- Return type:
int
- pycardano.utils.script_data_hash(redeemers: List[Redeemer] | RedeemerMap | None = None, datums: List[PlutusData | dict | int | bytes | IndefiniteList | RawCBOR | RawPlutusData] | NonEmptyOrderedSet[PlutusData | dict | int | bytes | IndefiniteList | RawCBOR | RawPlutusData] | None = None, cost_models: CostModels | Dict | None = None) ScriptDataHash
Calculate plutus script data hash
- Parameters:
redeemers (Optional[Redeemers]) – Redeemers to include.
datums (Optional[Union[List[Datum], NonEmptyOrderedSet[Datum]]]) – Datums to include.
cost_models (Optional[CostModels]) – Cost models.
- Returns:
Plutus script data hash
- Return type:
- pycardano.utils.tiered_reference_script_fee(context: ChainContext, scripts_size: int) int
Calculate fee for reference scripts.
- Parameters:
context (ChainContext) – A chain context.
scripts_size (int) – Size of reference scripts in bytes.
- Returns:
Fee for reference scripts.
- Return type:
int
- Raises:
ValueError – If scripts size exceeds maximum allowed size
- pycardano.utils.greater_than_version(version: Tuple[int, int]) bool
Check if the current Python version is greater than or equal to the specified version
- Parameters:
version (Tuple[int, int]) – Tuple of major and minor version
- Returns:
True if the current Python version is greater than or equal to the specified version