第3課

Construindo uma calculadora de contrato inteligente

Nesta lição, continuaremos a expandir sua compreensão do SmartPy e da forma como ele interage com o blockchain Tezos criando uma calculadora básica. Este contrato terá funções de adição, subtração, multiplicação e divisão.

Teoria

Os contratos inteligentes no Tezos podem ter vários pontos de entrada, que podem ser vistos como métodos ou funções na programação orientada a objetos. Cada um desses pontos de entrada pode ter parâmetros próprios e interagir com o armazenamento do contrato. No nosso contrato de calculadora, cada operação matemática será um ponto de entrada.

É fundamental observar que todas as modificações do armazenamento são registradas no blockchain. Como resultado, as operações que realizamos não são transitórias como seriam em uma calculadora normal. Em vez disso, são operações imutáveis e auditáveis na blockchain Tezos.

Além disso, vale lembrar que como o blockchain Tezos é descentralizado, todos os cálculos devem ser determinísticos. Isso significa que operações como divisão podem funcionar de maneira um pouco diferente do que você está acostumado. Por exemplo, a divisão nos contratos Tezos é uma divisão inteira, então 3 dividido por 2 daria 1, não 1,5.

Prático

Abaixo está o código do contrato da calculadora. O contrato Calculator armazena o resultado das operações em seu armazenamento. Cada ponto de entrada recebe um parâmetro e executa a operação com o resultado armazenado e o parâmetro de entrada.

Python 
 importar smartpy como sp 


 @sp.module 
 def main(): 
 class Calculadora(sp.Contract): 
 def __init__(self): 
 self.data.result = 0 

 @sp.entrypoint 
 def multiplicar(self, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def add(self, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 assert x >= 0 
 y = x 
 enquanto y * y > x : 
 y = (x / y + y) / 2 
 assert y * y <= x e x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def fatorial(self, x): 
 self.data.result = 1 
 para y no intervalo(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 assert x > 0, "A entrada deve ser maior que 0" 

 self.data.result = 0 # Inicialize o contador 

 se x < 1: # Para o intervalo 0 < x < 1 
 y = x 
 enquanto y < 1: 
 self.data.result -= 1 # Diminua o contador 
 y *= 2 # Multiplique y por 2 até y >= 1 
 else: # Para x >= 1 
 y = x 
 enquanto y >= 2: 
 self.data.result += 1 # Incrementa o contador 
 y /= 2 # Divida y por 2 


 se "modelos" não estiverem em __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 cenário = sp.test_scenario(main)
        cenário.h1("Calculadora")
        cenário += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        cenário.verify(c1.data.result == 524)

Vamos colocar esse contrato em ação!

Etapa 1: cole o código do contrato no IDE SmartPy.

Passo 2: Clique no botão Run no canto superior direito para compilar e simular o contrato.

Etapa 3: observe os resultados da simulação no lado direito do IDE. Você pode ver o estado do armazenamento do contrato após cada operação, como multiplicação, adição, raiz quadrada, etc.

Passo 4: Fique à vontade para modificar os parâmetros das operações e observar as alterações no armazenamento do contrato!

Agora você construiu e interagiu com um contrato inteligente que executa operações básicas de calculadora! Na próxima lição, veremos conceitos mais avançados, como a criação de contratos FIFO. Lembre-se de continuar explorando e boa codificação!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第3課

Construindo uma calculadora de contrato inteligente

Nesta lição, continuaremos a expandir sua compreensão do SmartPy e da forma como ele interage com o blockchain Tezos criando uma calculadora básica. Este contrato terá funções de adição, subtração, multiplicação e divisão.

Teoria

Os contratos inteligentes no Tezos podem ter vários pontos de entrada, que podem ser vistos como métodos ou funções na programação orientada a objetos. Cada um desses pontos de entrada pode ter parâmetros próprios e interagir com o armazenamento do contrato. No nosso contrato de calculadora, cada operação matemática será um ponto de entrada.

É fundamental observar que todas as modificações do armazenamento são registradas no blockchain. Como resultado, as operações que realizamos não são transitórias como seriam em uma calculadora normal. Em vez disso, são operações imutáveis e auditáveis na blockchain Tezos.

Além disso, vale lembrar que como o blockchain Tezos é descentralizado, todos os cálculos devem ser determinísticos. Isso significa que operações como divisão podem funcionar de maneira um pouco diferente do que você está acostumado. Por exemplo, a divisão nos contratos Tezos é uma divisão inteira, então 3 dividido por 2 daria 1, não 1,5.

Prático

Abaixo está o código do contrato da calculadora. O contrato Calculator armazena o resultado das operações em seu armazenamento. Cada ponto de entrada recebe um parâmetro e executa a operação com o resultado armazenado e o parâmetro de entrada.

Python 
 importar smartpy como sp 


 @sp.module 
 def main(): 
 class Calculadora(sp.Contract): 
 def __init__(self): 
 self.data.result = 0 

 @sp.entrypoint 
 def multiplicar(self, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def add(self, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 assert x >= 0 
 y = x 
 enquanto y * y > x : 
 y = (x / y + y) / 2 
 assert y * y <= x e x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def fatorial(self, x): 
 self.data.result = 1 
 para y no intervalo(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 assert x > 0, "A entrada deve ser maior que 0" 

 self.data.result = 0 # Inicialize o contador 

 se x < 1: # Para o intervalo 0 < x < 1 
 y = x 
 enquanto y < 1: 
 self.data.result -= 1 # Diminua o contador 
 y *= 2 # Multiplique y por 2 até y >= 1 
 else: # Para x >= 1 
 y = x 
 enquanto y >= 2: 
 self.data.result += 1 # Incrementa o contador 
 y /= 2 # Divida y por 2 


 se "modelos" não estiverem em __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 cenário = sp.test_scenario(main)
        cenário.h1("Calculadora")
        cenário += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        cenário.verify(c1.data.result == 524)

Vamos colocar esse contrato em ação!

Etapa 1: cole o código do contrato no IDE SmartPy.

Passo 2: Clique no botão Run no canto superior direito para compilar e simular o contrato.

Etapa 3: observe os resultados da simulação no lado direito do IDE. Você pode ver o estado do armazenamento do contrato após cada operação, como multiplicação, adição, raiz quadrada, etc.

Passo 4: Fique à vontade para modificar os parâmetros das operações e observar as alterações no armazenamento do contrato!

Agora você construiu e interagiu com um contrato inteligente que executa operações básicas de calculadora! Na próxima lição, veremos conceitos mais avançados, como a criação de contratos FIFO. Lembre-se de continuar explorando e boa codificação!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。