Lección 2

Stockage des valeurs dans un contrat

Bonjour et bienvenue ! Dans notre première leçon, nous vous avons présenté SmartPy et Tezos en créant un contrat intelligent très basique. Dans cette leçon, nous allons approfondir l'un des composants les plus essentiels de tout contrat intelligent Tezos : le stockage.

Qu'est-ce que le stockage ?

Dans un contrat intelligent Tezos, le stockage est comme la mémoire du contrat. C'est l'endroit où sont conservées toutes les données relatives au contrat. Essentiellement, il agit comme l'état de notre contrat, en stockant des valeurs qui persistent à travers différentes transactions et en permettant au contrat intelligent de "se souvenir" des informations. C'est cette capacité qui nous permet de construire des applications décentralisées complexes et attrayantes sur la blockchain Tezos.

Comprendre le stockage en profondeur

Avant de nous plonger dans le code de cette leçon, décomposons un peu plus le concept de stockage. Le stockage d'un contrat est l'état qui persiste entre les appels de fonction. Si vous venez d'un milieu de programmation traditionnel, vous pouvez considérer qu'il s'agit de l'"état global" du contrat. C'est ce qui permet aux utilisateurs d'avoir des interactions continues avec un contrat au fil du temps.

Jetons maintenant un coup d'œil au code de notre contrat pour cette leçon :

Python
import smartpy as sp

@sp.module
def main() :
 class StoreValue(sp.Contract) :
 def __init__(self, value) :
 self.data.storedValue = value

 @sp.entrypoint
 def replace(self, params) :
 self.data.storedValue = params.value

 @sp.entrypoint
 def double(self) :
 self.data.storedValue *= 2

 @sp.entrypoint
 def divide(self, params) :
 assert params.divisor > 5
 self.data.storedValue /= params.divisor


if "templates" not in __name__:

   @sp.add_test(name="StoreValue")
 def test() :
 c1 = main.StoreValue(12)
 scenario = sp.test_scenario(main)
        scénario.h1("Store Valeur")
 scenario += c1
 c1.replace(value=15)
 scenario.p("Some calcul").show(c1.data.storedValue * 12)
 c1.replace(value=25)
 c1.double()
 c1.divide(divisor=2).run(
            valid=False, exception="WrongCondition : params.divisor > 5"
 )
 scenario.verify(c1.data.storedValue == 50)
 c1.divide(divisor=6)
 scenario.verify(c1.data.storedValue == 8)

Exécution et décomposition du code

Dans notre exemple de contrat de stockage, nous avons plusieurs points d'entrée : remplacer, doubler et diviser. Après avoir déployé ce contrat, les utilisateurs peuvent appeler ces points d'entrée pour interagir avec le contrat.

Pour les points d'entrée remplacer et diviser, les utilisateurs doivent fournir des paramètres dans la transaction. Pour remplacer, une valeur de paramètre est requise, et pour diviser, un diviseur de paramètre est requis.

Lorsque vous exécutez ce contrat dans l'IDE SmartPy, vous verrez sur le côté droit une représentation visuelle des opérations et du stockage du contrat. Vous pouvez en fait simuler les interactions entre les utilisateurs. Voici un guide étape par étape :

  1. Déployez votre contrat en cliquant sur le bouton Déployer.

  2. Après le déploiement, vous verrez le contrat représenté sous Contrats. Cliquez dessus.

  3. Les points d'entrée du contrat sont maintenant répertoriés.

  4. Pour appeler le remplacement, saisissez une valeur pour params.value dans le champ, puis cliquez sur le bouton remplacer.

  5. Pour appeler le double, il suffit de cliquer sur le bouton double.

  6. Pour appeler diviser, saisissez une valeur pour params.divisor dans le champ, puis cliquez sur le bouton diviser.
    Chacune de ces interactions créera une nouvelle opération répertoriée sous le contrat, et vous pouvez voir l'état mis à jour du stockage du contrat après chaque opération.

