SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
04.12.2024

Aula 228: Testnets do Ethereum (Goerli, Sepolia)

Os testnets do Ethereum são essenciais para desenvolvedores testarem seus contratos inteligentes, aplicações descentralizadas (dApps) e outros projetos baseados em Ethereum em um ambiente que simula a rede principal do Ethereum, mas sem os custos associados. Nesta aula, discutiremos duas testnets populares do Ethereum: Goerli e Sepolia. Também forneceremos exemplos de como interagir com essas redes usando Solidity e JavaScript.

O Que São Testnets?

Testnets são blockchains alternativas do Ethereum que replicam a funcionalidade da rede principal do Ethereum. Elas permitem que os desenvolvedores implantem e testem suas aplicações sem a necessidade de ETH real. As testnets mais utilizadas são Ropsten, Rinkeby, Kovan, Goerli e Sepolia. Cada uma possui características únicas, mas Goerli e Sepolia estão entre as mais favorecidas devido à sua estabilidade e suporte.

Características Principais

  • Goerli: Uma testnet cross-client projetada para suportar diversos clientes Ethereum. Goerli utiliza o mecanismo de consenso Proof of Authority (PoA) e possui um ambiente estável para desenvolvedores.
  • Sepolia: Uma testnet mais nova baseada em proof-of-stake que se assemelha de perto à rede principal do Ethereum após o Merge. É útil para testar aplicações em um ecossistema proof-of-stake sem gastar ETH real.

Configurando o Ambiente

Para interagir com as testnets Goerli e Sepolia, você precisará de:

  1. Node.js: Certifique-se de ter o Node.js instalado.
  2. npm ou yarn: Um gerenciador de pacotes para instalar as bibliotecas necessárias.
  3. Metamask: Uma extensão de carteira para interagir com as testnets.
  4. Infura ou Alchemy: Esses serviços fornecem acesso às redes Ethereum via API.

Instalação

Comece criando um novo diretório de projeto e inicializando o npm:

mkdir ethereum-testnets
cd ethereum-testnets
npm init -y
npm install ethers dotenv

Agora crie um arquivo .env para armazenar seu ID de projeto do Infura ou Alchemy:

INFURA_PROJECT_ID=seu_id_de_projeto_infura

Conectando-se às Testnets

Com a configuração concluída, você pode agora conectar-se às testnets Goerli e Sepolia usando Ethers.js.

Código de Exemplo

Crie um novo arquivo chamado deploy.js:

require('dotenv').config();
const { ethers } = require("ethers");

// Define o provedor para Goerli
const goerliProvider = new ethers.providers.InfuraProvider("goerli", process.env.INFURA_PROJECT_ID);
// Define o provedor para Sepolia
const sepoliaProvider = new ethers.providers.InfuraProvider("sepolia", process.env.INFURA_PROJECT_ID);

async function main() {
    // Obtém as informações da rede
    const goerliNetwork = await goerliProvider.getNetwork();
    const sepoliaNetwork = await sepoliaProvider.getNetwork();

    console.log(`Conectado à rede Goerli: ${goerliNetwork.name}`);
    console.log(`Conectado à rede Sepolia: ${sepoliaNetwork.name}`);
}

main().catch(console.error);

Executando o Código

Certifique-se de executar seu arquivo JavaScript para testar sua conexão:

node deploy.js

Implantando um Contrato Inteligente

Em seguida, crie um contrato inteligente simples em Solidity. Crie um arquivo chamado SimpleStorage.sol:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private storedData;

    function set(uint256 x) public {
        storedData = x;
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

Compilando e Implantando o Contrato

Para compilar e implantar o contrato, utilize um pacote como solc ou hardhat. Para este exemplo, assumiremos que você está usando o Hardhat.

Instale o Hardhat:

npm install --save-dev hardhat

Inicialize o Hardhat:

npx hardhat

Siga as instruções para criar um novo projeto. Agora, você pode configurar seu arquivo hardhat.config.js para incluir as redes:

require('@nomiclabs/hardhat-waffle');

module.exports = {
  solidity: "0.8.0",
  networks: {
    goerli: {
      url: `https://goerli.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
      accounts: [`0x${SUA_CHAVE_PRIVADA}`] // Mantenha sua chave privada segura!
    },
    sepolia: {
      url: `https://sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
      accounts: [`0x${SUA_CHAVE_PRIVADA}`]
    }
  }
};

Script de Implantação

Crie um script de implantação em scripts/deploy.js:

async function main() {
    const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
    const simpleStorage = await SimpleStorage.deploy();

    await simpleStorage.deployed();

    console.log("SimpleStorage implantado em:", simpleStorage.address);
}

main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error);
        process.exit(1);
    });

Implantando em Goerli e Sepolia

Para implantar em qualquer uma das redes, use os seguintes comandos:

npx hardhat run scripts/deploy.js --network goerli

ou

npx hardhat run scripts/deploy.js --network sepolia

Considerações Finais

Entender como trabalhar com testnets do Ethereum, como Goerli e Sepolia, é crucial para desenvolver aplicações robustas. Você pode experimentar implantar contratos e testar funcionalidades sem o risco e os custos implicados na rede principal. À medida que o Ethereum continua a evoluir, especialmente com tendências como o proof-of-stake, testar suas aplicações garantirá que elas estejam preparadas para o uso no mundo real.

Em conclusão, aproveite as testnets para aprimorar seus contratos inteligentes e dApps antes de migrar para a rede principal. Boa codificação!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!