No se pueden generar las mismas direcciones que bitcoincore usando xprv de bitcoin-core

En primer lugar, todas las direcciones a continuación son para fines de prueba, por lo que no me importan las claves privadas.

Monedero abandonado creado por Bitcoin-qt v0.16.2:

extended private masterkey: xprv9s21ZrQH143K3mYiBBH7MwWV9VTkeB5q5sxEFGgvLbLqRZ3xPVAKvwyxSLVtTcL2tz665vdZnHLrMQPr6MWGKdDHYoncZmUNiUgtShGCmZE

Por lo que puedo entender del resto del volcado, la primera dirección de recepción es:addr=3DhmoRSx2bjxyJm7A1Crs3bCPnVcEx51fE hdkeypath=m/0'/0'/0'

Ahora estoy tratando de generar la misma dirección usando bitcoinjs-lib, pero hasta ahora no he tenido ningún éxito.

import { HDNode } from "bitcoinjs-lib";
const key = HDNode.fromBase58(
 "xprv9s21ZrQH143K3mYiBBH7MwWV9VTkeB5q5sxEFGgvLbLqRZ3xPVAKvwyxSLVtTcL2tz665vdZnHLrMQPr6MWGKdDHYoncZmUNiUgtShGCmZE"
);
console.log(key.derivePath("m/0'/0'/0'").getAddress()); // prints 1NoQERVA18v5WcFUbgvz22tDGigmAkqy4U

Ahora me confundo porque uso la misma ruta de derivación pero obtengo 2 direcciones diferentes y, además, parece que la dirección del volcado es multisig. ¿Es por multisig?

Si es así, ¿cómo debo generar wallet.dat que no sea multisig y sea HD?

Respuestas (1)

parece que la dirección del volcado es multisig?

No es multigrado. Bitcoin Core no genera direcciones multisig.

Esa dirección es una dirección Segwit envuelta en P2SH. La misma clave privada se puede asociar con varias direcciones, ya que existen diferentes tipos de direcciones. El tipo de dirección con la que está generando bitcoinjs-libson direcciones P2PKH. Sin embargo, Bitcoin Core está creando direcciones P2SH-P2WPKH.

Debería poder obtener la misma dirección si hace algo como

bitcoin.payments.p2sh({
      redeem: bitcoin.payments.p2wpkh({ pubkey: key.derivePath("m/0'/0'/0'").publicKey })
})
¡Gracias! Una pregunta más. ¿Es posible usar esta API para generar direcciones usando desde xpub? me sale TypeError: Missing private key for hardened child keyerror
No, no puede derivar claves reforzadas de un xpub. Sin embargo, puede usar xpub y derivar claves con una ruta no protegida. Esto significa que su ruta clave no puede contener ', ho Hque indiquen que ese índice debe usar una derivación reforzada.
Si elimino 'la ruta clave ahora, puedo generar direcciones usando xpub ahora, creo que bitcoin-qt no monitoreará estas direcciones, ¿verdad?
Sí, esas serán direcciones diferentes.