Integração com Blockchain usando Node.js e Ethers.js: Guia Completo
Introdução
A tecnologia blockchain está se expandindo rapidamente, e cada vez mais empresas buscam implementar funcionalidades ou até mesmo sistemas completos baseados nessa inovação. Para os desenvolvedores, é essencial aprender a integrar suas aplicações com a blockchain, especialmente aquelas que utilizam Ethereum ou outras redes compatíveis com EVM. Neste artigo, vamos explorar como construir aplicações com Node.js que se conectam à blockchain, permitindo consultas e transações de maneira eficiente.

Integração com Blockchain usando Node.js e Ethers.js: Guia Completo
Preparando o Ambiente
1. Instalação do Node.js
Antes de mais nada, é fundamental ter o Node.js instalado em sua máquina. Se você ainda não possui, recomendo seguir um tutorial em vídeo que ensina a instalação do Node.js e do Visual Studio Code, o editor que utilizaremos para programar.
Além disso, será necessário criar uma carteira de criptomoedas para se conectar à blockchain. A MetaMask é uma carteira amplamente utilizada que funciona bem com redes Ethereum. Você pode assistir a um vídeo que demonstra como criar uma conta na MetaMask de forma fácil e gratuita.
2. Configurando a MetaMask
Por padrão, a MetaMask se conecta à rede Mainnet da Ethereum, que não é ideal para desenvolvimento. Você deve habilitar o uso de redes de teste, como a Sepolia, que é perfeita para nossas práticas. Para obter saldo em ETH na rede de testes, você pode utilizar um Faucet PoW, que oferece moedas gratuitamente. Basta conectar sua MetaMask e minerar um pouco de saldo.
Caso encontre dificuldades com a Sepolia, considere usar a BSC Testnet ou outras redes compatíveis com EVM, como Avalanche e Polygon.
3. Obtenção de um Node RPC
Para interagir com a blockchain, precisaremos de um Node RPC. Uma das melhores opções é a Infura, que fornece acesso gratuito a nós de blockchain. Basta criar uma conta, configurar um nó para a rede Sepolia e anotar a API Key que você receberá.
4. Criando o Projeto
Com todas as ferramentas agora em mãos, vamos iniciar o projeto. Crie uma pasta chamada metamask-ethers-node e, dentro dela, execute o seguinte comando para inicializar seu projeto Node.js:
npm init -y
Em seguida, instale as bibliotecas necessárias:
npm i dotenv ethers
A biblioteca dotenv é crucial para gerenciar suas configurações de ambiente, enquanto a ethers facilita a comunicação com a blockchain.
5. Configuração das Variáveis de Ambiente
Crie um arquivo chamado .env na raiz do seu projeto e adicione as seguintes variáveis:
WALLET=<seu endereço público da MetaMask>
PRIVATE_KEY=<sua chave privada da MetaMask>
NETWORK=<nome da sua rede em minúsculo>
INFURA_API_KEY=<sua API Key da Infura>
É importante manter a sua chave privada e a API Key seguras, evitando expô-las publicamente.
Programando a Interação com a Blockchain
1. Consultando o Saldo em ETH
A primeira tarefa é verificar o saldo da sua carteira. Para isso, crie um arquivo index.js no diretório raiz do projeto e adicione o seguinte código:
require('dotenv').config();
const { ethers } = require("ethers");
const provider = new ethers.InfuraProvider(process.env.NETWORK, process.env.INFURA_API_KEY);
async function getEthBalance(from) {
const balance = await provider.getBalance(from);
console.log(ethers.formatEther(balance));
}
getEthBalance(process.env.WALLET);
Neste exemplo, utilizamos a função getBalance para obter o saldo da carteira em wei, que é a menor unidade de ETH. O resultado é impresso em ETH, permitindo que você confirme o saldo na sua MetaMask.
2. Transferindo ETH
Além de consultar o saldo, outra função comum é a transferência de ETH. Para realizar uma transferência, é necessário criar e assinar uma transação. Isso requer que você tenha outra conta para enviar e receber ETH.
Aqui está um exemplo de como implementar essa função no mesmo arquivo index.js:
async function transferEth(to, value) {
const signer = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
const tx = await signer.sendTransaction({ to, value });
await tx.wait();
console.log(tx.hash);
}
transferEth("0x0D1195969395B8a23dA37Dce78b823BE8cD5a0a4", ethers.utils.parseEther("0.001")); // Exemplo de valor
Neste código, fazemos a autenticação com a carteira e construímos a transação para enviar ETH. O hash da transação é retornado, permitindo o acompanhamento no etherscan.
Conclusão
Neste artigo, exploramos como integrar aplicações Node.js com a blockchain utilizando a biblioteca Ethers.js. Você aprendeu a verificar o saldo de uma carteira e a enviar ETH de uma conta para outra. No próximo tutorial, abordaremos como interagir com contratos inteligentes já existentes na blockchain. Fique atento e compartilhe suas experiências ou perguntas nos comentários!