SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
23.11.2024

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:

  1. 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.
  2. 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

  1. Carteiras de Software: Aplicativos como MetaMask, que rodam em seu computador ou como extensões de navegador.
  2. Carteiras de Hardware: Dispositivos físicos como Ledger ou Trezor, que oferecem segurança melhorada para suas chaves privadas.
  3. 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!

Video

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

Thank you for voting!