Урок 4

Criação de Contrato FIFO

Nesta lição, vamos nos aprofundar num exemplo mais complexo de contratos SmartPy: uma fila First In, First Out (FIFO). O FIFO é um método de organizar e manipular um buffer de dados, onde a (primeira) entrada mais antiga 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 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.

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 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!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 4

Criação de Contrato FIFO

Nesta lição, vamos nos aprofundar num exemplo mais complexo de contratos SmartPy: uma fila First In, First Out (FIFO). O FIFO é um método de organizar e manipular um buffer de dados, onde a (primeira) entrada mais antiga 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 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.

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 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!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.