Fermer

mai 24, 2018

Comment les coûts de transaction sont calculés –


Cet article sur Ethereum Transaction Costs a été publié initialement sur le site de Bruno's Bitfalls et est reproduit ici avec sa permission.

Lors de l'envoi d'une transaction Bitcoin, ses frais sont proportionnels à sa taille. Plus entrées et sorties plus il est cher. Ajoutez à cela le facteur de transactions en attente et les frais de transaction peuvent monter en flèche en fonction de ces deux facteurs seulement.


Il est recommandé de lire les documents suivants avant de plonger dans le reste de cet article la terminologie que nous allons mentionner.

La connaissance de base des termes de programmation (variables, boucles) pourrait aussi être utile.


Avec Ethereum, étant donné que nous parlons d'un langage de programmation dans le protocole, il est possible de être très exigeant en termes de calcul avec très peu de texte ou de code (quelque chose qui serait très bon marché dans le verset BTC). Regardons cette boucle, par exemple:

 while (i ++ <1000) {
    j = j + i;
}

Cette boucle signifie "aussi longtemps que i est plus petit que 1000, augmentez-le de 1 puis additionnez i et j et écrivez le résultat dans j puis recommencez. "Cette boucle s'exécutera 1000 fois si i est 0, ou plus si c'est un nombre négatif.

Pour payer ce coût de calcul de manière équitable – puisqu'il doit être exécuté sur toutes les machines des mineurs à la fois et qu'ils y consacrent leurs ressources et leur temps – le concept de gaz a été introduit. Le gaz est utilisé pour payer l'exécution de ces contrats dits intelligents (programmes Ethereum) à l'intérieur de l'EVM. Par exemple, i + j ci-dessus est une opération de sommation qui coûte 3 gaz chaque fois qu'elle est exécutée, donc 3000 gaz si exécuté 1000 fois.

Pour expliquer gaz correctement, couvrons d'abord le EVM .

EVM

EVM signifie Ethereum Virtual Machine . Mais qu'est-ce qu'une machine virtuelle de toute façon?

Machine virtuelle

Une machine virtuelle est un logiciel exécuté sur un ordinateur spécifique qui contient un autre système d'exploitation complètement encapsulé dans le principal. Par exemple, une machine virtuelle vous permet d'exécuter Windows sous Linux, Linux sous Windows, Windows sur macOS comme dans l'image ci-dessous, ou toute autre combinaison.

 Windows à l'intérieur macOS

Nous utilisons virtuel des machines pour séparer l'environnement dans lequel nous utilisons quotidiennement notre ordinateur de l'environnement dans lequel nous travaillons ou programmons. Cela nous permet de garder les virus à distance (ils n'ont aucun moyen de briser la machine virtuelle et d'accéder au système d'exploitation principal). boucles infinies de s'écraser notre système d'exploitation principal, et détient corruptions de disque dur comme l'infâme WannaCry ransomware à la baie. De plus, les VM nous permettent d'utiliser des jeux Windows sur Linux, par exemple, ou de programmer facilement différentes versions de l'environnement du même langage de programmation, sans les mélanger.

EVM

La machine virtuelle Ethereum est intégrée dans logiciel fonctionnant sur le protocole Ethereum. Il exécute des contrats intelligents – des programmes Ethereum écrits dans le langage Solidity. L'EVM est contenu dans les nœuds complets du réseau Ethereum, à l'intérieur duquel il exécute ces programmes écrits par l'utilisateur Ethereum.

Tout mineur d'Ethereum exécute simultanément un code de contrat intelligent . Cela signifie que les programmes Ethereum (dapps – applications décentralisées) sont exécutés sur l'ordinateur de tout le monde en même temps (décentralisé).

Cependant, l'exécution de ces programmes n'est pas gratuite. Les mineurs dépensent leur propre électricité, temps et matériel pour faire cela. Pour les payer pour leur effort d'exécution d'instructions informatiques (comme "stocker la valeur 5 dans la variable X"), le concept de gaz a été introduit.

Gas, Ether, et GWei

Gas est une unité de coût pour une opération particulière qu'un ordinateur doit exécuter, et il exécute cette instruction lorsque nous diffusons une transaction qui contient un programme Ethereum afin de lancer un dapp . Par exemple, sommer deux chiffres coûte 3 gaz. Les multiplier coûte 5 gaz. Stocker un mot de 256 bits dans la blockchain coûte 20000 gaz, ce qui signifie stocker 1kb de données coûte 640000 gaz.

Tout comme l'USD a des centimes, l'éther a sa propre unité de base: wei. Si nous prenons wei comme unité de base de l'éther, nous obtenons le tableau de définitions suivant:

unité wei
wei 1
kwei / ada / femtotether 1.000
mwei / babbage / picoether 1.000.000
gwei / shannon / nanoéther / nano 1.000.000.000
szabo / microéther / micro 1.000.000.000.000 [19659027] finney / milliether / milli 1.000.000.000.000.000
éther 1.000.000.000.000.000.000

Astuce: utilisez ce convertisseur pour convertir entre Ether

Selon ce site informatif le prix moyen actuel du gaz est de 10 GWei (10 gigawei). Voyant que 1 GWei est un milliardième d'un éther, le coût mentionné ci-dessus de stocker un mot de 1kb est 640000 * 10, ce qui est de 6,4 millions de GWei. Cela équivaut à 0,0064 eth qui, au prix de 450 $ par éther, s'élève à environ 2,88 $

Le texte du début du tableau ci-dessus jusqu'à >> ce marqueur spécifique << est environ 1kb. Stocker ce petit bout de texte dans la blockchain coûte donc 2,88 $. Cependant, c'est juste le coût de stockage! Notre contrat intelligent peut aussi avoir une certaine logique, comme additionner ou multiplier puis stocker des nombres, ou des déclencheurs qui s'activent sur un bloc miné spécifique etc. Évidemment, stocker des données dans la blockchain lui-même est incroyablement cher. Le stockage est meilleur dans BigchainDB ou IPFS alors que blockchain est une meilleure solution pour le traitement global et la vérification de ces données

Pourquoi le gaz?

Pourquoi payer les coûts dans le gaz et pas directement? 19659008] Tous les prix du gaz de toutes les opérations possibles que l'EVM peut effectuer sont codés en dur dans le protocole Ethereum et dans les clients (programmes) auxquels nous nous connectons, comme Geth, Eth, Parity, etc. Si le code les répertoriait dans l'éther, alors nous devions mettre à jour le code chaque fois que la valeur de l'éther fluctuait pour maintenir le prix des efforts de calcul dans une fourchette normale et maintenir le système utilisable, ce qui est évidemment insoutenable.

