Implementando seu primeiro contrato inteligente
Acho que você está tão animado quanto nós para implantar e interagir com o seu primeiro contrato inteligente na blockchain Ethereum.
Não se preocupe, pois como este é o nosso primeiro contrato inteligente, vamos publicá-lo em uma rede de testes local, assim não custa nada para você implementar e brincar com ele o quanto quiser.
Escrevendo nosso contrato
O primeiro passo é visitar a Remix(opens in a new tab) e criar um novo arquivo. Na parte superior esquerda da interface Remix adicione um novo arquivo e digite o nome do arquivo desejado.
No novo arquivo, vamos colar o seguinte código.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Public variable of type unsigned int to keep the number of counts7 uint256 public count = 0;89 // Function that increments our counter10 function increment() public {11 count += 1;12 }1314 // Not necessary getter to get the count value15 function getCount() public view returns (uint256) {16 return count;17 }1819}Exibir tudoCopiar
Se você está acostumado com programação, você pode facilmente adivinhar o que este programa faz. Aqui está uma explicação linha a linha:
- Linha 4: Definimos um contrato com o nome
Counter
. - Linha 7: Nosso contrato armazena um inteiro não assinado chamado
count
começando com 0. - Linha 10: A primeira função vai modificar o estado do contrato e
increment()
nossa variávelcount
. - Linha 15: A segunda função é apenas um getter para ser capaz de ler o valor da variável
count
fora do contrato inteligente. Observe que, como definimos nossa variávelcount
como pública, isso não é necessário, mas é mostrado como um exemplo.
Tudo isso para o nosso primeiro contrato inteligente simples. Como você deve saber, ele se parece com uma classe de linguagens OOP (Object-Oriented Programming, programação orientada a objetos) como Java ou C++. Agora é hora de brincar com o nosso contrato.
Implantando nosso contrato
Como escrevemos nosso primeiro contrato inteligente, nós agora faremos deploy para a blockchain para poder brincar com ele.
Implantar o contrato inteligente no blockchain é, na verdade, apenas enviar uma transação que contém o código do contrato inteligente compilado sem especificar os destinatários.
Primeiro, vamos compilar o contrato clicando no ícone de compilação no lado esquerdo:
Em seguida, clique no botão de compilação:
Você pode escolher selecionar a opção "Compilação automática", para que o contrato sempre seja compilado quando você salvar o conteúdo no editor de texto.
Em seguida, navegue para a tela de implantação e execução de transações:
Assim que você estiver na tela de transações "deploy and run" verifique se o nome do seu contrato aparece e clique em Deploy. Como você pode ver no topo da página, o ambiente atual é o "Javascript VM", o que significa que iremos implantar e interagir com nosso contrato inteligente em uma blockchain de teste local para podermos testar mais rápido e sem quaisquer custos.
Quando você clicar no botão "Deploy", você verá seu contrato aparecer abaixo. Clique na seta à esquerda para expandi-la, para que possamos ver o conteúdo de nosso contrato. Esta é nossa variável counter
, nossa função increment()
e a getter getCounter()
.
Se você clicar no botão count
ou getCount
, ele recuperará o conteúdo da variável count
do contrato e o exibirá. Como ainda não chamamos a função increment
, ela deve exibir 0.
Vamos agora chamar a função increment
clicando no botão. Você verá logs das transações que são feitas aparecendo no parte inferior da janela. Você verá que os logs são diferentes quando estiver pressionando o botão para recuperar os dados em vez do botão increment
. Isso porque a leitura de dados na blockchain não necessita de quaisquer transações (escritas) ou taxas. Porque somente modificar o estado do blockchain requer fazer uma transação:
Após pressionar o botão de incremento que gerará uma transação para chamar nossa função increment()
se clicarmos novamente nos botões count ou getCount, iremos ler o estado recém-atualizado de nosso contrato inteligente com a variável de contagem maior que 0.
No próximo tutorial, explicaremos como você pode adicionar eventos aos seus contratos inteligentes. Eventos de registro são uma maneira conveniente para depurar seu contrato inteligente e entender o que está acontecendo durante a chamada de uma função.
Última edição: @lukassim(opens in a new tab), 26 de abril de 2024