Dans ce contrat, nous mettons l'accent sur le concept de stockage avec la ligne self.data.storedValue = value. Ici, self.data fait référence au stockage de notre contrat. C'est ici que nous conservons l'état de notre contrat : un seul paramètre nommé storedValue.

Nous avons également plusieurs points d'entrée dans ce contrat. Les points d'entrée sont essentiellement des fonctions publiques qui permettent aux parties externes d'interagir avec le contrat. Ici, nos points d'entrée permettent de modifier la valeur stockée de différentes manières. Nous pouvons la remplacer par une nouvelle valeur, la doubler ou la diviser par un diviseur donné.

Ensuite, examinons le scénario de test que nous avons mis en place. Nous créons une instance de notre contrat avec la valeur initiale 12 pour storedValue. Nous appelons ensuite nos points d'entrée pour modifier la valeur de storedValue de différentes manières et valider les résultats.

Pourquoi le stockage est-il important ?

La possibilité de stocker et de mettre à jour des valeurs dans le stockage d'un contrat est fondamentale pour construire des contrats intelligents Tezos. Il permet la persistance des données lors des différentes interactions avec le contrat. Qu'il s'agisse de maintenir les soldes dans un contrat de jetons, de stocker des informations sur les utilisateurs dans une application décentralisée ou de conserver l'état d'un jeu sur la blockchain, le stockage est une caractéristique essentielle qui facilite ces fonctionnalités.

Le stockage dans un contrat intelligent peut contenir des valeurs simples comme des entiers, des chaînes et des booléens, ou des structures de données plus complexes comme des listes, des cartes et des objets personnalisés. Cela nous permet de construire une logique complexe et des transitions d'état dans nos contrats.

Dans la prochaine leçon, nous continuerons à développer ces concepts de base, en introduisant des calculs plus complexes dans les contrats intelligents, et nous commencerons à travailler avec des types de données plus avancés dans le stockage de notre contrat. Restez donc à l'écoute et n'oubliez pas : c'est en forgeant qu'on devient forgeron. N'hésitez pas à expérimenter le code, à faire des modifications et à observer les résultats !

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 2

Stockage des valeurs dans un contrat

Bonjour et bienvenue ! Dans notre première leçon, nous vous avons présenté SmartPy et Tezos en créant un contrat intelligent très basique. Dans cette leçon, nous allons approfondir l'un des composants les plus essentiels de tout contrat intelligent Tezos : le stockage.

Qu'est-ce que le stockage ?

Dans un contrat intelligent Tezos, le stockage est comme la mémoire du contrat. C'est l'endroit où sont conservées toutes les données relatives au contrat. Essentiellement, il agit comme l'état de notre contrat, en stockant des valeurs qui persistent à travers différentes transactions et en permettant au contrat intelligent de "se souvenir" des informations. C'est cette capacité qui nous permet de construire des applications décentralisées complexes et attrayantes sur la blockchain Tezos.

Comprendre le stockage en profondeur

Avant de nous plonger dans le code de cette leçon, décomposons un peu plus le concept de stockage. Le stockage d'un contrat est l'état qui persiste entre les appels de fonction. Si vous venez d'un milieu de programmation traditionnel, vous pouvez considérer qu'il s'agit de l'"état global" du contrat. C'est ce qui permet aux utilisateurs d'avoir des interactions continues avec un contrat au fil du temps.

Jetons maintenant un coup d'œil au code de notre contrat pour cette leçon :

Python
import smartpy as sp

@sp.module
def main() :
 class StoreValue(sp.Contract) :
 def __init__(self, value) :
 self.data.storedValue = value

 @sp.entrypoint
 def replace(self, params) :
 self.data.storedValue = params.value

 @sp.entrypoint
 def double(self) :
 self.data.storedValue *= 2

 @sp.entrypoint
 def divide(self, params) :
 assert params.divisor > 5
 self.data.storedValue /= params.divisor


