Quiero usar una frase mnemotécnica y BIP 39 para almacenar las claves, y usar bitcoin-core, entiendo que las claves privadas maestras no se pueden importar al menos directamente y esa frase mnemotécnica no es compatible.
Además, sé que existe la idea de repensar el formato de billetera del núcleo de bitcoin para usar descriptores que admitan la derivación de claves usando BIP32.
Mi idea era usar importmulti para generar una billetera utilizable básica con algunas direcciones generadas a partir de la clave de la cuenta maestra.
Usando https://iancoleman.io/bip39/ , generé una semilla y un mnemotécnico:
rebel image use energy write boil throw okay claw
umbrella advice together clarify water actress
Desde allí puedo obtener la clave privada extendida de la cuenta (44'/1'/0'):
tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o
A partir de ahí, puedo crear algunos descriptores para crear una billetera utilizable:
deriveaddresses "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad" 0
# => ["myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "tb1qcm233e9h79ntuv4c5mhsvmfhe2umvm0hsgafsf", "2N56BvNBqmkTh1Jic4GbpXSYpbtTNHUdQFw"]
deriveaddresses "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv" 0
# => ["tb1q5vgxy6ntsugpdde9ryhst66cz8z4c8ztp4k7qv"]
Para generar la billetera, creé una billetera vacía (ya que no quiero depender de las copias de seguridad, solo el mnemotécnico que generé anteriormente) e importé algunas direcciones con importmulti
:
createwallet "mnemonic-test" false true
importmulti '[{"desc": "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad", "range": 10, "timestamp": "now"}, {"desc": "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv", "range": 10, "internal": true, "timestamp": "now"}]' '{"rescan": false}'
Parece funcionar, se generan todas las direcciones generadas, no hay semilla HD habilitada (por lo que las direcciones siempre se derivan de la semilla mnemotécnica).
Los problemas que encontré es que, esas direcciones, nunca son usadas por bitcoin-wallet, al intentar recibir bitcoin dice que no puede generar una dirección (no intenta usar una de las direcciones ya generadas) y al gastar dice que sí no tiene ninguna dirección interna disponible.
¿Sabes cómo habilitar esas monedas?
No puede importar claves privadas al conjunto de claves. Esto actualmente no está permitido porque generalmente se considera inseguro, al menos con la forma en que funciona la billetera hoy. Se está trabajando para cambiar esto en el futuro.
Puede hacer una configuración de billetera dividida en la que tenga una billetera de solo reloj con las claves públicas importadas en el conjunto de claves y usar eso para la generación de direcciones y la creación de transacciones. Luego, tiene una billetera con solo las claves privadas importadas y las usa para firmar. Pero eso no es lo que quieres.
Si no está obligado a usar una semilla BIP 39, puede generar una semilla de 256 bits y usarla sethdseed
para configurar la semilla HD de una billetera. Eso haría lo que quieras, pero BIP 39 usa semillas de 512 bits y no 256, por lo que no funcionará allí.
Las direcciones importadas nunca se usan automáticamente cuando lo hace getnewaddress
. Cuando los importa, debe configurar keypool: "true"
cada objeto importado para que funcione.
eloyesp
keypool: true
esonly allowed when wallet private keys are disabled
. pero quiero usarlos, así que no sé cómo hacerlo.andres chow
eloyesp
andres chow