Bibliotecas de API JavaScript
Última atualização da página: 25 de fevereiro de 2026
Para que um aplicativo da web interaja com a blockchain Ethereum (ou seja, leia os dados da blockchain e/ou envie transações para a rede), ele deve se conectar a um nó Ethereum.
Para este propósito, cada 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ó Ethereum, é possível usar o JavaScript vanilla, mas existem várias bibliotecas convenientes dentro do ecossistema que tornam isso muito mais fácil. Com essas bibliotecas, os desenvolvedores podem escrever intuitivamente métodos on-line para iniciar requisições JSON RPC (por debaixo dos panos) que interajam com a Ethereum.
Observe que, desde A Fusão, duas partes conectadas do software Ethereum - um cliente de execução e um cliente de consenso - são necessárias para executar um nó. Certifique-se de que seu nó inclui tanto o cliente de execução quanto o consensual. Se o seu nó não estiver na sua máquina local (p. ex., seu nó está sendo executado em uma instância da AWS), atualize os endereços IP no tutorial. Para 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 Ethereum e os clientes Ethereum.
Por que usar uma biblioteca?
Essas bibliotecas abstraem muito da complexidade de interagir diretamente com um nó Ethereum. Elas também fornecem funções utilitárias (p. ex., converter ETH para Gwei), de modo que, como desenvolvedor, você pode 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 aos nós do Ethereum
Usando provedores, essas bibliotecas permitem que você se conecte à Ethereum e leia os seus dados, seja por JSON-RPC, INFURA, Etherscan, Alquimia ou MetaMask.
Aviso: O Web3.js foi arquivado em 4 de março de 2025. Leia o anúncio (opens in a new tab). Considere o uso de bibliotecas alternativas como ethers.js (opens in a new tab) ou viem (opens in a new tab) para novos projetos.
Exemplo de Ethers
1// Um BrowserProvider envolve um provedor Web3 padrão, que é2// o que o MetaMask injeta como window.ethereum em cada página3const provider = new ethers.BrowserProvider(window.ethereum)45// O plug-in MetaMask também permite assinar transações para6// enviar ether e pagar para alterar o estado dentro da blockchain.7// Para isso, precisamos do signatário da conta...8const signer = provider.getSigner()Exemplo de Web3js
1var web3 = new Web3("http://localhost:8545")2// ou3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// mudar provedor6web3. etProvider("ws://localhost:8546")7// ou8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Usando o provedor IPC em node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // caminho do mac os13// ou14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // Caminho mac os17// no windows o caminho é: "\\\\.\\pipe\\geth.ipc"18// no linux o caminho é: "/users/myuser/.ethereum/geth.ipc"Exibir tudoUma vez configurado, você poderá consultar a blockchain para:
- numero de blocos
- estimativas de gás
- eventos de contratos inteligentes
- id da rede
- e mais...
Funcionalidade da carteira
Essas bibliotecas oferecem a funcionalidade de criar carteiras, gerenciar chaves e assinar transações.
Veja alguns exemplos de Ethers
1// Crie uma instância de carteira a partir de uma mnemônica...2mnemonic =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromPhrase(mnemonic)56// ...ou de uma chave privada7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// O endereço como uma Promise pela API do Signer13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Um endereço de Carteira também está disponível de forma síncrona17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// Os componentes criptográficos internos21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// A mnemônica da carteira27walletMnemonic.mnemonic28// {29// locale: 'en',30// path: 'm/44\'/60\'/0\'/0/0',31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'32// }3334// Observação: uma carteira criada com uma chave privada não35// tem uma mnemônica (a derivação o impede)36walletPrivateKey.mnemonic37// null3839// Assinando uma mensagem40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Assinando uma transação49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// O método de conexão retorna uma nova instância da53// Carteira conectada a um provedor54wallet = walletMnemonic.connect(provider)5556// Consultando a rede57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// Enviando ether63wallet.sendTransaction(tx)Exibir tudoLeia a documentação completa (opens in a new tab)
Uma vez configurado você será capaz de:
- criar contas
- enviar transações
- assinar transações
- e mais...
Interagir com funções de contrato inteligente
As bibliotecas de clientes Javascript permitem que sua aplicação chame funções de contratos inteligentes lendo a Interface Binária da Aplicação (en: ABI, pt: IBA) de um contrato compilado.
O ABI essencialmente explica as funções do contrato em um formato JSON e permite que você use-o como um objeto JavaScript normal.
Então, o seguinte contrato de Solidity:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}Exibir tudoResultaria no seguinte JSON:
1[{2 "type":"constructor",3 "payable":false,4 "stateMutability":"nonpayable"5 "inputs":[{"name":"testInt","type":"uint256"}],6 },{7 "type":"function",8 "name":"foo",9 "constant":false,10 "payable":false,11 "stateMutability":"nonpayable",12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],13 "outputs":[{"name":"","type":"address"}]14 },{15 "type":"event",16 "name":"Event",17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],18 "anonymous":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Exibir tudoIsso significa que você pode:
- Enviar uma transação para o contrato inteligente e executar seu método
- Estimar o gás que um método de execução consumirá quando executado na EVM
- Implantar um contrato
- E mais...
Funções utilitárias
Funções utilitárias lhe dão atalhos úteis que facilitam um pouco a construção com a Ethereum.
Os valores 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 em ethers fica assim:
1// Obtenha o saldo de uma conta (por endereço ou nome ENS)2balance = await provider.getBalance("ethers.eth")3// { BigNumber: "2337132817842795605" }45// Muitas vezes você precisará formatar a saída para o usuário6// que preferem ver valores no ether (em vez de wei)7ethers.utils.formatEther(balance)8// '2.337132817842795605'- Funções utilitárias do Web3js (opens in a new tab)
- Funções utilitárias do Ethers (opens in a new tab)
Bibliotecas disponíveis
Web3.js - API JavaScript do Ethereum.
Ethers.js - Implementação completa da carteira Ethereum e utilitários em JavaScript e TypeScript.
- Página inicial do Ethers.js (opens in a new tab)
- Documentação (opens in a new tab)
- GitHub (opens in a new tab)
The Graph - Um protocolo para indexar dados do Ethereum e IPFS e consultá-los usando GraphQL.
- The Graph (opens in a new tab)
- Graph Explorer (opens in a new tab)
- Documentação (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK - Wrapper em torno do Ethers.js com APIs aprimoradas.
viem - Interface TypeScript para Ethereum.
Drift - Metabiblioteca TypeScript com cache, ganchos e simulações de teste integrados.
Leitura adicional
Conhece um recurso da comunidade que o ajudou? Edite esta página e adicione-a!
Tópicos relacionados
Tutoriais relacionados
- Configurar o Web3js para usar a blockchain Ethereum em JavaScript – Instruções para configurar o web3.js em seu projeto.
- Chamando um contrato inteligente a partir do JavaScript – Usando o token DAI, veja como chamar funções de contratos usando JavaScript.
- Enviando transações usando web3 e Alchemy – Passo a passo para enviar transações pelo back-end.