Skip to content

Latest commit

 

History

History
120 lines (90 loc) · 7.03 KB

min-utxo-alonzo.rst

File metadata and controls

120 lines (90 loc) · 7.03 KB

Minimum ada value calculation in Alonzo

There is no longer a minUTxOValue protocol parameter in Alonzo, it was deprecated at the end of the Mary era. However, the requirement that each UTXO must contain an amount of ada that depends on the size of the entry is still enforced in the Alonzo era. The size-dependent minimum ada amount in a UTXO is still referred to as the min-ada-value, and is now calculated using the Alonzo parameter coinsPerUTxOWord.

The formula for the min-ada-value calculation, for a UTXO containing an output txout, is:

utxoEntrySize (txout) * coinsPerUTxOWord

where

utxoEntrySize (txout) = utxoEntrySizeWithoutVal + size (v) + dataHashSize (dh)

The v variable is the token bundle inside the txout output. The minimum ada value calculation relies on the size function for determining the size of a token bundle or a lovelace value, which is described in the Mary era min-value document.

The variable dh is the hash of the datum that is contained in the output. If there is no datum, the hash is represented by Nothing, and takes up 0 space. If there is a datum in the output, it takes up 10 words of memory space.

Example minimum ada value calculations and constants

Note that the coinsPerUTxOWord is a protocol parameter and is subject to change. The values utxoEntrySizeWithoutVal and dataHashSize (dh) are fixed at least for the entire Alonzo era.

The following table gives the values of the constants used in the calculation above. Recall that

1 ada = 1,000,000 lovelace

Ada-only min-utxo value 1,000,000 lovelace
utxoEntrySizeWithoutVal 27 words
coinsPerUTxOWord 34,482 lovelace
dataHashSize (dh), dh = Nothing 0 words
dataHashSize (dh), dh <> Nothing 10 words

** NO datum hash: **

 

One policyID,

one 0-character

asset name (i)

One policyID,

one 1-character

asset name (ii)

One PolicyID,

three 1-character

asset names (iii)

Two PolicyIDs,

one 0-character

name (iv)

Two PolicyIDs,

one 1-character

name for each (v)

Three PolicyIDs,

ninety-six 1-character

names between them (total) (vi)

size of value 11 12 15 16 17 173
utxoEntrySize 38 39 42 43 44 200
minUTxO (in lovelace) 1,310,316 1,344,798 1,448,244 1,482,726 1,517,208 6,896,400

** WITH datum hash: **

 

One policyID,

one 0-character

asset name (i)

One PolicyID,

three 32-character

asset name (vii)

Two PolicyIDs,

one 0-character

name (viii)

size of value 11 26 16
utxoEntrySize 48 63 53
minUTxO (in lovelace) 1,655,136 2,172,366 1,827,546

The following are calculations of the sizes of token bundles (values) described in the tables above. These are according to the size function given in the min-ada-value document for the Mary era.

    1. : 6 + FLOOR(((1 * 12) + 0 + (1 * 28) + 7)/8, 1) = 11
    1. : 6 + FLOOR(((1 * 12) + 1 + (1 * 28) + 7)/8, 1) = 12
    1. : 6 + FLOOR(((3 * 12) + (3*1) + (1 * 28) + 7)/8, 1) = 15
    1. : 6 + FLOOR(((2 * 12) + 0 + (2 * 28) + 7)/8, 1) = 16
    1. : 6 + FLOOR(((2 * 12) + (1*2) + (2 * 28) + 7)/8, 1) = 17
    1. : 6 + FLOOR(((96 * 12) + 96 + (3 * 28) + 7)/8, 1) = 173
    1. : 6 + FLOOR(((3 * 12) + 96 + (1 * 28) + 7)/8, 1) = 26
    1. : 6 + FLOOR(((3 * 12) + 96 + (1 * 28) + 7)/8, 1) = 16

Constraint on the token bundle size

In addition to the min-ada-value requirement, the ledger enforces a constraint on the sizes of token bundles in transaction outputs. The reason for having this constraint is to ensure that any single output is, in most cases, not so big that a transaction attempting to spend it would have to exceed the maximum transaction size.

For this constraint, the size of the token bundle is not estimated (as for the min-ada-value constraint), but rather taken to be the size of the serialized representation of the token bundle. We do not provide a formula for the serialized size calculation here. The following protocol parameter gives this constraint, and has the following current value currently (subject to change):

maxValSize = 4000 bytes, ie. 500 words