レッスン2

Armazenando Valores em um Contrato

Olá e bem-vindo de volta! Em nossa primeira lição, apresentamos SmartPy e Tezos criando um contrato inteligente muito básico. Nesta lição, vamos nos aprofundar em um dos componentes mais essenciais de qualquer contrato inteligente da Tezos: armazenamento.

O que é armazenamento?

Em um contrato inteligente da Tezos, o armazenamento é como a memória do contrato. Este é o local onde são guardados todos os dados relevantes para o contrato. Essencialmente, ele atua como o estado do nosso contrato, armazenando valores que persistem em diferentes transações e permitindo que o contrato inteligente “lembre” informações. É esta capacidade que nos permite construir aplicações descentralizadas complexas e envolventes na blockchain Tezos.

Compreendendo o armazenamento em profundidade

Antes de mergulharmos no código desta lição, vamos detalhar um pouco mais o conceito de armazenamento. O armazenamento de um contrato é o estado que persiste entre as chamadas de função. Se você tem experiência em programação tradicional, pode pensar nisso como o 'estado global' do contrato. É o que permite que os usuários tenham interações contínuas com um contrato ao longo do tempo.

Agora, vamos dar uma olhada em nosso código de contrato para esta lição:

Python 
 importar smartpy como sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, valor): 
 self.data.storedValue = valor 

 @sp.entrypoint 
 def substituir(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def divide(self , params): 
 assert params.divisor > 5 
 self.data.storedValue /= params.divisor 


 se "modelos" não estiverem em __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 cenário = sp.test_scenario(main)
        cenário.h1("Armazenar Valor") 
 cenário += c1 
 c1.replace(valor=15) 
 cenário.p("Alguns computação").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            válido=Falso, exceção="Condição errada: params.divisor > 5" 
 ) 
 cenário.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 cenário.verify(c1.data.storedValue == 8)

Execute e decomponha o código

Em nosso exemplo de contrato de armazenamento, temos vários pontos de entrada – replace, double e divide. Depois de implantar este contrato, os usuários poderão ligar para esses pontos de entrada para interagir com o contrato.

Para os pontos de entrada replace e divide , os usuários devem fornecer parâmetros na transação. Para replace, é necessário um value de parâmetro e para divide, é necessário um divisor de parâmetro.

Ao executar este contrato no SmartPy IDE, no lado direito, você verá uma representação visual das operações e armazenamento do contrato. Na verdade, você pode simular as interações do usuário aqui. Aqui está um guia passo a passo:

  1. Implante seu contrato clicando no botão Deploy .

  2. Após a implantação, você verá o contrato representado em Contracts. Clique nisso.

  3. Agora você verá os pontos de entrada do contrato listados.

  4. Para chamar replace, insira um valor para params.value no campo e clique no botão replace .

  5. Para ligar double, basta clicar no botão double .

  6. Para chamar divide, insira um valor para params.divisor no campo e clique no botão divide .
    Cada uma dessas interações criará uma nova operação listada no contrato, e você poderá ver o estado atualizado do armazenamento do contrato após cada operação.

Neste contrato, enfatizamos o conceito de armazenamento com a linha self.data.storedValue = value. Aqui, self.data refere-se ao armazenamento do nosso contrato. É aqui que mantemos o estado do nosso contrato: um único parâmetro chamado storedValue.

Também temos vários pontos de entrada neste contrato. Os pontos de entrada são essencialmente funções públicas que permitem que partes externas interajam com o contrato. Aqui, nossos pontos de entrada permitem a modificação de storedValue de várias maneiras. Podemos substituí-lo por um novo valor, dobrá-lo ou dividi-lo por um determinado divisor.

A seguir, vamos considerar o cenário de teste que configuramos. Criamos uma instância do nosso contrato com o valor inicial 12 para storedValue. Em seguida, chamamos nossos pontos de entrada para modificar o valor de storedValue de várias maneiras e validar os resultados.

Por que o armazenamento é importante?

A capacidade de armazenar e atualizar valores no armazenamento de um contrato é fundamental para a construção de contratos inteligentes Tezos. Permite a persistência de dados em diferentes interações com o contrato. Seja mantendo os saldos em um contrato de token, armazenando informações do usuário em um aplicativo descentralizado ou mantendo o estado de um jogo no blockchain, o armazenamento é um recurso central que facilita essas funcionalidades.

O armazenamento em um contrato inteligente pode conter valores simples, como números inteiros, strings e booleanos, ou estruturas de dados mais complexas, como listas, mapas e objetos personalizados. Isso nos permite construir lógicas complexas e transições de estado em nossos contratos.

Na próxima lição, continuaremos a desenvolver esses conceitos básicos, introduzindo cálculos mais complexos em contratos inteligentes e começaremos a trabalhar com tipos de dados mais avançados no armazenamento do nosso contrato. Então fique atento e lembre-se: a prática leva à perfeição. Não hesite em experimentar o código, fazer modificações e observar os resultados!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
カタログ
レッスン2

