Aula 227: Conectando ao Mainnet e Testnets
No mundo do desenvolvimento Ethereum, conectar-se à blockchain Ethereum é uma habilidade essencial. Esta aula abordará como se conectar ao Mainnet e a várias Testnets, como Ropsten, Rinkeby e Goerli. Usaremos a popular biblioteca JavaScript para Ethereum, ethers.js, em nossos exemplos.
Pré-requisitos
- Entendimento básico de Solidity e Ethereum
- Node.js e npm instalados em sua máquina
- Uma carteira (como MetaMask) para gerenciamento de transações
Configurando o Seu Ambiente
Primeiro, certifique-se de que o Node.js está instalado. Você pode verificar sua instalação executando:
node -v
npm -v
Em seguida, crie um novo diretório para o seu projeto e instale o ethers
:
mkdir demo-conexao-eth
cd demo-conexao-eth
npm init -y
npm install ethers
Conectando à Rede Ethereum
Para se conectar à rede Ethereum, você precisará criar uma instância de ethers.providers.JsonRpcProvider
e especificar a rede (Mainnet ou uma Testnet).
Conectando ao Mainnet
Veja como se conectar ao Mainnet:
const { ethers } = require('ethers');
// Conectar ao Mainnet
const mainnetProvider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');
async function getBlockNumber() {
const blockNumber = await mainnetProvider.getBlockNumber();
console.log("Número do Bloco Mainnet:", blockNumber);
}
getBlockNumber();
Conectando às Testnets
Abaixo estão exemplos de conexão com Testnets populares.
Conectando ao Ropsten
// Conectar à Testnet Ropsten
const ropstenProvider = new ethers.providers.JsonRpcProvider('https://ropsten.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');
async function getRopstenBlockNumber() {
const blockNumber = await ropstenProvider.getBlockNumber();
console.log("Número do Bloco Ropsten:", blockNumber);
}
getRopstenBlockNumber();
Conectando ao Rinkeby
// Conectar à Testnet Rinkeby
const rinkebyProvider = new ethers.providers.JsonRpcProvider('https://rinkeby.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');
async function getRinkebyBlockNumber() {
const blockNumber = await rinkebyProvider.getBlockNumber();
console.log("Número do Bloco Rinkeby:", blockNumber);
}
getRinkebyBlockNumber();
Conectando ao Goerli
// Conectar à Testnet Goerli
const goerliProvider = new ethers.providers.JsonRpcProvider('https://goerli.infura.io/v3/SUA_ID_DE_PROJETO_INFURA');
async function getGoerliBlockNumber() {
const blockNumber = await goerliProvider.getBlockNumber();
console.log("Número do Bloco Goerli:", blockNumber);
}
getGoerliBlockNumber();
Enviando Transações
Uma vez conectado, você também pode enviar transações. Aqui está um exemplo de como enviar Ether de uma conta para outra na Testnet Ropsten.
Enviando uma Transação no Ropsten
async function sendTransaction() {
const wallet = new ethers.Wallet('SUA_CHAVE_PRIVADA', ropstenProvider);
const tx = {
to: 'ENDERECO_DO_DESTINATARIO',
value: ethers.utils.parseEther('0.01'), // Enviando 0.01 ETH
};
const transactionResponse = await wallet.sendTransaction(tx);
console.log("Hash da Transação:", transactionResponse.hash);
const receipt = await transactionResponse.wait();
console.log("Transação foi minerada no bloco:", receipt.blockNumber);
}
sendTransaction();
Conclusão
Nesta aula, exploramos como nos conectar ao Mainnet da Ethereum e a várias Testnets usando ethers.js. Também discutimos como recuperar o número do bloco atual e como enviar Ether. Compreender essas conexões é crucial para desenvolver e testar seus contratos inteligentes em um ambiente real de blockchain.
Lembre-se de substituir 'SUA_ID_DE_PROJETO_INFURA'
, 'SUA_CHAVE_PRIVADA'
e 'ENDERECO_DO_DESTINATARIO'
pelos seus respectivos ID de projeto Infura, chave privada da carteira e endereço do destinatário. Sempre tenha cuidado ao lidar com chaves privadas e dados sensíveis!
Com esses conhecimentos e habilidades fundamentais, você está a caminho de se tornar um desenvolvedor Ethereum proficiente. Boa codificação!