Pular para o conteúdo principal
Change page

Bibliotecas de API JavaScript

Para que um aplicativo web interaja com a blockchain do Ethereum (ou seja, leia dados da blockchain e/ou envie transações para a rede), ele deve se conectar a um nó do Ethereum.

Para esse propósito, todo cliente Ethereum implementa a especificação JSON-RPC, portanto, há um conjunto uniforme de métodos nos quais os aplicativos podem confiar.

Se você quiser usar JavaScript para se conectar a um nó do Ethereum, é possível usar JavaScript puro, mas existem várias bibliotecas de conveniência no ecossistema que tornam isso muito mais fácil. Com essas bibliotecas, os desenvolvedores podem escrever métodos intuitivos de uma linha para inicializar solicitações JSON-RPC (internamente) que interagem com o Ethereum.

Observe que, desde The Merge, dois softwares do Ethereum conectados - um cliente de execução e um cliente de consenso - são necessários para executar um nó. Certifique-se de que seu nó inclua um cliente de execução e um de consenso. Se o seu nó não estiver na sua máquina local (por exemplo, seu nó está sendo executado em uma instância da AWS), atualize os endereços IP no tutorial de acordo. Para obter mais informações, consulte nossa página sobre como executar um nó.

Pré-requisitos

Além de entender JavaScript, pode ser útil entender a pilha do Ethereum e os clientes Ethereum.

Por que usar uma biblioteca?

Essas bibliotecas abstraem grande parte da complexidade de interagir diretamente com um nó do Ethereum. Elas também fornecem funções utilitárias (por exemplo, converter ETH para gwei) para que, como desenvolvedor, você possa gastar menos tempo lidando com as complexidades dos clientes Ethereum e mais tempo focado na funcionalidade exclusiva do seu aplicativo.

Recursos da biblioteca

Conectar-se a nós do Ethereum

Usando provedores, essas bibliotecas permitem que você se conecte ao Ethereum e leia seus dados, seja por JSON-RPC, Infura, Etherscan, Alchemy ou MetaMask.

Aviso: A Web3.js foi arquivada em 4 de março de 2025. Leia o anúncio (opens in a new tab). Considere usar bibliotecas alternativas como ethers.js (opens in a new tab) ou viem (opens in a new tab) para novos projetos.

Exemplo com Ethers

// Um BrowserProvider envolve um provedor Web3 padrão, que é
// o que a MetaMask injeta como window.ethereum em cada página
const provider = new ethers.BrowserProvider(window.ethereum)

// O plugin da MetaMask também permite assinar transações para
// enviar ether e pagar para alterar o estado dentro da blockchain.
// Para isso, precisamos do assinante da conta...
const signer = provider.getSigner()

Exemplo com Web3js

Uma vez configurado, você poderá consultar a blockchain para obter:

  • números de blocos
  • estimativas de gás
  • eventos de contratos inteligentes
  • ID da rede
  • e muito mais...

Funcionalidade de carteira

Essas bibliotecas oferecem a funcionalidade de criar carteiras, gerenciar chaves e assinar transações.

Aqui está um exemplo do Ethers

Leia a documentação completa (opens in a new tab)

Uma vez configurado, você poderá:

  • criar contas
  • enviar transações
  • assinar transações
  • e muito mais...

Interagir com funções de contratos inteligentes

As bibliotecas de cliente JavaScript permitem que seu aplicativo chame funções de contratos inteligentes lendo a Interface Binária de Aplicativo (ABI) de um contrato compilado.

A ABI explica essencialmente as funções do contrato em um formato JSON e permite que você o use como um objeto JavaScript normal.

Portanto, o seguinte contrato em Solidity:

Resultaria no seguinte JSON:

Isso significa que você pode:

  • Enviar uma transação para o contrato inteligente e executar seu método
  • Fazer uma chamada para estimar o gás que a execução de um método consumirá quando executado na EVM
  • Implantar um contrato
  • E muito mais...

Funções utilitárias

As funções utilitárias oferecem atalhos práticos que tornam a construção com Ethereum um pouco mais fácil.

Os valores de ETH estão em Wei por padrão. 1 ETH = 1.000.000.000.000.000.000 Wei – isso significa que você está lidando com muitos números! web3.utils.toWei converte ether para Wei para você.

E no ethers fica assim:

// Obter o saldo de uma conta (por endereço ou nome ENS)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Frequentemente você precisará formatar a saída para o usuário
// que prefere ver os valores em ether (em vez de Wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

Bibliotecas disponíveis

Web3.js - API JavaScript do Ethereum.

Ethers.js - Implementação completa de carteira Ethereum e utilitários em JavaScript e TypeScript.

The Graph - Um protocolo para indexar dados do Ethereum e IPFS e consultá-los usando GraphQL.

Alchemy SDK - Wrapper em torno do Ethers.js com APIs aprimoradas.

viem - Interface TypeScript para Ethereum.

Codex - API de dados de blockchain enriquecidos em tempo real em dezenas de redes.

Drift - Metabiblioteca TypeScript com cache integrado, hooks e mocks de teste.

Leitura adicional

Conhece algum recurso da comunidade que o ajudou? Edite esta página e adicione-o!

Tutoriais: APIs JavaScript e WebSockets no Ethereum

  • Usando WebSockets – Como usar WebSockets com Alchemy para se inscrever em eventos do Ethereum e fazer solicitações JSON-RPC em tempo real.