SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
23.11.2024

Aula 112: Gerando e Gerenciando Chaves

Nesta aula, exploraremos como gerar e gerenciar chaves no contexto do Ethereum e Solidity. Discutiremos conceitos-chave relacionados às chaves públicas e privadas e como elas são utilizadas para transações na blockchain. Além disso, forneceremos alguns exemplos de código que ilustram como gerenciar essas chaves programaticamente.

Entendendo Chaves Públicas e Privadas

No Ethereum, cada usuário possui um par exclusivo de chaves: uma chave pública e uma chave privada.

  • Chave Pública: Esta chave é derivada da chave privada e pode ser compartilhada publicamente. Ela é usada para gerar o seu endereço Ethereum.
  • Chave Privada: Esta chave é mantida em segredo e é usada para assinar transações. Se alguém tiver acesso à sua chave privada, poderá controlar seus ativos.

Geração de Chaves

Normalmente, as chaves são geradas usando algoritmos criptográficos. No Ethereum, o Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) é utilizado para a geração do par de chaves. Veja como você pode gerar um par de chaves usando JavaScript com a biblioteca ethers.js:

const { ethers } = require("ethers");

// Gerar uma carteira aleatória
const wallet = ethers.Wallet.createRandom();

console.log("Endereço:", wallet.address);
console.log("Chave Privada:", wallet.privateKey);
console.log("Mnemônica:", wallet.mnemonic.phrase);

Gerenciamento de Chaves

Uma vez que as chaves são geradas, gerenciá-las de forma segura é crucial. Aqui estão algumas melhores práticas:

  1. Armazenamento Seguro: Armazene chaves privadas de forma segura, por exemplo, usando uma carteira de hardware, armazenamento de arquivos criptografados ou um serviço de gerenciamento de chaves.
  2. Backup: Crie backups seguros de suas chaves. Mnemônicas ou frases-semente podem ser usadas para recuperação da carteira.
  3. Nunca Compartilhe Sua Chave Privada: Nunca exponha sua chave privada; ela concede acesso aos seus fundos.

Usando Chaves para Transações

Usando suas chaves, você pode assinar transações. Abaixo está um exemplo de como enviar Ether usando a biblioteca ethers.js:

const { ethers } = require("ethers");

async function enviarTransacao() {
    // Conectando a um provedor (por exemplo, Infura)
    const provider = new ethers.providers.InfuraProvider("mainnet", "SEU_ID_DO_PROJETO_INFURA");

    // Cria uma instância de carteira com sua chave privada
    const chavePrivada = "SUA_CHAVE_PRIVADA"; // Nunca exponha esta chave publicamente
    const wallet = new ethers.Wallet(chavePrivada, provider);

    // Parâmetros da transação
    const tx = {
        to: "ENDERECO_DO_DESTINATARIO",
        value: ethers.utils.parseEther("0.01"), // Enviando 0.01 Ether
        gasLimit: 21000,
        gasPrice: ethers.utils.parseUnits('10', 'gwei')
    };

    // Enviar a transação
    const transacao = await wallet.sendTransaction(tx);
    console.log("Hash da transação:", transacao.hash);
}

enviarTransacao().catch(console.error);

Monitorando Transações

Você também pode querer monitorar suas transações. Isso pode ser feito assinando recibos e eventos de transação. Aqui está um exemplo de como ouvir a confirmação de uma transação:

async function monitorarTransacao(txHash) {
    const provider = new ethers.providers.InfuraProvider("mainnet", "SEU_ID_DO_PROJETO_INFURA");

    // Aguarda a transação ser minerada
    const recibo = await provider.waitForTransaction(txHash);
    console.log("Transação confirmada no bloco:", recibo.blockNumber);
}

const txHash = "SEU_HASH_DA_TRANSACAO";
monitorarTransacao(txHash).catch(console.error);

Conclusão

Nesta aula, abordamos os aspectos essenciais da geração e gerenciamento de chaves no Ethereum. Discutimos a importância de lidar com chaves privadas de forma segura e fornecemos exemplos de geração de chaves, assinatura de transações e monitoramento.

Ao seguir as melhores práticas para gerenciamento de chaves e usar bibliotecas como ethers.js, você pode interagir com a blockchain Ethereum de forma confiável e segura. Lembre-se sempre de que a segurança de suas chaves afeta diretamente a segurança dos seus ativos digitais.

Video

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

Thank you for voting!