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!