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 têm de ser removidos antes que o novo elemento possa ser removido.
Fonte: Invostopedia
No contexto dos contratos inteligentes, a implementação de uma fila FIFO pode ser útil para 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 numa lista no 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 parecer:
Python
importar smartpy como sp
@sp .módulo
def principal ():
# A classe Fifo define um contrato simples que lida com instruções push and pop
# numa base de primeiro a chegar, primeiro a sair.
classe SimpleFIFO (SP.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp .ponto de entrada
def pop (self):
afirmar self.data.first self.data.last <
del self.data.saved [self.data.first]
self.data.first += 1
@sp .ponto de entrada
def push (self, elemento):
self.data.last += 1
self.data.saved [self.data.last] = elemento
@sp .onchain_view
cabeça def (self):
devolver self.data.saved [self.data.first]
se " os modelos " não estiverem em __name__:
@sp .add_test (nome= Fifo) " "
teste def ():
cenário = sp.test_scenario (principal)
scenario.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, " cabeça") () == 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 Executar
no canto superior direito para compilar e simular o contrato.
Passo 3: Verifique o lado direito do IDE para ver os resultados da simulação. Verá o estado do armazenamento do contrato após cada operação.
Passo 4: Experimente alterando a ordem das operações ou adicionando novas operações.
Aprendeu agora a criar um contrato FIFO na cadeia de blocos Tezos! Na próxima lição, iremos mais longe com visões recursivas, uma característica poderosa do SmartPy que permite aos contratos chamarem as suas próprias visões. Continue a explorar e codificar feliz!
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 têm de ser removidos antes que o novo elemento possa ser removido.
Fonte: Invostopedia
No contexto dos contratos inteligentes, a implementação de uma fila FIFO pode ser útil para 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 numa lista no 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 parecer:
Python
importar smartpy como sp
@sp .módulo
def principal ():
# A classe Fifo define um contrato simples que lida com instruções push and pop
# numa base de primeiro a chegar, primeiro a sair.
classe SimpleFIFO (SP.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp .ponto de entrada
def pop (self):
afirmar self.data.first self.data.last <
del self.data.saved [self.data.first]
self.data.first += 1
@sp .ponto de entrada
def push (self, elemento):
self.data.last += 1
self.data.saved [self.data.last] = elemento
@sp .onchain_view
cabeça def (self):
devolver self.data.saved [self.data.first]
se " os modelos " não estiverem em __name__:
@sp .add_test (nome= Fifo) " "
teste def ():
cenário = sp.test_scenario (principal)
scenario.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, " cabeça") () == 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 Executar
no canto superior direito para compilar e simular o contrato.
Passo 3: Verifique o lado direito do IDE para ver os resultados da simulação. Verá o estado do armazenamento do contrato após cada operação.
Passo 4: Experimente alterando a ordem das operações ou adicionando novas operações.
Aprendeu agora a criar um contrato FIFO na cadeia de blocos Tezos! Na próxima lição, iremos mais longe com visões recursivas, uma característica poderosa do SmartPy que permite aos contratos chamarem as suas próprias visões. Continue a explorar e codificar feliz!