Skip to main content

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!

Deixe uma Resposta