SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
04.12.2024

Aula 227: Conectando ao Mainnet e Testnets

No mundo do desenvolvimento Ethereum, conectar-se à blockchain Ethereum é uma habilidade essencial. Esta aula abordará como se conectar ao Mainnet e a várias Testnets, como Ropsten, Rinkeby e Goerli. Usaremos a popular biblioteca JavaScript para Ethereum, ethers.js, em nossos exemplos.

Pré-requisitos

  • Entendimento básico de Solidity e Ethereum
  • Node.js e npm instalados em sua máquina
  • Uma carteira (como MetaMask) para gerenciamento de transações

Configurando o Seu Ambiente

Primeiro, certifique-se de que o Node.js está instalado. Você pode verificar sua instalação executando:

node -v
npm -v

Em seguida, crie um novo diretório para o seu projeto e instale o ethers:

mkdir demo-conexao-eth
cd demo-conexao-eth
npm init -y
npm install ethers

Conectando à Rede Ethereum

Para se conectar à rede Ethereum, você precisará criar uma instância de ethers.providers.JsonRpcProvider e especificar a rede (Mainnet ou uma Testnet).

Conectando ao Mainnet

Veja como se conectar ao Mainnet:

const { ethers } = require('ethers');

// Conectar ao Mainnet
const mainnetProvider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');

async function getBlockNumber() {
    const blockNumber = await mainnetProvider.getBlockNumber();
    console.log("Número do Bloco Mainnet:", blockNumber);
}

getBlockNumber();

Conectando às Testnets

Abaixo estão exemplos de conexão com Testnets populares.

Conectando ao Ropsten

// Conectar à Testnet Ropsten
const ropstenProvider = new ethers.providers.JsonRpcProvider('https://ropsten.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');

async function getRopstenBlockNumber() {
    const blockNumber = await ropstenProvider.getBlockNumber();
    console.log("Número do Bloco Ropsten:", blockNumber);
}

getRopstenBlockNumber();

Conectando ao Rinkeby

// Conectar à Testnet Rinkeby
const rinkebyProvider = new ethers.providers.JsonRpcProvider('https://rinkeby.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');

async function getRinkebyBlockNumber() {
    const blockNumber = await rinkebyProvider.getBlockNumber();
    console.log("Número do Bloco Rinkeby:", blockNumber);
}

getRinkebyBlockNumber();

Conectando ao Goerli

// Conectar à Testnet Goerli
const goerliProvider = new ethers.providers.JsonRpcProvider('https://goerli.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');

async function getGoerliBlockNumber() {
    const blockNumber = await goerliProvider.getBlockNumber();
    console.log("Número do Bloco Goerli:", blockNumber);
}

getGoerliBlockNumber();

Enviando Transações

Uma vez conectado, você também pode enviar transações. Aqui está um exemplo de como enviar Ether de uma conta para outra na Testnet Ropsten.

Enviando uma Transação no Ropsten

async function sendTransaction() {
    const wallet = new ethers.Wallet('SUA_CHAVE_PRIVADA', ropstenProvider);
    const tx = {
        to: 'ENDERECO_DO_DESTINATARIO',
        value: ethers.utils.parseEther('0.01'), // Enviando 0.01 ETH
    };

    const transactionResponse = await wallet.sendTransaction(tx);
    console.log("Hash da Transação:", transactionResponse.hash);

    const receipt = await transactionResponse.wait();
    console.log("Transação foi minerada no bloco:", receipt.blockNumber);
}

sendTransaction();

Conclusão

Nesta aula, exploramos como nos conectar ao Mainnet da Ethereum e a várias Testnets usando ethers.js. Também discutimos como recuperar o número do bloco atual e como enviar Ether. Compreender essas conexões é crucial para desenvolver e testar seus contratos inteligentes em um ambiente real de blockchain.

Lembre-se de substituir 'SUA_ID_DE_PROJETO_INFURA', 'SUA_CHAVE_PRIVADA' e 'ENDERECO_DO_DESTINATARIO' pelos seus respectivos ID de projeto Infura, chave privada da carteira e endereço do destinatário. Sempre tenha cuidado ao lidar com chaves privadas e dados sensíveis!

Com esses conhecimentos e habilidades fundamentais, você está a caminho de se tornar um desenvolvedor Ethereum proficiente. Boa codificação!

Video

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

Thank you for voting!