Implementación de billetera HD

Quiero crear direcciones públicas en el navegador fuera de línea desde la clave pública maestra para que el propietario de la maestra privada pueda acceder a los fondos disponibles en la dirección secundaria. pero no puedo entender cómo usar este bitcoinjs-lib. cómo crear una clave privada maestra, una clave pública maestra y cada vez que hago clic en el botón genera una nueva dirección de bitcoin para niños.

Se agradece la ayuda

Respuestas (1)

Estoy haciendo algo similar pero usando direcciones segwit (BIP49). Si está utilizando BIP32 con una derivación estándar de m/0'/0/0, podría hacer algo como esto: consulte: https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/test/integration/bip32 .js#L35

//get a mnemonic, then seed, then root.
var mnemonic = bip39.generateMnemonic();
var seed = bip39.mnemonicToSeed(mnemonic);
var root = bitcoin.HDNode.fromSeedBuffer(seed);

//root can be transformed to your xpub and xprv
var xprv = root.toBase58();
var xpub = root.neutered().toBase58();

//You can then create the address with a derivation of m/0'/0/0
var change = 0; //0 for external (receive), 1 for internal (change)
var index = 0; //the index of the address you want to generate
var keypair = root.deriveHardened(0).derive(change).derive(index);
//or keypair = root.derivePath("m/0'/" + change + "/" + index);
var address = keypair.getAddress();

Si su derivación para sus direcciones es m/0' (luego externo, luego el índice) Entonces tiene el xpub para el padre m y puede almacenar xpub de m/0'/0 en el servidor. En el servidor, cuando un usuario hace clic en el botón, genera la dirección n/0, donde n = su xpub de m/0'/0.

Tengo una pregunta para ti. Escenario: si la dirección de bitcoin en el nivel x está fuera de línea en el navegador web usando hdXpublickey padre que no sé porque está fuera de línea, recupero bitcoin de la dirección del niño usando la clave privada extendida sin conocer la ruta en el servidor cuando el remitente envía su fondo.
Si está creando una implementación HD, debe tener el xprv principal almacenado en su computadora. Con eso, puede derivar las claves privadas para todas las cuentas secundarias. No debería generar direcciones a partir de una derivación aleatoria en el lado del usuario, le llevaría una eternidad iterar sobre todas las desviaciones posibles.
Ver mi edición de la principal para un poco más de explicación
almacenar la clave privada en el servidor es una cuestión de seguridad. Una cosa más sobre cómo funcionan los Tezos. Es una gran pregunta en mi mente. ¿Tienes alguna idea?
¿Se puede usar bitcoinjs lib para bitcoin cash?
No conozco a Tezos, realmente no hago ICO. No estoy completamente seguro de si se puede usar con Bitcoin Cash, sé que el formato de hashing de direcciones no ha cambiado, pero puede haber otras diferencias en las claves públicas/privadas que no conozco.