第4课

Criação de contrato FIFO

Nesta lição, nos aprofundaremos em um exemplo mais complexo de contratos SmartPy: uma fila First In, First Out (FIFO). FIFO é um método de organização e manipulação de um buffer de dados, onde a entrada mais antiga (primeira) ou 'cabeça' da fila é processada primeiro.

Teoria

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.

Prático

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!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第4课

Criação de contrato FIFO

Nesta lição, nos aprofundaremos em um exemplo mais complexo de contratos SmartPy: uma fila First In, First Out (FIFO). FIFO é um método de organização e manipulação de um buffer de dados, onde a entrada mais antiga (primeira) ou 'cabeça' da fila é processada primeiro.

Teoria

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.

Prático

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!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。