Skip to main content

Understanding minUTXO

The term minUTXO stands for minimum Unspent Transaction Output. This minimum exists because it prevents the chain from growing indefinitely in size. Additionally, minUTXO prevents users from spamming transactions.

Some calculations are involved to determine what this minimum is. However, in the context of Marlowe, minUTXO is set in smart contracts at the time of creation. Most contracts set this amount somewhere between two to three ada.

One example in practice is the --min-utxo flag used in contract creation for marlowe-runtime-cli. A sample application demonstrates how this takes in a minimum amount of lovelace to store in the contract, otherwise, the command fails.

minUTXO is enforced similarly on other ways of interacting with Runtime. Using the REST API, the request body requires a minUTxODeposit. This will be the case with the TypeScript SDK or any other similar client libraries built on Marlowe.

For native tokens, minUTXO implies that some non-zero amount of ada must be sent along with the native tokens.

Additional reading