🇫🇷 Tokens Natifs: Valeur minimale requise de ada

Valeur minimale requise de ada

Les UTXO sur le grand livre peuvent contenir une collection hétérogène de tokens, y compris ada, qui est une ressource limitée dans le système Cardano. Le fait d’exiger qu’une certaine quantité d’ada soit incluse dans chaque UTXO (cette quantité étant basée sur la taille de l’UTXO, en bytes), limite la taille totale maximale occupée par les entrées UTXO sur le ledger à un moment donné.

La taille maximale possible de l’UTXO (la somme des tailles de toutes les entrées de l’UTXO) est implicitement ajustée en augmentant et en diminuant le paramètre min-ada-value . De cette façon, la contrainte protège le ledger Cardano contre toute croissance au-delà d’une certaine taille. Un grand livre sans limite de taille risque d’être peuplé d’une telle quantité de données que les utilisateurs seront incapables de le traiter (ou de faire fonctionner un nœud) avec des machines répondant aux spécifications recommandées pour faire fonctionner un nœud.

Le cas de l’ada seule

En raison de la contrainte de la valeur min-ada-value, une limite garantie sur le nombre d’entrées dans une UTXO purement ada est la suivante:

max No. UTxOs <= (total ada in circulation) / (minimum ada value)

Cette formule limite le nombre d’entrées UTXO, mais ne dit rien sur l’ajustement de la taille de chaque entrée, car toutes les entrées UTXO qui ne contiennent que des ada sont (assez près) de la même taille. La taille de l’ensemble UTXO est bornée par:

max UTxO size <= (max No. UTxOs) * (max UTxO entry size) + overhead

Dans le ledger Cardano multi-actifs, les entrées UTXO auront des tailles différentes. En particulier, toute entrée contenant un actif non-ada contient des enregistrements des identifiants de politique, des noms d’actifs et des quantités de chacun des actifs non-ada. Pour maintenir la limite de taille maximale des UTXO stockés dans le grand livre avec des tailles d’entrée variables, nous devons ajuster la valeur minimale d’ada pour chaque entrée UTXO, en fonction de sa taille.

Nous présentons ci-dessous un calcul et une justification plus détaillée de cet ajustement.

Calcul de Min-ada-value

Le montant minimal d’ada qui doit être contenu dans chaque UTXO purement ada sans données supplémentaires (c’est-à-dire un UTXO contenant uniquement l’adresse et le montant d’ada) est un paramètre de protocole du système Cardano, appelé: minUTxOValue

La taille d’un tel UTXO a une limite supérieure : adaOnlyUTxOSize

Nous pouvons calculer la limite supérieure de la taille d’un UTXO u contenant des tokens non-ada : sizeBound (u)

Nous voulons calculer le min-ada nécessaire pour être contenu dans u : minAda (u)

Un montant minUTxOValue de ada paie pour adaOnlyUTxOSize bytes de stockage UTXO sur le ledger. Pour que la min-ada-value soit proportionnelle pour tous les UTXOs, la proportion suivante doit ĂŞtre satisfaite:

minUTxOValue / adaOnlyUTxOSize = minAda (u) / sizeBound (u)

Le calcul de min-ada pour tout UTXO se rapproche de la formule ci-dessus. Cela utilise les constantes

coinSize = 0 (note : ceci est une erreur d’implémentation, et sera changé à la valeur correcte, 2, dans le prochain fork. Cela diminuera la valeur minimale de l’ada d’un petit pourcentage)

utxoEntrySizeWithoutVal = 27

adaOnlyUTxOSize = utxoEntrySizeWithoutVal + coinSize = 27

Les fonctions utilisées dans la formule ci-dessous sont:

quot a b est le quotient de (a, b), c’est-à-dire que, quot 11 5 = 2 car 11 = 5 * 2 + 1

numAssets le nombre d’ AssetIDs distincts dans B, par exemple, si B = [(policyID1, myAssetNameSBS, 10), (policyID1, yourAssetNameSBS, 5), (policyID2, someAssetNameSBS, 250), (policyID3, someAssetNameSBS, 43)]

numAssets B = 4

