Configure o web3.js para usar a blockchain da Ethereum em JavaScript
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 --saveEm 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 nó 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")34web3.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 latestBlockNumber5}67getBlockNumber()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ário5 await window.ethereum.enable()6 // Contas agora expostas7 } catch (error) {8 // O usuário negou o acesso à conta...9 }10}Exibir tudoExistem 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