Bài học 2

Armazenar Valores num Contrato

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

O que é o Armazenamento?

Num contrato inteligente da Tezos, o armazenamento é como a memória do contrato. Este é o local onde todos os dados relevantes para o contrato são mantidos. Essencialmente, 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 cadeia de blocos Tezos.

Compreender o armazenamento em profundidade

Antes de mergulharmos no nosso código para esta lição, vamos analisar um pouco mais o conceito de armazenamento. O armazenamento de um contrato é o estado que persiste entre as chamadas de função. Se vem de uma formação tradicional em programação, pode pensar nisso como o 'estado global' do contrato. É o que permite aos utilizadores ter interações contínuas com um contrato ao longo do tempo.

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

Python
importar smartpy como sp

@sp .módulo
def principal ():
 classe StoreValue (SP.Contract):
 def __init__(self, valor):
 self.data.storedValue = valor

 @sp .ponto de entrada
 def replace (self, parâmetros):
 self.data.storedValue = params.value

 @sp .ponto de entrada
 def double (self):
 auto.data.StoredValue *= 2

 @sp .ponto de entrada
 def divide (self, parâmetros):
 afirmar params.divisor 5 >
 self.data.storedValue /= params.divisor


se " os modelos " não estiverem em __name__:

 @sp .add_test (nome= StoreValue) " "
 teste def ():
 c1 = Main.StoreValue (12)
 cenário = sp.test_scenario (principal)
        scenario.h1 (Loja " Valor")
 cenário += c1
 c1.replace (valor=15)
 scenario.p (Alguns " computação") .show (C1.data.StoredValue * 12)
 c1.replace (valor=25)
 c1.double ()
 c1.divide (divisor=2) .run (
            Válido = falso, excepção = " incorrecto Condição: params.divisor 5 > "
 )
 scenario.verify (C1.data.StoredValue == 50)
 c1.dividir (divisor=6)
 scenario.verify (C1.data.StoredValue == 8)

Executar e quebrar o código

No nosso exemplo de contrato de armazenamento, temos vários pontos de entrada - substituir, dobrar e dividir. Depois de implementar este contrato, os utilizadores podem ligar para esses pontos de entrada para interagir com o contrato.

Para substituir e dividir os pontos de entrada, os utilizadores devem fornecer parâmetros na transação. Para substituir, é necessário um valor de parâmetro e, para dividir, é necessário um divisor de parâmetros.

Quando executa este contrato no IDE SmartPy, no lado direito, verá uma representação visual das operações e armazenamento do contrato. Pode realmente simular as interações do utilizador aqui. Aqui está um guia passo a passo:

  1. Implemente o seu contrato clicando no botão Implantar.

  2. Após a implantação, verá o contrato representado nos Contratos. Clique nele.

  3. Agora verá os pontos de entrada para o contrato listados.

  4. Para chamar replace, introduza um valor para params.value no campo e, em seguida, clique no botão substituir.

  5. Para ligar duas vezes, basta clicar no botão duplo.

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

Neste contrato, estamos a enfatizar o conceito de armazenamento com a linha self.data.storedValue = valor. 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, os nossos pontos de entrada permitem a modificação do StoredValue de várias maneiras. Podemos substituí-lo por um novo valor, duplicá-lo ou dividi-lo por um determinado divisor.

Em seguida, 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 os nossos pontos de entrada para modificar o valor do StoredValue de várias maneiras e validar os resultados.

Porque é que o armazenamento é importante?

A capacidade de armazenar e atualizar valores dentro do armazenamento de um contrato é fundamental para a construção de contratos inteligentes da Tezos. Permite a persistência de dados em diferentes interações com o contrato. Quer se trate de manter os saldos num contrato de token, armazenar informações do utilizador numa aplicação descentralizada ou manter o estado de um jogo na cadeia de blocos, o armazenamento é uma característica central que facilita estas funcionalidades.

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

Na próxima lição, continuaremos a desenvolver esses conceitos básicos, introduzindo cálculos mais complexos dentro dos 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!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 2

