Lição 111: Contas e Carteiras de Ethereum
Nesta lição, vamos explorar os conceitos de contas e carteiras de Ethereum. Compreender esses componentes fundamentais é essencial para interagir com a blockchain do Ethereum.
O que é uma Conta Ethereum?
Uma conta Ethereum é uma entidade que pode enviar e receber Ether (ETH) e interagir com contratos inteligentes. Existem dois tipos de contas em Ethereum:
- Contas de Proprietário Externo (EOAs): Essas contas são controladas por chaves privadas. Elas são criadas pelos usuários e podem iniciar transações.
- Contas de Contrato: Essas contas são controladas pelo código de seu contrato e podem enviar transações apenas em resposta ao recebimento de uma transação.
Estrutura da Conta
Uma conta Ethereum consiste em:
- Endereço: A chave pública hash que forma um identificador único e mais curto (40 caracteres hexadecimais).
- Chave Privada: Uma chave secreta associada à conta que permite assinar transações e acessar seus fundos.
Exemplo de um Endereço Ethereum
0x5B8e8B3D181cD3684B8378eA3fA3bC7eD4C65E6A
Exemplo de uma Chave Privada
0x4c0883a69102937d6231471b5dbb620d5cde1c0b6de2f1b1df9e8b8d4a5e1bb7
Nota: Nunca compartilhe sua chave privada com ninguém. Ela concede controle total sobre seus fundos.
Criando uma Carteira Ethereum
Uma carteira é um programa de software ou um dispositivo de hardware que armazena suas contas Ethereum. Ela gerencia seus endereços e chaves privadas, permitindo que você envie e receba Ether e interaja com contratos inteligentes.
Tipos de Carteiras
- Carteiras de Software: Aplicativos como MetaMask, que rodam em seu computador ou como extensões de navegador.
- Carteiras de Hardware: Dispositivos físicos como Ledger ou Trezor, que oferecem segurança melhorada para suas chaves privadas.
- Carteiras de Papel: Uma impressão física de suas chaves pública e privada.
Exemplo: Criando uma Carteira Ethereum usando Web3.js
Vamos criar uma carteira simples usando JavaScript e Web3.js, uma biblioteca popular para interagir com Ethereum.
Pré-requisitos
Certifique-se de que você tem o Node.js e o npm instalados em sua máquina. Primeiro, crie um novo diretório e inicialize-o:
mkdir eth-wallet
cd eth-wallet
npm init -y
npm install web3
Script de Criação de Carteira
Crie um novo arquivo chamado createWallet.js
e adicione o seguinte código:
const Web3 = require('web3');
// Inicializa o Web3
const web3 = new Web3();
// Cria uma nova conta
const account = web3.eth.accounts.create();
// Exibe o endereço da conta e a chave privada
console.log(`Endereço: ${account.address}`);
console.log(`Chave Privada: ${account.privateKey}`);
Após salvar o arquivo, execute-o usando o Node.js:
node createWallet.js
Isso irá exibir um endereço Ethereum recém-criado e sua chave privada correspondente.
Exemplo: Enviando Ether de uma Conta para Outra
Para enviar Ether, você precisa de um provedor, como Infura, para se conectar à rede Ethereum. Veja como você pode enviar Ether usando uma carteira Ethereum:
Pré-requisitos
Se você ainda não fez isso, instale as seguintes dependências em seu projeto:
npm install dotenv
Crie um arquivo .env
em seu diretório do projeto para variáveis de ambiente:
INFURA_PROJECT_ID=seu_id_projeto_infura
SENDER_PRIVATE_KEY=sua_chave_privada_remetente
RECIPIENT_ADDRESS=endereco_destinatario
Script para Enviar Ether
Crie um novo arquivo chamado sendEther.js
e adicione o seguinte código:
require('dotenv').config();
const Web3 = require('web3');
const web3 = new Web3(`https://mainnet.infura.io/v3/${process.env.INFURA_PROJECT_ID}`);
const sendEther = async () => {
const account = web3.eth.accounts.privateKeyToAccount(process.env.SENDER_PRIVATE_KEY);
web3.eth.accounts.wallet.add(account);
const tx = {
from: account.address,
to: process.env.RECIPIENT_ADDRESS,
value: web3.utils.toWei('0.01', 'ether'), // Enviando 0.01 Ether
gas: 21000,
};
try {
const signedTx = await web3.eth.accounts.signTransaction(tx, account.privateKey);
const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
console.log('Transação bem-sucedida com hash:', receipt.transactionHash);
} catch (error) {
console.error('Transação falhou:', error);
}
};
sendEther();
Nota Importante: Certifique-se de que a conta remetente possui Ether suficiente para cobrir a transação e as taxas de gás.
Conclusão
Nesta lição, abordamos os fundamentos das contas e carteiras Ethereum. Você aprendeu a distinção entre EOAs e contas de contrato, como criar uma carteira usando Web3.js e como enviar Ether de uma conta para outra. Compreender esses conceitos é vital à medida que você avança em sua jornada de desenvolvimento Ethereum. Sempre lembre-se de manter suas chaves privadas seguras!