SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
22.11.2024

Lição: 102: Conectando-se a Nós do Ethereum

Nesta aula, vamos explorar como nos conectar a nós do Ethereum usando várias bibliotecas e ferramentas disponíveis no ecossistema JavaScript. Vamos abordar como configurar conexões com nós do Ethereum, tanto locais quanto remotos, e vamos demonstrar como interagir com a blockchain do Ethereum.

Pré-requisitos

Antes de começarmos, certifique-se de que você tenha o seguinte instalado:

  • Node.js (versão 12 ou superior)
  • npm (Node Package Manager)

Usaremos duas bibliotecas populares para interagir com nós do Ethereum: web3.js e ethers.js. Vamos começar instalando essas bibliotecas.

Instalação

Para começar, crie um novo diretório para o seu projeto e navegue até ele:

mkdir conexao-nodo-ethereum
cd conexao-nodo-ethereum

Agora, inicialize um novo projeto Node.js:

npm init -y

Em seguida, instale web3.js e ethers.js:

npm install web3 ethers

Conectando com web3.js

Configurando uma Conexão

Primeiro, vamos ver como nos conectar a um nó do Ethereum usando web3.js. Você pode se conectar a um nó local ou usar um provedor como Infura ou Alchemy para conexões remotas. Aqui está como se conectar a um nó local:

const Web3 = require('web3');

// Conectar a um nó local (Ganache)
const web3 = new Web3('http://127.0.0.1:7545'); // Certifique-se de que o Ganache esteja rodando

console.log('Web3 está conectado:', web3.isConnected());

Para conexões remotas, basta substituir a URL pelo seu endpoint de provedor:

// Conectar a um nó remoto (Infura)
const infuraUrl = 'https://mainnet.infura.io/v3/SUA_CHAVE_PROJETO_INFURA';
const web3 = new Web3(infuraUrl);

// Verificar status da conexão
async function checkConnection() {
    const isConnected = await web3.eth.net.isListening();
    console.log('Web3 está conectado:', isConnected);
}

checkConnection();

Interagindo com a Blockchain

Uma vez conectado, você pode começar a interagir com a blockchain. Aqui está como pegar o número do bloco atual:

async function getBlockNumber() {
    const blockNumber = await web3.eth.getBlockNumber();
    console.log('Número do bloco atual:', blockNumber);
}

getBlockNumber();

Conectando com ethers.js

A configuração para ethers.js é bastante semelhante. Vamos ver como nos conectar a um nó do Ethereum:

Configurando uma Conexão

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

// Conectar a um nó local (Ganache)
const provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:7545');

async function checkConnection() {
    const blockNumber = await provider.getBlockNumber();
    console.log('Conectado ao nó local. Número do bloco atual:', blockNumber);
}

checkConnection();

Para conectar a um nó remoto usando Infura:

// Conectar a um nó remoto (Infura)
const infuraProvider = new ethers.providers.InfuraProvider('mainnet', 'SUA_CHAVE_PROJETO_INFURA');

async function fetchBlockNumber() {
    const blockNumber = await infuraProvider.getBlockNumber();
    console.log('Número do bloco atual na mainnet:', blockNumber);
}

fetchBlockNumber();

Enviando Transações

Ambas as bibliotecas permitem que você envie transações para a rede Ethereum. No entanto, você precisará de uma carteira com algum Ether para fazer isso. Aqui está um exemplo usando ethers.js para enviar uma transação:

const wallet = new ethers.Wallet('SUA_CHAVE_PRIVADA', provider);

// Enviando 0.01 Ether
async function sendEther() {
    const tx = {
        to: 'ENDEREÇO_DO_RECEPTOR',
        value: ethers.utils.parseEther('0.01')
    };

    const transactionResponse = await wallet.sendTransaction(tx);
    console.log('Transação enviada! Hash:', transactionResponse.hash);
}

sendEther();

Conclusão

Nesta aula, abordamos como nos conectar a nós do Ethereum usando duas bibliotecas poderosas: web3.js e ethers.js. Aprendemos como configurar conexões tanto com nós locais quanto remotos, além de como interagir com a blockchain do Ethereum verificando o número do bloco atual e enviando transações.

Com esse conhecimento fundamental, você pode avançar para construir aplicações descentralizadas (dApps) mais complexas na blockchain do Ethereum. Boa codificação!

Video

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

Thank you for voting!