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.
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 !
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.
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 !