In einer FIFO-Datenstruktur wird das erste zur Warteschlange hinzugefügte Element auch als erstes entfernt. Dies entspricht der Anforderung, dass nach dem Hinzufügen eines neuen Elements alle zuvor hinzugefügten Elemente entfernt werden müssen, bevor das neue Element entfernt werden kann.
Quelle: Invostopedia
Im Zusammenhang mit Smart Contracts kann die Implementierung einer FIFO-Warteschlange für viele Szenarien nützlich sein, beispielsweise für ein faires Warteschlangensystem, bei dem jeder in der Reihenfolge bedient (oder verarbeitet) wird, in der er eintrifft.
Lassen Sie uns einen FIFO-Vertrag schreiben. Die Hauptoperationen für unseren Vertrag sind push
, um Elemente zur Warteschlange hinzuzufügen, und pop
, um Elemente aus der Warteschlange zu entfernen.
Der Vertrag speichert die Warteschlange in einer Liste in seinem Speicher, und jede push
Operation hängt ein Element an das Ende der Liste an, während jede pop
Operation ein Element vom Anfang der Liste entfernt.
So könnte der Vertrag aussehen:
Python
import smartpy as sp
@sp.module
def main():
# Die Fifo-Klasse definiert einen einfachen Vertrag, der Push- und Pop-Anweisungen
# nach dem First-In-First-Out-Prinzip verarbeitet.
Klasse SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
affirm 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] = Element
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
wenn „Vorlagen“ nicht in __name__:
@sp.add_test(name="Fifo")
def test():
Szenario = sp.test_scenario(main)
Szenario.h1("Einfach Fifo-Vertrag")
c1 = main.SimpleFifo()
Szenario += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
scene.verify(sp.View(c1, "head")() == 5)
So testen Sie den FIFO-Vertrag:
Schritt 1: Kopieren Sie den Vertragscode und fügen Sie ihn in die SmartPy-IDE ein.
Schritt 2: Klicken Sie oben rechts auf die Schaltfläche Run
, um den Vertrag zu kompilieren und zu simulieren.
Schritt 3: Überprüfen Sie die rechte Seite der IDE, um die Simulationsergebnisse anzuzeigen. Nach jedem Vorgang sehen Sie den Status des Vertragsspeichers.
Schritt 4: Experimentieren Sie, indem Sie die Reihenfolge der Operationen ändern oder neue Operationen hinzufügen.
Sie haben jetzt gelernt, wie Sie einen FIFO-Vertrag auf der Tezos-Blockchain erstellen! In der nächsten Lektion gehen wir weiter auf rekursive Ansichten ein, eine leistungsstarke Funktion von SmartPy, die es Verträgen ermöglicht, ihre eigenen Ansichten aufzurufen. Entdecken Sie weiter und viel Spaß beim Programmieren!
In einer FIFO-Datenstruktur wird das erste zur Warteschlange hinzugefügte Element auch als erstes entfernt. Dies entspricht der Anforderung, dass nach dem Hinzufügen eines neuen Elements alle zuvor hinzugefügten Elemente entfernt werden müssen, bevor das neue Element entfernt werden kann.
Quelle: Invostopedia
Im Zusammenhang mit Smart Contracts kann die Implementierung einer FIFO-Warteschlange für viele Szenarien nützlich sein, beispielsweise für ein faires Warteschlangensystem, bei dem jeder in der Reihenfolge bedient (oder verarbeitet) wird, in der er eintrifft.
Lassen Sie uns einen FIFO-Vertrag schreiben. Die Hauptoperationen für unseren Vertrag sind push
, um Elemente zur Warteschlange hinzuzufügen, und pop
, um Elemente aus der Warteschlange zu entfernen.
Der Vertrag speichert die Warteschlange in einer Liste in seinem Speicher, und jede push
Operation hängt ein Element an das Ende der Liste an, während jede pop
Operation ein Element vom Anfang der Liste entfernt.
So könnte der Vertrag aussehen:
Python
import smartpy as sp
@sp.module
def main():
# Die Fifo-Klasse definiert einen einfachen Vertrag, der Push- und Pop-Anweisungen
# nach dem First-In-First-Out-Prinzip verarbeitet.
Klasse SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
affirm 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] = Element
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
wenn „Vorlagen“ nicht in __name__:
@sp.add_test(name="Fifo")
def test():
Szenario = sp.test_scenario(main)
Szenario.h1("Einfach Fifo-Vertrag")
c1 = main.SimpleFifo()
Szenario += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
scene.verify(sp.View(c1, "head")() == 5)
So testen Sie den FIFO-Vertrag:
Schritt 1: Kopieren Sie den Vertragscode und fügen Sie ihn in die SmartPy-IDE ein.
Schritt 2: Klicken Sie oben rechts auf die Schaltfläche Run
, um den Vertrag zu kompilieren und zu simulieren.
Schritt 3: Überprüfen Sie die rechte Seite der IDE, um die Simulationsergebnisse anzuzeigen. Nach jedem Vorgang sehen Sie den Status des Vertragsspeichers.
Schritt 4: Experimentieren Sie, indem Sie die Reihenfolge der Operationen ändern oder neue Operationen hinzufügen.
Sie haben jetzt gelernt, wie Sie einen FIFO-Vertrag auf der Tezos-Blockchain erstellen! In der nächsten Lektion gehen wir weiter auf rekursive Ansichten ein, eine leistungsstarke Funktion von SmartPy, die es Verträgen ermöglicht, ihre eigenen Ansichten aufzurufen. Entdecken Sie weiter und viel Spaß beim Programmieren!