numPIDs: le nombre de PolicyIDs distincts dans B par exemple, si B est comme ci-dessus, numPIDs B = 3 (qui sont policyID1, policyID2, policyID3)

sumAssetNameLengths: la somme de la longueur des ByteStrings représentant des noms d’actifs distincts, par exemple, si B est comme ci-dessus,

sumAssetNameLengths B = length myAssetNameSBS + length yourAssetNameSBS + length someAssetNameSBS

pidSize: la longueur du hachage d’une politique (c’est-à-dire la longueur du PolicyID). Ces longueurs sont les mêmes pour toutes les politiques et sont dictées par l’algorithme de hachage actuel utilisé pour calculer les hachages des adresses de paiement et de staking.

pidSize B = 28 actuellement (également, dans la prochaine ère)

roundupBytesToWords convertit les bytes en mots de huit bytes, en arrondissant à l’unité supérieure roundupBytesToWords b = quot (b + 7) 8

size B est la taille du paquet de tokens B en mots longs de 8 octets: size B = 6 + roundupBytesToWords (((numAssets B) * 12) + (sumAssetNameLengths B) + ((numPids B) * pidSize))

Pour une UTXO contenant un paquet de tokens B, le calcul de min-ada-value est le suivant :

  • Cas 1 : Le paquet de tokens B dans l’UTXO u contient seulement ada (pas d’autres tokens) minAda (u) = minUTxOValue
  • Cas 2 : Le paquet de tokens B dans l’UTXO u contient ada ainsi que d’autres tokens minAda (u) = max (minUTxOValue, (quot (minUTxOValue, adaOnlyUTxOSize)) * (utxoEntrySizeWithoutVal + (size B)))

En conséquence de cette conception,

  • Il est impossible de rĂ©aliser des sorties contenant uniquement des tokens personnalisĂ©s
  • Le nombre de chaque type de token dans une sortie n’affecte pas la min-ada-value de la sortie, mais le nombre de types de tokens contenus dans une sortie augmente la min-value.
  • La raison en est que les noms et les ID de politique de chacun des types de tokens occupent un espace supplĂ©mentaire dans la sortie.
  • L’envoi de tokens personnalisĂ©s Ă  une adresse implique toujours l’envoi de la valeur minimale d’ada Ă  cette adresse avec les tokens personnalisĂ©s (en incluant l’ada dans la mĂŞme sortie). Si - l’adresse n’est pas dĂ©pensable par l’utilisateur qui envoie les tokens, l’ada envoyĂ© avec les tokens n’appartient plus Ă  l’expĂ©diteur.
  • Avant de transfĂ©rer des tokens personnalisĂ©s, les utilisateurs peuvent choisir d’utiliser la communication hors chaĂ®ne pour nĂ©gocier qui fournit l’ada pour couvrir la valeur minimale de l’ada dans la sortie faite par la transaction de transfert
  • Pour rĂ©cupĂ©rer l’ada stockĂ© avec les tokens personnalisĂ©s dans une sortie O, l’utilisateur doit soit : a) DĂ©penser la sortie O, et brĂ»ler les tokens personnalisĂ©s qui y sont stockĂ©s b) DĂ©penser une sortie O et une sortie O’, et consolider les tokens qui y sont stockĂ©s avec la mĂŞme collection de types de tokens personnalisĂ©s stockĂ©s dans une autre sortie (dĂ©pensĂ©s dans la mĂŞme transaction) Ex, (CryptoDoggiesPolicy, poodle, 1) contenu dans O peut ĂŞtre consolidĂ© avec (CryptoDoggiesPolicy, poodle, 3) dans O’, pour un total de (CryptoDoggiesPolicy, poodle, 4) dans une nouvelle sortie faite par la transaction de consolidation.
  • La division des tokens personnalisĂ©s en plus de sorties que celles dans lesquelles ils Ă©taient contenus avant le traitement de la transaction nĂ©cessite d’utiliser, au total, plus d’ada pour couvrir la valeur minimale d’ada, car l’ada est nĂ©cessaire dans les sorties supplĂ©mentaires.

mavr-1

Vous trouverez une copie officielle de ce document ici :

https://docs.cardano.org/native-tokens/minimum-ada-value-requirement

Plus de traductions de Cardano Ă : Cardano For The World