🇧🇷
Ethereum Developer Pack - PT
  • Ethereum Developer Pack - PT
  • Módulo 1
    • Introdução a Smart Contracts
      • Fundamentos de Blockchain
        • Histórico
        • Bitcoin
        • O que é Blockchain
        • Conceitos-chave em Blockchain
        • Como funciona a Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • A nova Internet
        • Web 3
        • Elementos Fundamentais
        • Impacto do Ethereum em Diversos Setores
      • Wallets
        • Componentes de uma wallet
        • Tipos de Wallet
        • Códigos Mnemônicos
      • Ethereum 101
        • Smart Contracts
        • Contas
          • Tipos de contas
          • Conteúdo das contas
        • Transações
          • Componentes
          • Ciclo de vida
        • Gás
        • Solidity
        • EVM
          • A máquina de estados
          • Opcodes
          • Como funciona a EVM
          • Clientes de execução
          • DApps
      • Blockchain Explorer
        • Funções de um blockchain explorer
        • Beneficios de utilizar um blockchain explorer
      • Remix
        • Características do Remix
        • Workspaces ou espaços de trabalho
        • Carregar e compilar um contrato
        • Implantar na máquina virtual do Remix (Remix VM)
        • Interagindo com funções
        • Deployar em uma rede pública
      • Crie seu primeiro Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Dados
      • Funções
      • Variáveis
        • Exercício 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Exercício 3
      • Convenções de nomenclatura
      • Tipos de armazenamento para variáveis
      • Estruturas de Controle
        • Exercício 4
      • Modificadores
      • Eventos
        • Exercício 5
      • Tipos de Referencia
        • Arrays
          • Exercício 6
        • Mappings
          • Exercício 7
        • Structs
          • Exercício 8
      • Address Payable
      • Como os contratos e funções recebem Ether.
      • Transferências de Ether
      • Conceitos Avançados
        • Codificação de ABI
        • Hashing
        • This
        • Herança
        • Abstract
        • Interface
        • Chamada entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • ERCs, Bibliotecas e Padrões de Desenvolvimento
      • Boas Práticas de Desenvolvimento
      • Padrões de Desenvolvimento
      • EIP & ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crie um Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Kit de ferramentas para desenvolvimento na Ethereum
      • Requisitos para o módulo 4
        • Terminal
        • Git e Github
        • Node.js e npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Exercício
        • Hardhat
          • Implantação de um contrato no Hardhat
          • Implantação de um contrato em uma rede pública
        • Scaffold-ETH
          • Características do Scaffold-ETHCaracterísticas
          • Como instalar o Scaffold-ETH
  • Módulo 5
    • Segurança, Testes e Auditorias
      • Testes
        • Importância de realizar testes
        • Métodos para testar contratos inteligentes
          • Testes automatizados
          • Testes manuais
        • Conceitos importantes em testes
        • Ferramentas para testes
        • Testes com Hardhat
        • Recursos adicionais
      • Segurança
        • Uma mentalidade diferente de design
        • Principais vulnerabilidades em contratos inteligentes
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Quebra de Invariantes)
          • Mishandling of ETH (Má gestão de ETH)
          • Denial of Service (DoS - Negação de Serviço)
          • Integer overflow and underflow (Overflow e Underflow de inteiros)
          • Phishing y Typosquatting
        • Recursos adicionais
      • Auditoria de smart contracts
        • Processo de Auditoria
        • Ferramentas
        • Como se preparar para uma auditoria
        • O teste Rekt
        • Desafios
        • Recursos adicionais
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  1. Módulo 1
  2. Introdução a Smart Contracts

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

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! 🎉

PreviousDeployar em uma rede públicaNextFundamentos de Solidity

Last updated 5 months ago

Vamos ao para verificá-la.

explorador de blocos da Sepolia