Les + populaires

BTC ETH SOL XRP BNB USDC USDT

Suivez-nous

Mutabilité d’état de fonction dans la solidité | de Abdulrasheed Adediran | Coinmons | février 2022

IAavec
Abdulrasheed Adiran
Photo de Meagan Carsience sur Unsplash

La mutabilité d’état est un concept solide qui définit le comportement des fonctions et la manière dont elles interagissent avec les données stockées sur la blockchain. Dans cet article, vous découvrirez les différents modificateurs de mutabilité d’état et comment les appliquer dans la rédaction de contrats intelligents optimisés.

Les deux principaux modificateurs de mutabilité d’état dans la solidité sont :

Afficher les fonctions

Les fonctions d’affichage sont des fonctions en lecture seule et sont déclarées avec le view mot-clé. Ils ne modifient pas l’état de la blockchain. Cela signifie que les fonctions déclarées avec le view Le mot-clé ne peut pas contenir de code susceptible de modifier des variables d’état ou des données stockées sur la blockchain.

Aditionellement, view les fonctions ne peuvent pas recevoir ou envoyer d’éther et ne peuvent appeler que d’autres view ou pure les fonctions. UNE view La fonction qui modifie potentiellement l’état de la blockchain générera une erreur et ne pourra pas être compilée. De même, lorsque le compilateur détecte une fonction qui lit mais n’écrit pas dans la blockchain, il vous suggérera de définir la mutabilité d’état de cette fonction sur view.

L’exemple dans contrat A ci-dessous montre comment voir résultat la fonction lit les données (num1 et num2) de l’état mais ne modifie pas les données.

Sortir:

Fonctions pures ?

Déclarer une fonction comme pure empêche cette fonction de modifier ou d’interagir avec les données stockées sur la blockchain. Fonctions marquées comme pure ni lire ni écrire dans la blockchain. Ils ne peuvent ni recevoir ni envoyer d’éther, ni utiliser les membres de msg ou membres de block et ne peut appeler que d’autres pure les fonctions.

Si votre contrat contient une fonction qui ne lit pas ou ne modifie pas l’état, le compilateur signalera un avertissement et vous suggérera de spécifier la mutabilité de l’état. Cet avertissement peut être ignoré et le code sera quand même compilé. Cependant, il est recommandé de toujours le régler sur pure .

L’exemple dans contrat B ci-dessous montre comment addNum La fonction ne lit ni les données ni n’écrit dans l’état.

Sortir:

Pourquoi devriez-vous marquer vos fonctions comme vues ou pures ?

Optimisation du gaz : La consommation de gaz s’applique uniquement lorsqu’une transaction est déclenchée et les transactions sont déclenchées lorsque l’état est modifié. Fonctions marquées comme view ou pure ne modifient pas l’état, donc ne coûtent pas de gaz, sauf s’ils sont appelés à partir de contrats externes.

Autres modificateurs de mutabilité d’état de fonction

En plus de view et purela mutabilité de l’état de la fonction peut également être payable ou non payant.

Fonction Payable

Déclarer une fonction avec le payable Le mot clé permet à la fonction d’envoyer et de recevoir de l’éther. Tenter d’envoyer ou de recevoir de l’éther via une fonction qui n’est pas marquée comme payable entraînera une transaction rejetée.

Il est donc obligatoire de marquer une fonction comme payable si votre contrat intelligent doit envoyer ou recevoir de l’éther via cette fonction.

le verser la fonction ci-dessous permet à d’autres contrats d’envoyer de l’éther à contrat C.

Fonction non payante

Tandis que non-payable n’est pas un mot-clé dans la version actuelle de la solidité, c’est le modificateur de mutabilité d’état par défaut supposé lorsqu’une fonction n’est pas explicitement définie comme payable. Non payant fonctions non définies explicitement comme view ou pure conviennent mieux aux fonctions qui lisent et modifient potentiellement des variables d’état. La limite majeure à non-payable fonctions est leur incapacité à recevoir ou à envoyer de l’éther.

le incrément fonction dans contrat D ci-dessus montre comment non-payable les fonctions lisent les données de l’état en accédant au compter variable déclarée. Il illustre également comment la fonction modifie potentiellement l’état en ajoutant 1 à la valeur de compter à chaque fois la fonction incrément est appelé.

Si vous avez trouvé cela utile, veuillez suivre, partager et montrer quelques ❤️ avec 👏.

Rejoignez Coinmonks Telegram Channel et Youtube Channel pour en savoir plus sur le trading et l’investissement cryptographiques

Source medium.com

Gérez votre patrimoine
Finary
Un mois de Premium offert

Donnez votre avis

Soyez le 1er à noter cet article


Partagez cet article maintenant !

Envoyez simplement nos contenus crypto et finance à vos proches.