SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
22.11.2024

Aula 101: Fundamentos do Web3.js

Web3.js é uma poderosa biblioteca JavaScript que permite interagir com a blockchain do Ethereum. Esta aula irá apresentar a você os fundamentos do Web3.js, incluindo como configurá-lo e usá-lo em seus projetos. Vamos abordar como conectar-se a uma blockchain, interagir com contratos inteligentes e enviar transações.

O que é Web3.js?

Web3.js fornece uma interface para comunicar-se com um nó do Ethereum. Ele permite que os desenvolvedores criem aplicações descentralizadas (dApps) ao interagir com a blockchain. Com o Web3.js, você pode:

  • Enviar transações para a blockchain
  • Ler dados de contratos inteligentes
  • Chamar funções de contratos inteligentes
  • Ouvir eventos da blockchain

Configurando Seu Projeto

Para começar, certifique-se de que você tenha o Node.js e o npm (gerenciador de pacotes do Node) instalados em sua máquina. Em seguida, siga estes passos:

  1. Crie um novo diretório para seu projeto e navegue até ele:

    mkdir exemplo-web3js
    cd exemplo-web3js
  2. Inicialize um novo projeto Node.js:

    npm init -y
  3. Instale o Web3.js:

    npm install web3

Conectando-se à Blockchain do Ethereum

Para conectar-se à blockchain do Ethereum, você pode usar um nó Ethereum local ou um provedor de nó público como Infura ou Alchemy. Para este exemplo, vamos nos conectar usando o Infura.

  1. Crie uma conta no Infura e configure um projeto para obter seu endpoint da API do Infura.

  2. Use o Web3.js para conectar-se à blockchain:

    Aqui está um exemplo de código para conectar-se à rede Ethereum usando Web3.js:

    const Web3 = require('web3');
    
    // Substitua YOUR_INFURA_PROJECT_ID pelo ID do seu projeto no Infura
    const infuraUrl = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID';
    const web3 = new Web3(new Web3.providers.HttpProvider(infuraUrl));
    
    // Verifique a conexão
    web3.eth.net.isListening()
       .then(() => console.log('Conectado à rede Ethereum'))
       .catch(e => console.log('Falha ao conectar à rede Ethereum:', e));

Interagindo com um Contrato Inteligente

Para interagir com um contrato inteligente, você precisa do ABI (Interface Binária de Aplicação) do contrato e seu endereço implantado.

  1. Obtenha o ABI e o Endereço: Você pode encontrar o ABI do contrato em plataformas como Etherscan ou se tiver o código-fonte.

  2. Interagindo com o Contrato Inteligente:

    Veja como você pode ler um valor de um contrato inteligente e chamar uma função:

    const contractAddress = '0xSeuEnderecoDoContrato'; // Substitua pelo endereço do seu contrato
    const contractABI = [ /* Seu ABI do Contrato */ ];
    
    const contract = new web3.eth.Contract(contractABI, contractAddress);
    
    // Exemplo: Chamar uma função para obter dados
    async function getData() {
       try {
           const result = await contract.methods.seuNomeDaFuncao().call();
           console.log('Resultado do contrato:', result);
       } catch (error) {
           console.error('Erro ao chamar a função do contrato:', error);
       }
    }
    
    getData();

Enviando Transações

Para enviar uma transação, você precisa do endereço Ethereum do remetente e da chave privada. Lembre-se de nunca compartilhar sua chave privada!

  1. Enviando Ether:

    Aqui está um exemplo de código para enviar Ether de um endereço para outro:

    async function sendTransaction() {
       const fromAddress = '0xSeuEnderecoDoRemetente'; // Substitua pelo endereço do remetente
       const privateKey = '0xSuaChavePrivada'; // Substitua pela chave privada do remetente
       const toAddress = '0xEnderecoDoDestinatario'; // Substitua pelo endereço do destinatário
       const amountToSend = web3.utils.toWei('0.1', 'ether'); // Quantia a ser enviada em wei
    
       const transaction = {
           to: toAddress,
           value: amountToSend,
           gas: 2000000,
           gasPrice: await web3.eth.getGasPrice()
       };
    
       const signedTx = await web3.eth.accounts.signTransaction(transaction, privateKey);
    
       web3.eth.sendSignedTransaction(signedTx.rawTransaction)
           .on('receipt', console.log)
           .on('error', console.error);
    }
    
    sendTransaction();

Ouvindo Eventos

Você também pode ouvir eventos emitidos por contratos inteligentes usando o Web3.js. Aqui está como fazer isso:

contract.events.NomeDoSeuEvento({
       filter: {}, // Você pode filtrar os eventos aqui
       fromBlock: 'latest'
   })
   .on('data', event => {
       console.log('Evento recebido:', event);
   })
   .on('error', error => {
       console.error('Erro ao ouvir eventos:', error);
   });

Conclusão

Nesta aula, cobrimos os fundamentos do Web3.js, incluindo como configurar seu projeto, conectar-se à blockchain do Ethereum, interagir com contratos inteligentes, enviar transações e ouvir eventos. Com esse conhecimento básico, você pode começar a criar suas próprias dApps e explorar o mundo das tecnologias descentralizadas.

Sinta-se à vontade para modificar e expandir esses exemplos enquanto explora as funcionalidades do Web3.js! Boa programação!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!