Bài học 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 !

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 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 !

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.