Armazenando Valores em um Contrato

Olá e bem-vindo de volta! Em nossa primeira lição, apresentamos SmartPy e Tezos criando um contrato inteligente muito básico. Nesta lição, vamos nos aprofundar em um dos componentes mais essenciais de qualquer contrato inteligente da Tezos: armazenamento.

O que é armazenamento?

Em um contrato inteligente da Tezos, o armazenamento é como a memória do contrato. Este é o local onde são guardados todos os dados relevantes para o contrato. Essencialmente, ele atua como o estado do nosso contrato, armazenando valores que persistem em diferentes transações e permitindo que o contrato inteligente “lembre” informações. É esta capacidade que nos permite construir aplicações descentralizadas complexas e envolventes na blockchain Tezos.

Compreendendo o armazenamento em profundidade

Antes de mergulharmos no código desta lição, vamos detalhar um pouco mais o conceito de armazenamento. O armazenamento de um contrato é o estado que persiste entre as chamadas de função. Se você tem experiência em programação tradicional, pode pensar nisso como o 'estado global' do contrato. É o que permite que os usuários tenham interações contínuas com um contrato ao longo do tempo.

Agora, vamos dar uma olhada em nosso código de contrato para esta lição:

Python 
 importar smartpy como sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, valor): 
 self.data.storedValue = valor 

 @sp.entrypoint 
 def substituir(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def divide(self , params): 
 assert params.divisor > 5 
 self.data.storedValue /= params.divisor 


 se "modelos" não estiverem em __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 cenário = sp.test_scenario(main)
        cenário.h1("Armazenar Valor") 
 cenário += c1 
 c1.replace(valor=15) 
 cenário.p("Alguns computação").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            válido=Falso, exceção="Condição errada: params.divisor > 5" 
 ) 
 cenário.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 cenário.verify(c1.data.storedValue == 8)

Execute e decomponha o código

Em nosso exemplo de contrato de armazenamento, temos vários pontos de entrada – replace, double e divide. Depois de implantar este contrato, os usuários poderão ligar para esses pontos de entrada para interagir com o contrato.

Para os pontos de entrada replace e divide , os usuários devem fornecer parâmetros na transação. Para replace, é necessário um value de parâmetro e para divide, é necessário um divisor de parâmetro.

Ao executar este contrato no SmartPy IDE, no lado direito, você verá uma representação visual das operações e armazenamento do contrato. Na verdade, você pode simular as interações do usuário aqui. Aqui está um guia passo a passo:

  1. Implante seu contrato clicando no botão Deploy .

  2. Após a implantação, você verá o contrato representado em Contracts. Clique nisso.

  3. Agora você verá os pontos de entrada do contrato listados.

  4. Para chamar replace, insira um valor para params.value no campo e clique no botão replace .

  5. Para ligar double, basta clicar no botão double .

  6. Para chamar divide, insira um valor para params.divisor no campo e clique no botão divide .
    Cada uma dessas interações criará uma nova operação listada no contrato, e você poderá ver o estado atualizado do armazenamento do contrato após cada operação.

Neste contrato, enfatizamos o conceito de armazenamento com a linha self.data.storedValue = value. Aqui, self.data refere-se ao armazenamento do nosso contrato. É aqui que mantemos o estado do nosso contrato: um único parâmetro chamado storedValue.

Também temos vários pontos de entrada neste contrato. Os pontos de entrada são essencialmente funções públicas que permitem que partes externas interajam com o contrato. Aqui, nossos pontos de entrada permitem a modificação de storedValue de várias maneiras. Podemos substituí-lo por um novo valor, dobrá-lo ou dividi-lo por um determinado divisor.

A seguir, vamos considerar o cenário de teste que configuramos. Criamos uma instância do nosso contrato com o valor inicial 12 para storedValue. Em seguida, chamamos nossos pontos de entrada para modificar o valor de storedValue de várias maneiras e validar os resultados.

Por que o armazenamento é importante?

A capacidade de armazenar e atualizar valores no armazenamento de um contrato é fundamental para a construção de contratos inteligentes Tezos. Permite a persistência de dados em diferentes interações com o contrato. Seja mantendo os saldos em um contrato de token, armazenando informações do usuário em um aplicativo descentralizado ou mantendo o estado de um jogo no blockchain, o armazenamento é um recurso central que facilita essas funcionalidades.

O armazenamento em um contrato inteligente pode conter valores simples, como números inteiros, strings e booleanos, ou estruturas de dados mais complexas, como listas, mapas e objetos personalizados. Isso nos permite construir lógicas complexas e transições de estado em nossos contratos.

Na próxima lição, continuaremos a desenvolver esses conceitos básicos, introduzindo cálculos mais complexos em contratos inteligentes e começaremos a trabalhar com tipos de dados mais avançados no armazenamento do nosso contrato. Então fique atento e lembre-se: a prática leva à perfeição. Não hesite em experimentar o código, fazer modificações e observar os resultados!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。