Armazenar Valores num Contrato

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

O que é o Armazenamento?

Num contrato inteligente da Tezos, o armazenamento é como a memória do contrato. Este é o local onde todos os dados relevantes para o contrato são mantidos. Essencialmente, 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 cadeia de blocos Tezos.

Compreender o armazenamento em profundidade

Antes de mergulharmos no nosso código para esta lição, vamos analisar um pouco mais o conceito de armazenamento. O armazenamento de um contrato é o estado que persiste entre as chamadas de função. Se vem de uma formação tradicional em programação, pode pensar nisso como o 'estado global' do contrato. É o que permite aos utilizadores ter interações contínuas com um contrato ao longo do tempo.

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

Python
importar smartpy como sp

@sp .módulo
def principal ():
 classe StoreValue (SP.Contract):
 def __init__(self, valor):
 self.data.storedValue = valor

 @sp .ponto de entrada
 def replace (self, parâmetros):
 self.data.storedValue = params.value

 @sp .ponto de entrada
 def double (self):
 auto.data.StoredValue *= 2

 @sp .ponto de entrada
 def divide (self, parâmetros):
 afirmar params.divisor 5 >
 self.data.storedValue /= params.divisor


se " os modelos " não estiverem em __name__:

 @sp .add_test (nome= StoreValue) " "
 teste def ():
 c1 = Main.StoreValue (12)
 cenário = sp.test_scenario (principal)
        scenario.h1 (Loja " Valor")
 cenário += c1
 c1.replace (valor=15)
 scenario.p (Alguns " computação") .show (C1.data.StoredValue * 12)
 c1.replace (valor=25)
 c1.double ()
 c1.divide (divisor=2) .run (
            Válido = falso, excepção = " incorrecto Condição: params.divisor 5 > "
 )
 scenario.verify (C1.data.StoredValue == 50)
 c1.dividir (divisor=6)
 scenario.verify (C1.data.StoredValue == 8)

Executar e quebrar o código

No nosso exemplo de contrato de armazenamento, temos vários pontos de entrada - substituir, dobrar e dividir. Depois de implementar este contrato, os utilizadores podem ligar para esses pontos de entrada para interagir com o contrato.

Para substituir e dividir os pontos de entrada, os utilizadores devem fornecer parâmetros na transação. Para substituir, é necessário um valor de parâmetro e, para dividir, é necessário um divisor de parâmetros.

Quando executa este contrato no IDE SmartPy, no lado direito, verá uma representação visual das operações e armazenamento do contrato. Pode realmente simular as interações do utilizador aqui. Aqui está um guia passo a passo:

  1. Implemente o seu contrato clicando no botão Implantar.

  2. Após a implantação, verá o contrato representado nos Contratos. Clique nele.

  3. Agora verá os pontos de entrada para o contrato listados.

  4. Para chamar replace, introduza um valor para params.value no campo e, em seguida, clique no botão substituir.

  5. Para ligar duas vezes, basta clicar no botão duplo.

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

Neste contrato, estamos a enfatizar o conceito de armazenamento com a linha self.data.storedValue = valor. 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, os nossos pontos de entrada permitem a modificação do StoredValue de várias maneiras. Podemos substituí-lo por um novo valor, duplicá-lo ou dividi-lo por um determinado divisor.

Em seguida, 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 os nossos pontos de entrada para modificar o valor do StoredValue de várias maneiras e validar os resultados.

Porque é que o armazenamento é importante?

A capacidade de armazenar e atualizar valores dentro do armazenamento de um contrato é fundamental para a construção de contratos inteligentes da Tezos. Permite a persistência de dados em diferentes interações com o contrato. Quer se trate de manter os saldos num contrato de token, armazenar informações do utilizador numa aplicação descentralizada ou manter o estado de um jogo na cadeia de blocos, o armazenamento é uma característica central que facilita estas funcionalidades.

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

Na próxima lição, continuaremos a desenvolver esses conceitos básicos, introduzindo cálculos mais complexos dentro dos 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!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.