Numa estrutura de dados FIFO, o primeiro elemento adicionado à fila será o primeiro a ser removido. Isto é equivalente ao requisito de que, uma vez adicionado um novo elemento, todos os elementos que foram adicionados antes devem ser removidos antes que o novo elemento possa ser removido.
Fonte: Invostopédia
No contexto de contratos inteligentes, a implementação de uma fila FIFO pode ser útil em muitos cenários, como um sistema de filas justo onde todos são atendidos (ou processados) na ordem em que entram.
Vamos em frente e escrever um contrato FIFO. As principais operações do nosso contrato serão push
, para adicionar elementos à fila, e pop
, para remover elementos da fila.
O contrato armazena a fila em uma lista em seu armazenamento, e cada operação push
anexa um elemento ao final da lista, enquanto cada operação pop
remove um elemento do início da lista.
Veja como o contrato pode ser:
Python
import smartpy as sp
@sp.module
def main():
# A classe Fifo define um contrato simples que lida com instruções push e pop
# primeiro a entrar, primeiro a sair.
classe 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, 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]
se "modelos" não estiverem em __name__:
@sp.add_test(name="Fifo")
def test():
cenário = sp.test_scenario(main)
cenário.h1("Simples Contrato Fifo")
c1 = main.SimpleFifo()
cenário += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
cenário.verify(sp.View(c1, "head")() == 5)
Para testar o contrato FIFO:
Passo 1: Copie o código do contrato e cole-o no IDE SmartPy.
Passo 2: Clique no botão Run
no canto superior direito para compilar e simular o contrato.
Etapa 3: Verifique o lado direito do IDE para ver os resultados da simulação. Você verá o estado do armazenamento do contrato após cada operação.
Etapa 4: experimente alterar a ordem das operações ou adicionar novas operações.
Agora você aprendeu como criar um contrato FIFO na blockchain Tezos! Na próxima lição, iremos mais longe com visualizações recursivas, um recurso poderoso do SmartPy que permite que os contratos chamem suas próprias visualizações. Continue explorando e boa codificação!
Numa estrutura de dados FIFO, o primeiro elemento adicionado à fila será o primeiro a ser removido. Isto é equivalente ao requisito de que, uma vez adicionado um novo elemento, todos os elementos que foram adicionados antes devem ser removidos antes que o novo elemento possa ser removido.
Fonte: Invostopédia
No contexto de contratos inteligentes, a implementação de uma fila FIFO pode ser útil em muitos cenários, como um sistema de filas justo onde todos são atendidos (ou processados) na ordem em que entram.
Vamos em frente e escrever um contrato FIFO. As principais operações do nosso contrato serão push
, para adicionar elementos à fila, e pop
, para remover elementos da fila.
O contrato armazena a fila em uma lista em seu armazenamento, e cada operação push
anexa um elemento ao final da lista, enquanto cada operação pop
remove um elemento do início da lista.
Veja como o contrato pode ser:
Python
import smartpy as sp
@sp.module
def main():
# A classe Fifo define um contrato simples que lida com instruções push e pop
# primeiro a entrar, primeiro a sair.
classe 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, 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]
se "modelos" não estiverem em __name__:
@sp.add_test(name="Fifo")
def test():
cenário = sp.test_scenario(main)
cenário.h1("Simples Contrato Fifo")
c1 = main.SimpleFifo()
cenário += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
cenário.verify(sp.View(c1, "head")() == 5)
Para testar o contrato FIFO:
Passo 1: Copie o código do contrato e cole-o no IDE SmartPy.
Passo 2: Clique no botão Run
no canto superior direito para compilar e simular o contrato.
Etapa 3: Verifique o lado direito do IDE para ver os resultados da simulação. Você verá o estado do armazenamento do contrato após cada operação.
Etapa 4: experimente alterar a ordem das operações ou adicionar novas operações.
Agora você aprendeu como criar um contrato FIFO na blockchain Tezos! Na próxima lição, iremos mais longe com visualizações recursivas, um recurso poderoso do SmartPy que permite que os contratos chamem suas próprias visualizações. Continue explorando e boa codificação!