Pular para o conteúdo principal

Configure o web3.js para usar a blockchain da Ethereum em JavaScript

web3.js
JavaScript
Iniciante
jdourlens
11 de abril de 2020
3 minutos de leitura

Neste tutorial, veremos como começar a usar o web3.js (opens in a new tab) para interagir com a blockchain da Ethereum. O Web3.js pode ser usado tanto em front-ends quanto em back-ends para ler dados da blockchain, realizar transações e até mesmo implantar contratos inteligentes.

O primeiro passo é incluir o web3.js em seu projeto. Para usá-la em uma página da web, você pode importar a biblioteca diretamente usando um CDN como o JSDeliver.

1<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>

Se preferir instalar a biblioteca para usar no seu back-end ou em um projeto de front-end que use um processo de build, você pode instalá-la usando o npm:

npm install web3 --save

Em seguida, para importar o Web3.js em um script Node.js ou projeto de front-end do Browserify, você pode usar a seguinte linha de JavaScript:

1const Web3 = require("web3")

Agora que incluímos a biblioteca no projeto, precisamos inicializá-la. Seu projeto precisa ser capaz de se comunicar com a blockchain. A maioria das bibliotecas Ethereum se comunica com um por meio de chamadas RPC. Para iniciar nosso provedor Web3, vamos instanciar o Web3 passando a URL do provedor para o construtor. Se você tiver um nó ou uma instância do ganache em execução em seu computador (opens in a new tab), o código será parecido com este:

1const web3 = new Web3("http://localhost:8545")

Se quiser acessar diretamente um nó hospedado, você pode encontrar opções em nós como serviço.

1const web3 = new Web3("https://cloudflare-eth.com")

Para testar se configuramos nossa instância do Web3 corretamente, vamos tentar recuperar o número do bloco mais recente usando a função getBlockNumber. Essa função aceita um callback como parâmetro e retorna o número do bloco como um inteiro.

1var Web3 = require("web3")
2const web3 = new Web3("https://cloudflare-eth.com")
3
4web3.eth.getBlockNumber(function (error, result) {
5 console.log(result)
6})

Se você executar este programa, ele simplesmente imprimirá o número do bloco mais recente: o topo da blockchain. Você também pode usar chamadas de função async/await para evitar o aninhamento de callbacks em seu código:

1async function getBlockNumber() {
2 const latestBlockNumber = await web3.eth.getBlockNumber()
3 console.log(latestBlockNumber)
4 return latestBlockNumber
5}
6
7getBlockNumber()

Você pode ver todas as funções disponíveis na instância do Web3 na documentação oficial do web3.js (opens in a new tab).

A maioria das bibliotecas Web3 é assíncrona porque, em segundo plano, a biblioteca faz chamadas JSON-RPC para o nó, que envia o resultado de volta.

Se você estiver trabalhando no navegador, algumas carteiras injetam diretamente uma instância do Web3, e você deve tentar usá-la sempre que possível, especialmente se planeja interagir com o endereço Ethereum do usuário para realizar transações.

Aqui está o trecho de código para detectar se uma carteira MetaMask está disponível e tentar habilitá-la, se for o caso. Isso permitirá que você leia o saldo do usuário e que ele valide as transações que você deseja que ele realize na blockchain da Ethereum:

1if (window.ethereum != null) {
2 state.web3 = new Web3(window.ethereum)
3 try {
4 // Solicita acesso à conta, se necessário
5 await window.ethereum.enable()
6 // Contas agora expostas
7 } catch (error) {
8 // O usuário negou o acesso à conta...
9 }
10}
Exibir tudo

Existem alternativas ao web3.js, como o Ethers.js (opens in a new tab), que também são comumente usadas. No próximo tutorial, veremos como escutar facilmente os novos blocos que chegam na blockchain e ver o que eles contêm (opens in a new tab).

Última atualização da página: 21 de agosto de 2025

Este tutorial foi útil?