第4課

Création d'un contrat FIFO

Dans cette leçon, nous allons nous pencher sur un exemple plus complexe de contrats SmartPy : une file d'attente FIFO (First In, First Out). Le FIFO est une méthode d'organisation et de manipulation d'une mémoire tampon de données, dans laquelle l'entrée la plus ancienne (la première) ou la "tête" de la file d'attente est traitée en premier.

Théorie

Dans une structure de données FIFO, le premier élément ajouté à la file d'attente sera le premier à être retiré. Cela équivaut à l'exigence selon laquelle, lorsqu'un nouvel élément est ajouté, tous les éléments qui ont été ajoutés auparavant doivent être supprimés avant que le nouvel élément puisse être supprimé.

Source : Invostopedia

Dans le contexte des contrats intelligents, la mise en œuvre d'une file d'attente FIFO peut être utile pour de nombreux scénarios, tels qu'un système de file d'attente équitable où tout le monde est servi (ou traité) dans l'ordre d'arrivée.

Pratique

Rédigeons un contrat FIFO. Les principales opérations de notre contrat seront " push", pour ajouter des éléments à la file d'attente, et " pop", pour retirer des éléments de la file d'attente.

Le contrat stocke la file d'attente dans une liste, et chaque opération "push" ajoute un élément à la fin de la liste, tandis que chaque opération "pop" retire un élément du début de la liste.

Voici à quoi pourrait ressembler le contrat :

Python
import smartpy as sp


@sp.module
def main() :
   # La classe Fifo définit un contrat simple qui gère les instructions push et pop
 # sur la base du premier entré, premier sorti.

    class SimpleFifo(sp.Contract) :
 def __init__(self) :
 self.data.first = 0
 self.data.last = -1
 self.data.saved = {}

       @sp.entrypoint
 def pop(self) :
 assert self.data.first < self.data.last
 del self.data.saved[self.data.first]
            self.data.first += 1

 @sp.entrypoint
 def push(self, element) :
 self.data.last += 1
 self.data.saved[self.data.last] = élément

 @sp.onchain_view
 def head(self) :
 return self.data.saved[self.data.first]


if "templates" not in __name__:

   @sp.add_test(name="Fifo")
 def test() :
 scenario = sp.test_scenario(main)
        scénario.h1("Simple Fifo Contract")
 c1 = main.SimpleFifo()
 scenario += c1
 c1.push(4)
 c1.push(5)
 c1.push(6)
 c1.push(7)
 c1.pop()
 scenario.verify(sp.View(c1, "head")() == 5)

Pour tester le contrat FIFO :

Étape 1 : Copiez le code du contrat et collez-le dans l'IDE SmartPy.

Étape 2 : Cliquez sur le bouton Exécuter en haut à droite pour compiler et simuler le contrat.

Étape 3 : Consultez la partie droite de l'IDE pour voir les résultats de la simulation. Vous verrez l'état de la mémoire du contrat après chaque opération.

Étape 4 : Expérimentez en modifiant l'ordre des opérations ou en ajoutant de nouvelles opérations.

Vous avez maintenant appris à créer un contrat FIFO sur la blockchain Tezos ! Dans la prochaine leçon, nous irons plus loin avec les vues récursives, une fonctionnalité puissante de SmartPy qui permet aux contrats d'appeler leurs propres vues. Continuez à explorer et à coder avec plaisir !

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第4課

Création d'un contrat FIFO

Dans cette leçon, nous allons nous pencher sur un exemple plus complexe de contrats SmartPy : une file d'attente FIFO (First In, First Out). Le FIFO est une méthode d'organisation et de manipulation d'une mémoire tampon de données, dans laquelle l'entrée la plus ancienne (la première) ou la "tête" de la file d'attente est traitée en premier.

Théorie

Dans une structure de données FIFO, le premier élément ajouté à la file d'attente sera le premier à être retiré. Cela équivaut à l'exigence selon laquelle, lorsqu'un nouvel élément est ajouté, tous les éléments qui ont été ajoutés auparavant doivent être supprimés avant que le nouvel élément puisse être supprimé.

Source : Invostopedia

Dans le contexte des contrats intelligents, la mise en œuvre d'une file d'attente FIFO peut être utile pour de nombreux scénarios, tels qu'un système de file d'attente équitable où tout le monde est servi (ou traité) dans l'ordre d'arrivée.

Pratique

Rédigeons un contrat FIFO. Les principales opérations de notre contrat seront " push", pour ajouter des éléments à la file d'attente, et " pop", pour retirer des éléments de la file d'attente.

Le contrat stocke la file d'attente dans une liste, et chaque opération "push" ajoute un élément à la fin de la liste, tandis que chaque opération "pop" retire un élément du début de la liste.

Voici à quoi pourrait ressembler le contrat :

Python
import smartpy as sp


@sp.module
def main() :
   # La classe Fifo définit un contrat simple qui gère les instructions push et pop
 # sur la base du premier entré, premier sorti.

    class SimpleFifo(sp.Contract) :
 def __init__(self) :
 self.data.first = 0
 self.data.last = -1
 self.data.saved = {}

       @sp.entrypoint
 def pop(self) :
 assert self.data.first < self.data.last
 del self.data.saved[self.data.first]
            self.data.first += 1

 @sp.entrypoint
 def push(self, element) :
 self.data.last += 1
 self.data.saved[self.data.last] = élément

 @sp.onchain_view
 def head(self) :
 return self.data.saved[self.data.first]


if "templates" not in __name__:

   @sp.add_test(name="Fifo")
 def test() :
 scenario = sp.test_scenario(main)
        scénario.h1("Simple Fifo Contract")
 c1 = main.SimpleFifo()
 scenario += c1
 c1.push(4)
 c1.push(5)
 c1.push(6)
 c1.push(7)
 c1.pop()
 scenario.verify(sp.View(c1, "head")() == 5)

Pour tester le contrat FIFO :

Étape 1 : Copiez le code du contrat et collez-le dans l'IDE SmartPy.

Étape 2 : Cliquez sur le bouton Exécuter en haut à droite pour compiler et simuler le contrat.

Étape 3 : Consultez la partie droite de l'IDE pour voir les résultats de la simulation. Vous verrez l'état de la mémoire du contrat après chaque opération.

Étape 4 : Expérimentez en modifiant l'ordre des opérations ou en ajoutant de nouvelles opérations.

Vous avez maintenant appris à créer un contrat FIFO sur la blockchain Tezos ! Dans la prochaine leçon, nous irons plus loin avec les vues récursives, une fonctionnalité puissante de SmartPy qui permet aux contrats d'appeler leurs propres vues. Continuez à explorer et à coder avec plaisir !

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。