Check Ethereum Wallet Balance

This snippet demonstrates how to check the balance of an Ethereum wallet and generate a random mnemonic phrase using the ethers.js library. It connects to the Ethereum mainnet via Infura and handles any errors in the balance checking process
 avatar
unknown
javascript
a month ago
2.4 kB
2
Indexable
// Importar las librerías necesarias
const { ethers } = require("ethers");
require("dotenv").config();  // Cargar las variables de entorno desde .env

// Configurar la conexión a Infura
const INFURA_API_KEY = process.env.INFURA_API_KEY;
const provider = new ethers.providers.InfuraProvider("mainnet", INFURA_API_KEY);

// Función para verificar el saldo de una dirección
async function checkWalletBalance(address) {
    try {
        const balance = await provider.getBalance(address);
        return ethers.utils.formatEther(balance);  // Convertir el balance a Ether
    } catch (error) {
        console.error(`Error al comprobar el saldo de ${address}:`, error);
        return null;
    }
}

// Función para generar una frase mnemónica aleatoria
function generateMnemonic() {
    return ethers.Wallet.createRandom().mnemonic.phrase;  // Genera una frase de 12 palabras
}

// Función para generar la dirección desde la frase mnemónica y verificar el saldo
async function generateAndCheckWallets() {
    // Generar una nueva frase mnemónica
    const mnemonic = generateMnemonic();
    console.log(`Frase mnemónica generada: ${mnemonic}`);

    try {
        // Validar si la frase mnemónica es correcta
        if (!ethers.utils.isValidMnemonic(mnemonic)) {
            console.log(`Frase mnemónica no válida: ${mnemonic}`);
            return;
        }

        // Generar la wallet desde la frase mnemónica
        const wallet = ethers.Wallet.fromMnemonic(mnemonic);

        // Obtener la dirección pública de la wallet
        const address = wallet.address;
        console.log(`Dirección generada: ${address}`);

        // Verificar el saldo de la dirección
        const balance = await checkWalletBalance(address);
        if (balance !== null) {
            console.log(`Saldo de ${address}: ${balance} ETH`);
        }

        // Verificar si la seed coincide con la dirección
        const derivedAddress = ethers.Wallet.fromMnemonic(mnemonic).address;
        if (derivedAddress === address) {
            console.log(`La frase mnemónica coincide con la dirección: ${address}`);
        } else {
            console.log(`La frase mnemónica NO coincide con la dirección: ${address}`);
        }

    } catch (error) {
        console.error(`Error al procesar la frase mnemónica: ${mnemonic}`, error);
    }
}

// Ejecutar la función principal
generateAndCheckWallets();
Leave a Comment