Skip to content

Commit

Permalink
Merge pull request #541 from joseph-fajen/patch-1
Browse files Browse the repository at this point in the history
Update 02-minimum-ada-value-requirement.mdx
  • Loading branch information
olgahryniuk authored Oct 25, 2023
2 parents 8a57e9f + 95cf429 commit 26960c7
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions content/11-native-tokens/02-minimum-ada-value-requirement.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metaTitle: Minimum ada value requirement

UTXOs on the ledger may contain a heterogeneous collection of tokens, including ada, which is a limited resource in the Cardano system. Requiring some amount of ada to be included in every UTXO (where that amount is based on the size of the UTXO, in bytes), limits the maximum total size taken up by UTXO entries on the ledger at any given time.

The maximum possible UTXO size (the sum of the sizes of all UTXO entries) is implicitly adjusted by raising and lowering the `min-ada-value` variable, which is calculated using the Alonzo parameter `coinsPerUTxOWord`. In this way, the constraint protects the Cardano ledger from growing beyond a certain size. A ledger without a size bound is vulnerable to being populated by so much data that users will unable to process it (or run a node) with machines meeting the recommended specifications for running a node.
The maximum possible UTXO size (the sum of the sizes of all UTXO entries) is implicitly adjusted by raising and lowering the `min-ada-value` variable, which is calculated using the Alonzo parameter `coinsPerUTxOWord`. In this way, the constraint protects the Cardano ledger from growing beyond a certain size. A ledger without a size bound is vulnerable to being populated by so much data that users will be unable to process it (or run a node) with machines meeting the recommended specifications for running a node.

In the multi-asset Cardano ledger, UTXO entries have different sizes. In particular, any entries containing a non-ada asset contain records of the Policy IDs, asset names, and quantities of each of the non-ada assets. To maintain the max UTXO size bound on the UTXO stored on the ledger with variable entry sizes, we must adjust the minimum ada value for each UTXO entry, based on its size.

Expand All @@ -17,7 +17,7 @@ As a consequence of this design,

- It is impossible to make outputs containing only custom tokens
- The number of each token kind in an output can slightly affect the min-ada-value of this output. This is because the minimum UTXO value takes memory overhead into account when storing it on a running computer. The increase in ada value affects the memory overhead *insignificantly*, however, adding more multi-assets affects this value much more. The reason for this is that the names and policy IDs of each of the types of tokens take up additional space in the output. For efficient encoding, see [the CBOR specification](https://www.rfc-editor.org/rfc/rfc8949#name-specification-of-the-cbor-e).
- Sending custom tokens to an address always involves sending the min-ada-value of ada to that address alongside the custom tokens (by including the ada in the same output). If - the address is not spendable by the user sending the tokens, the ada sent alongside the tokens no longer belongs to the sender.
- Sending custom tokens to an address always involves sending the min-ada-value of ada to that address alongside the custom tokens (by including the ada in the same output). If the address is not spendable by the user sending the tokens, the ada sent alongside the tokens no longer belongs to the sender.
- Before transferring custom tokens, users may choose to use off-chain communication to negotiate who supplies the ada to cover the min-ada-value in the output made by the transferring transaction
- To recover the ada stored alongside custom tokens in an output O, the user must either: a) Spend the output O, and burn the custom tokens stored therein b) Spend an output O and an output O’, and consolidate the tokens therein with the same collection of types of custom tokens stored in another output (spent within the same transaction)
Eg., `(CryptoDoggiesPolicy, poodle, 1)` contained in O can be consolidated with `(CryptoDoggiesPolicy, poodle, 3)` in O’, for a total of `(CryptoDoggiesPolicy, poodle, 4)` in a new output made by the consolidating transaction.
Expand Down

0 comments on commit 26960c7

Please sign in to comment.