gaz en plus des coûts, et en payant pour le gaz avec GWei, on nous donne la possibilité de modifier la quantité de gaz à utiliser dans une transaction et le montant d'argent pour le payer. C'est complètement sous notre contrôle, sans déséquilibrer le système

Ceci nous amène à notre dernière section

Limite / Coût vs Prix

Limite de gaz est le montant maximal de gaz que nous sommes prêts à dépenser pour une transaction. La plupart des logiciels que nous utilisons pour diffuser des transactions Ethereum ont la capacité d'auto-estimer la quantité de gaz qui sera nécessaire pour exécuter une fonction. Il va généralement suggérer un chiffre dès le départ. Par exemple, les transactions monétaires A-> B simples n'ont généralement besoin que de 21000 gaz. Les plus complexes, qui appellent des fonctions de contrat intelligentes spécifiques, peuvent se trouver dans des centaines de milliers, voire des millions de gaz. La quantité dépensée de gaz est appelée coût du gaz .

Nous, en tant qu'utilisateur, pouvons modifier la quantité de gaz que nous voulons dépenser sur une transaction et la réduire, mais si la transaction manque de gaz pendant l'exécution, nous perdons le gaz que nous avons envoyé. Il a été dépensé et la transaction est rejetée. D'un autre côté, si nous fournissons plus de gaz que nécessaire, le reste nous est remboursé. Par conséquent, il est toujours préférable d'envoyer plus de gaz que nécessaire pour exécuter une transaction

Le coût du gaz est le prix GWei par unité de gaz.

Ainsi, le coût total d'une transaction Ethereum est en fait la quantité de gaz nécessaire multipliée par le prix en GWei par unité de gaz. C'est le maximum frais de transaction que nous paierons; Prenons le cas d'un exemple:

 25 Gwei

Dans l'image ci-dessus, nous exécutons une transaction qui, en raison à sa complexité, estime qu'il aura besoin de 135963 gaz. Avec un prix de 25 GWei, les frais de transaction maximums que nous paierons sont de 1,57 $, ce qui est trivial lorsqu'on regarde le montant total que nous envoyons (0,38 eth = 178 $). Si nous élevons le prix du gaz à 250 GWei, la transaction devient proportionnellement plus coûteuse:

 250 GWei

Une taxe plus élevée encourage effectivement les mineurs à traiter notre transaction avant les autres dans la file d'attente. accélérer l'exécution. Si nous ne sommes pas pressés, nous pouvons laisser le prix du gaz à sa valeur de départ et la confirmation de la transaction ne devrait pas prendre plus de 10 minutes. Mais si nous sommes pressés et voulons le faire en quelques secondes (si, par exemple, nous avons affaire à une enchère), il est facile d'augmenter le prix du gaz et de sacrifier de l'argent pour garantir le succès.

Conclusion

Le gaz est l'unité de travail dépensée par opération de calcul dans la machine virtuelle Ethereum. Il est payé en éther, le jeton du protocole Ethereum, et chaque opération de calcul a un coût en gaz différent. Le prix du gaz (en GWei ou 1 milliardième d'un éther) varie selon la congestion du réseau et la préférence de l'utilisateur pour une confirmation rapide.

Pour un contrat intelligent que nous voulons déployer sur le réseau Ethereum, deux termes sont importants: limite de gaz, et prix du gaz. La limite de gaz est la quantité maximale de gaz que nous sommes prêts à dépenser pour l'exécution de la transaction. La quantité de gaz réellement requise (connue seulement une fois que la transaction a été exécutée) est appelée coût du gaz . Le prix du gaz est le prix par unité de gaz, exprimé en GWei (ou milliardièmes d'éther). Le coût total d'une transaction sera le produit du coût du gaz et du prix du gaz, tandis que les frais de transaction maximum seront le produit de la limite de gaz et du prix du gaz. La différence est remboursée à l'expéditeur de la transaction pour que le système reste juste et utilisable.






Source link