if "templates" not in __name__:

   @sp.add_test(name="StoreValue")
 def test() :
 c1 = main.StoreValue(12)
 scenario = sp.test_scenario(main)
        scénario.h1("Store Valeur")
 scenario += c1
 c1.replace(value=15)
 scenario.p("Some calcul").show(c1.data.storedValue * 12)
 c1.replace(value=25)
 c1.double()
 c1.divide(divisor=2).run(
            valid=False, exception="WrongCondition : params.divisor > 5"
 )
 scenario.verify(c1.data.storedValue == 50)
 c1.divide(divisor=6)
 scenario.verify(c1.data.storedValue == 8)

Exécution et décomposition du code

Dans notre exemple de contrat de stockage, nous avons plusieurs points d'entrée : remplacer, doubler et diviser. Après avoir déployé ce contrat, les utilisateurs peuvent appeler ces points d'entrée pour interagir avec le contrat.

Pour les points d'entrée remplacer et diviser, les utilisateurs doivent fournir des paramètres dans la transaction. Pour remplacer, une valeur de paramètre est requise, et pour diviser, un diviseur de paramètre est requis.

Lorsque vous exécutez ce contrat dans l'IDE SmartPy, vous verrez sur le côté droit une représentation visuelle des opérations et du stockage du contrat. Vous pouvez en fait simuler les interactions entre les utilisateurs. Voici un guide étape par étape :

  1. Déployez votre contrat en cliquant sur le bouton Déployer.

  2. Après le déploiement, vous verrez le contrat représenté sous Contrats. Cliquez dessus.

  3. Les points d'entrée du contrat sont maintenant répertoriés.

  4. Pour appeler le remplacement, saisissez une valeur pour params.value dans le champ, puis cliquez sur le bouton remplacer.

  5. Pour appeler le double, il suffit de cliquer sur le bouton double.

  6. Pour appeler diviser, saisissez une valeur pour params.divisor dans le champ, puis cliquez sur le bouton diviser.
    Chacune de ces interactions créera une nouvelle opération répertoriée sous le contrat, et vous pouvez voir l'état mis à jour du stockage du contrat après chaque opération.

Dans ce contrat, nous mettons l'accent sur le concept de stockage avec la ligne self.data.storedValue = value. Ici, self.data fait référence au stockage de notre contrat. C'est ici que nous conservons l'état de notre contrat : un seul paramètre nommé storedValue.

Nous avons également plusieurs points d'entrée dans ce contrat. Les points d'entrée sont essentiellement des fonctions publiques qui permettent aux parties externes d'interagir avec le contrat. Ici, nos points d'entrée permettent de modifier la valeur stockée de différentes manières. Nous pouvons la remplacer par une nouvelle valeur, la doubler ou la diviser par un diviseur donné.

Ensuite, examinons le scénario de test que nous avons mis en place. Nous créons une instance de notre contrat avec la valeur initiale 12 pour storedValue. Nous appelons ensuite nos points d'entrée pour modifier la valeur de storedValue de différentes manières et valider les résultats.

Pourquoi le stockage est-il important ?

La possibilité de stocker et de mettre à jour des valeurs dans le stockage d'un contrat est fondamentale pour construire des contrats intelligents Tezos. Il permet la persistance des données lors des différentes interactions avec le contrat. Qu'il s'agisse de maintenir les soldes dans un contrat de jetons, de stocker des informations sur les utilisateurs dans une application décentralisée ou de conserver l'état d'un jeu sur la blockchain, le stockage est une caractéristique essentielle qui facilite ces fonctionnalités.

Le stockage dans un contrat intelligent peut contenir des valeurs simples comme des entiers, des chaînes et des booléens, ou des structures de données plus complexes comme des listes, des cartes et des objets personnalisés. Cela nous permet de construire une logique complexe et des transitions d'état dans nos contrats.

Dans la prochaine leçon, nous continuerons à développer ces concepts de base, en introduisant des calculs plus complexes dans les contrats intelligents, et nous commencerons à travailler avec des types de données plus avancés dans le stockage de notre contrat. Restez donc à l'écoute et n'oubliez pas : c'est en forgeant qu'on devient forgeron. N'hésitez pas à expérimenter le code, à faire des modifications et à observer les résultats !

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.