Crie seu primeiro Smart Contract

Nesta parte final deste primeiro módulo, vamos criar um contrato inteligente e implantá-lo em uma rede de teste (testnet) da Ethereum, como Sepolia.

O contrato que implantaremos é o Register01.sol:

// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.26;

contract Register01 {
    string private storedInfo;

    function setInfo(string memory myInfo) external {
        storedInfo = myInfo;
    }

    function getInfo() external view returns (string memory) {
        return storedInfo;
    }
}

Vamos analisar o que faz o Register01.sol:

Este contrato simples permite armazenar e recuperar informações de texto. A função setInfo é utilizada para modificar a informação armazenada, enquanto a função getInfo é utilizada para consultar a informação atual sem realizar mudanças no estado do contrato.

  • Versão do Compilador Solidity Utilizada: 0.8.26. Em Solidity, utiliza-se a keyword pragma para declarar a versão de compilador que deve ser utilizada para executar o contrato.

  • Licença: GPL-3.0

  • Variáveis de Estado:

    • storedInfo: Variável privada que armazena informações do tipo string (texto).

  • Funções:

    • setInfo (Função de Transação Externa): Atualiza o valor de storedInfo com a informação fornecida como argumento.

      • Parâmetros: myInfo, o texto a ser carregado em storedInfo.

    • getInfo (Função de Consulta Externa): Retorna o valor atual de storedInfo sem modificar o estado do contrato.

      • Parâmetros: Nenhum.

Levemos o código do contrato ao Remix.

O check verde ao lado do ícone do compilador indica que ele foi compilado corretamente. Podemos proceder à implantação.

Devemos nos certificar de:

  • Ter nossa wallet conectada à Sepolia,

  • Ter selecionado em Environment a opção Injected Provider-Metamask,

  • Ter ETH suficiente em Sepolia, e

  • Verificar que o contrato a ser implantado é o correto.

Agora sim, prossigamos com a implantação.

Aprovemos a transação em nossa wallet.

O contrato foi implantado e uma conta de contrato (contract account) foi atribuída a ele em Sepolia.

Clicando no ícone de copiar no gráfico anterior, podemos obter essa conta.

No exemplo, a conta é: 0x94A6985da19A3eA8A1182FA24791069365CAB79f

Vamos ao explorador de blocos da Sepolia para verificá-la.

Insira a conta no campo de busca do explorador de Sepolia.

Podemos confirmar que uma conta de contrato foi criada a partir da nossa EOA em Sepolia.

Se acessarmos a aba Contract, podemos visualizar o bytecode que foi implantado nessa conta de contrato.

Como podemos verificar que corresponde ao código de Register01.sol?

Devemos Verificar e Publicar. Para isso, clicamos na frase em azul "Verify and Publish".

Será exibida a tela seguinte, onde devemos preencher a endereço do contrato, o tipo de compilador utilizado, a versão do compilador e o tipo de licença Open Source. Em seguida, clicamos em Continuar.

Na próxima tela, devemos copiar o código Solidity do Register01.sol.

Completamos o captcha e clicamos em Verify and Publish.

Se a correspondência estiver correta, será exibida uma tela como a seguinte, onde também poderemos visualizar a ABI.

Se retornarmos à conta do contrato no Etherscan, veremos que agora há informações adicionais.

Ao lado do botão azul do contrato, agora há um check verde, indicando que o contrato foi verificado. O código do contrato agora também aparece junto ao bytecode e à ABI.

Além disso, surgem botões para interagir com o contrato: Read Contract (para funções de leitura) e Write Contract (para escrita/modificação).

Podemos, então, interagir com nosso contrato inteligente diretamente do explorador de blocos.

Por exemplo, se quisermos gravar na variável storedInfo a frase “Hello World”, devemos clicar no botão Write Contract.

Vemos que setInfo é a única função de escrita. Para utilizá-la, primeiro precisamos conectar nossa wallet ao Etherscan. Para isso, clique em Connect to Web3.

Uma vez conectada a wallet, aparece o campo para inserir o texto a ser gravado. Inserimos o texto e clicamos em Write.

Por se tratar de uma transação de escrita, é necessário aprovar a transação e pagar o gás correspondente.

Para verificar se a transação foi bem-sucedida, podemos acessar Read Contract e visualizar o conteúdo da variável storedInfo utilizando a função de leitura getInfo.

getInfo mostra que o conteúdo é "Hello World".

Recapitulando, você seguiu os seguintes passos:

  1. Criou um contrato.

  2. Compilou o contrato.

  3. Implantou o contrato em uma blockchain pública, neste caso, Sepolia.

  4. Validou e publicou o contrato usando um explorador de blocos, permitindo que outras pessoas interessadas possam entender o que ele faz.

  5. Interagiu com o contrato utilizando o explorador de blocos.

Parabéns! Você concluiu a introdução aos Smart Contracts! 🎉

Last updated