Écrire dans la blockchain à l’aide de Solidity

Varun Jain

Écrire dans la blockchain à l’aide de Solidity


J’ai donc récemment examiné la solidité et j’ai mis la main sur l’application de vote. Assez simple à saisir. Mais voici ce que je suis confus (venant de l’arrière-plan du développement pour le web / mobile):

Dans le cadre d’une application de vote simple basée sur la solidité qui détient les votes pour une proposition

  1. On peut augmenter le vote lors de l’appel de méthode. Mais il ne semble pas y avoir d’appel explicite à la «blockchain» (et en ce que je la traite comme une base de données) pour qu’elle persiste. EVM écrit automatiquement dans la blockchain chaque fois que je change la valeur d’une variable dans la blockchain ou le fait-il une fois l’appel de fonction terminé et les valeurs des variables finalisées.

  2. Comment décide-t-on quelles variables doivent être écrites dans la blockchain et lesquelles ne le sont pas? J’utilise peut-être une simple variable de compteur (i = 0) pour garder une trace d’une boucle, disons sortir de la boucle si elle est exécutée plus de 100 fois. Le compteur est quelque chose que je n’ai pas l’intention de persister dans la blockchain.

    1. À certains endroits, il a également été suggéré qu’un état soit maintenu dans un contrat intelligent, si oui, comment l’état peut-il être le même pour plusieurs utilisateurs utilisant la même application?

Réponses


 smarx

Les contrats intelligents ont un stockage , qui est un état persistant. Dans Solidity, les « variables d’état » sont déclarées au niveau du contrat et se réfèrent aux emplacements dans le stockage.

Par défaut, les variables déclarées dans une fonction sont situées en mémoire . La mémoire n’est pas persistante.

Considérez l’exemple de code suivant:

 contract Test { uint256 counter; function increment(uint256 times) public { for (uint256 i = 0; i < times; i++) { counter += 1; } } } 

Ici, le counter fait référence à l’emplacement 0 dans le stockage , donc toutes les modifications apportées à celui-ci pendant une transaction sont conservées dans la blockchain.

La variable de boucle i n’existe qu’en mémoire , elle n’affecte donc pas le stockage.

Pour répondre à vos questions individuelles:

  1. L’état, conservé dans la chaîne de blocs, est conservé lorsque vous modifiez une valeur dans le stockage.
  2. J’ai couvert cela un peu, mais https://solidity.readthedocs.io/en/v0.4.23/types.html#reference-types pourrait aider avec les détails des emplacements variables. (Vous voudrez peut-être lire tout ce chapitre.)
  3. Oui, l’État est en quelque sorte maintenu « à l’intérieur » d’un contrat intelligent. Il est attaché à ce contrat (cette adresse), donc tous les utilisateurs qui interagissent avec lui verront le même état.

 

#à, #de, #la, blockchain, dans, écrire, l’aide, Solidity?

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *