es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir semillas en clave privada?

Cómo convertir frases de semilla mnemotécnica bip39 en clave privada sin utilizar bibliotecas como web3 o ethers.js. Básicamente, estoy intentando replicar la clave privada de mis billeteras de Metamask.

Me gustaría escribir una función que tome mis palabras de semilla como entrada y devuelva la clave privada para billeteras basadas en Ethereum.

¿Por dónde debo empezar?

privateKey = function([semilla_1, semilla_2, ..., semilla_12]);
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para convertir una frase semilla mnemotécnica bip39 en una clave privada sin usar bibliotecas externas como web3 o ethers.js, deberás seguir los siguientes pasos:

    1. Generar la semilla a partir de la frase mnemotécnica: Metamask genera una frase semilla mnemotécnica de 12 o 24 palabras que se puede utilizar para generar claves privadas para diferentes criptomonedas. Puedes utilizar BIP39 para convertir esta frase en una semilla binaria.
    import 'dart:convert';
    
    List<int> seed = sha256.convert(utf8.encode(mnemonic)).bytes;
    
    1. Derivar la clave maestra a partir de la semilla.
    import 'package:pointycastle/export.dart';
    
    var masterKey = HDWallet.fromSeed(seed);
    
    1. Derivar la cuenta de Ethereum:
    final purpose = HDPurpose(44);
    final coinType = HDCoinType.ethereum;
    final account = HDWallet.fromPathBIP44(masterKey, purpose, coinType, 0);
    
    1. Derivar la clave privada de Ethereum a partir de la cuenta:
    import 'package:web3dart/crypto.dart';
    
    String privateKey = '0x' + bytesToHex(secp256k1.generatePrivateKey(account.privateKey));
    

    La clave privada generada debería coincidir con la clave privada de tu billetera Metamask.

Comments are closed.