レッスン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を代表するものではありません。