En una estructura de datos FIFO, el primer elemento agregado a la cola será el primero en eliminarse. Esto equivale al requisito de que una vez que se agrega un nuevo elemento, todos los elementos que se agregaron antes deben eliminarse antes de que se pueda eliminar el nuevo elemento.
Fuente: Invostoppedia
En el contexto de los contratos inteligentes, implementar una cola FIFO puede ser útil para muchos escenarios, como un sistema de cola justo donde todos son atendidos (o procesados) en el orden en que llegan.
Sigamos adelante y escribamos un contrato FIFO. Las operaciones principales de nuestro contrato serán push
, para agregar elementos a la cola, y pop
, para eliminar elementos de la cola.
El contrato almacena la cola en una lista en su almacenamiento, y cada operación push
agrega un elemento al final de la lista, mientras que cada operación pop
elimina un elemento del principio de la lista.
Así es como podría verse el contrato:
Python
importa smartpy como sp
@sp.module
def main():
# La clase Fifo define un contrato simple que maneja instrucciones push y pop
# según el principio de primero en entrar, primero en salir.
clase SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
afirmar self.data.first < self.data.last
del self.data.saved[self.data.first]
self.data.first += 1
@sp.entrypoint
def push(self, elemento):
self.data.last += 1
self.data.saved[self.data.last] = elemento
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
si "plantillas" no están en __name__:
@sp.add_test(name="Fifo")
def test():
escenario = sp.test_scenario(main)
escenario.h1("Simple Contrato Fifo")
c1 = main.SimpleFifo()
escenario += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
escenario.verificar(sp.View(c1, "cabeza")() == 5)
Para probar el contrato FIFO:
Paso 1: Copie el código del contrato y péguelo en el IDE de SmartPy.
Paso 2: haga clic en el botón Run
en la esquina superior derecha para compilar y simular el contrato.
Paso 3: consulte el lado derecho del IDE para ver los resultados de la simulación. Verás el estado del almacenamiento del contrato después de cada operación.
Paso 4: Experimente cambiando el orden de las operaciones o agregando nuevas operaciones.
¡Ahora has aprendido cómo crear un contrato FIFO en la cadena de bloques de Tezos! En la próxima lección, iremos más allá con las vistas recursivas, una característica poderosa de SmartPy que permite a los contratos llamar a sus propias vistas. ¡Sigue explorando y codificando felizmente!
En una estructura de datos FIFO, el primer elemento agregado a la cola será el primero en eliminarse. Esto equivale al requisito de que una vez que se agrega un nuevo elemento, todos los elementos que se agregaron antes deben eliminarse antes de que se pueda eliminar el nuevo elemento.
Fuente: Invostoppedia
En el contexto de los contratos inteligentes, implementar una cola FIFO puede ser útil para muchos escenarios, como un sistema de cola justo donde todos son atendidos (o procesados) en el orden en que llegan.
Sigamos adelante y escribamos un contrato FIFO. Las operaciones principales de nuestro contrato serán push
, para agregar elementos a la cola, y pop
, para eliminar elementos de la cola.
El contrato almacena la cola en una lista en su almacenamiento, y cada operación push
agrega un elemento al final de la lista, mientras que cada operación pop
elimina un elemento del principio de la lista.
Así es como podría verse el contrato:
Python
importa smartpy como sp
@sp.module
def main():
# La clase Fifo define un contrato simple que maneja instrucciones push y pop
# según el principio de primero en entrar, primero en salir.
clase SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
afirmar self.data.first < self.data.last
del self.data.saved[self.data.first]
self.data.first += 1
@sp.entrypoint
def push(self, elemento):
self.data.last += 1
self.data.saved[self.data.last] = elemento
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
si "plantillas" no están en __name__:
@sp.add_test(name="Fifo")
def test():
escenario = sp.test_scenario(main)
escenario.h1("Simple Contrato Fifo")
c1 = main.SimpleFifo()
escenario += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
escenario.verificar(sp.View(c1, "cabeza")() == 5)
Para probar el contrato FIFO:
Paso 1: Copie el código del contrato y péguelo en el IDE de SmartPy.
Paso 2: haga clic en el botón Run
en la esquina superior derecha para compilar y simular el contrato.
Paso 3: consulte el lado derecho del IDE para ver los resultados de la simulación. Verás el estado del almacenamiento del contrato después de cada operación.
Paso 4: Experimente cambiando el orden de las operaciones o agregando nuevas operaciones.
¡Ahora has aprendido cómo crear un contrato FIFO en la cadena de bloques de Tezos! En la próxima lección, iremos más allá con las vistas recursivas, una característica poderosa de SmartPy que permite a los contratos llamar a sus propias vistas. ¡Sigue explorando y codificando felizmente!