Lição: 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:
-
Crie um novo diretório para seu projeto e navegue até ele:
mkdir exemplo-web3js cd exemplo-web3js
-
Inicialize um novo projeto Node.js:
npm init -y
-
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.
-
Crie uma conta no Infura e configure um projeto para obter seu endpoint da API do Infura.
-
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.
-
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.
-
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!
-
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!