Saltar al contenido

Cómo crear una cartera ‘watch-only wallet’ en Bitcoin Core.

Tiempo de lectura aprox: 13 minutos, 20 segundos

Como tal vez muchos de los que me sigan sepan, soy pro-nodo, considero que tener un Nodo propio es la única forma real de tener soberanía en Bitcoin, que es uno de los fundamentales. Por ello busco la forma de usarlo y sacarle partido.

Bajo mi perspectiva, uno de los problemas con los nodos, es que la gente no entiende o estudia lo suficiente, qué puede hacer y qué no teniendo un nodo.

Notas: Este artículo tiene objetivos didácticos, el principal, que la gente empiece a entender que Bitcoin Core es más que solo un software descargando bloques y validando transacciones, por ello exploramos las posibilidades que te brinda, como la de generar una cartera de vigilancia, la cual es muy útil para Hardware Wallets (HW) como Ledger o Nano.

Sin embargo, con HW como Coldcard se recomienda usarla sin cable usb. Coldcard implementa una forma de exportar la Xpub a través de una microSD card. Si deseas conocer cómo hacerlo te dejo este link.

Por último, al final del artículo veremos brevemente el concepto de lo que es una transacción parcialmente firmada (PSBT), sin embargo cabe aclarar que a día de hoy el poder firmar este tipo de transacciones solo es posible desde Coldcard, aunque hay una nueva generación de HW que lo están implementando, y obviamente, también es posible hacerlo desde tu Nodo.

En este ejercicio, te aseguro que vas a aprender y entender la potencia de tu Nodo. Aprenderemos no solo de comandos, sino que el porqué es importante conocer el concepto de derivation path y todas las funcionalidades al respecto que un Nodo te puede brindar.

Una cartera de vigilancia sólo te permite ver los movimientos de las transacciones que registra. Son muy útiles para vigilar tus operaciones sin mantener tu HW en línea. No debemos olvidar que estamos hablando de que bitcoin es dinero digital y como tal estas expuesto a posible ataques o hackeos, por ello es importante tomar precauciones.

Dado que hay más de una forma de hacerlo y dependiendo de la Hardware Wallet (HW) que tengas, voy a centrarme en 2 casos, los cuales considero podrían ser los más genéricos:

  • Caso 1: Tienes una Hardware Wallet tipo Ledger o Trezor y has obtenido la XPub (llave pública extendida) desde la propia HW y vamos a importarla en la cartera del Nodo.
  • Caso 2: Tienes una cartera, en este ejemplo vamos a escoger Electrum Wallet y quieres en tu Nodo una watch-only para vigilar sus movimientos. (Este caso lo dejaré para una siguiente entrega)

¿Qué beneficios obtienes en ambos casos?. Dejas de compartir tus claves con terceros, con total confianza ya que tu Nodo Bitcoin no comparte esa información con nadie.

Algunas cosas importantes a tener en consideración.

  • Primero que nada, este ejercicio es un poco largo por las imágenes que le acompañan pero en realidad no es nada complicado, tómalo con calma, eso si, antes de hacer nada en real, es decir con tus Bitcoins de verdad, entiende PERFECTAMENTE lo que vas a hacer.
  • Dado el punto anterior te pido que antes leas el contenido completo, si es necesario tomate un par de días o los que necesites, el artículo estará aquí!!.
  • No vas a necesitar UN solo satoshi para experimentar con todo lo que aquí te voy a comentar e incluso si quieres experimentar, puedes usar todos los datos de este artículo sin tener que que usar tu HW, así que NO tengas miedo, vamos a realizar todo de manera segura para poder entender realmente el proceso.
  • Por último pero no menos importante, es necesario que entiendas el concepto de derivation path, si no lo tienes claro, pásate por aquí y dale una leída.

Sin embargo, si deseas ir directamente a lo pasos a realizar, puedes ir a ello a través de este resumen, aunque mi recomendación es que si no tienes experiencia previa con estos temas, te leas los pasos con la explicación.

Para poder seguir esta guía vamos a necesitar cumplir con algunas cosas básicas referentes a la computadora desde la que vas a trabajar y en referencia al software que se necesita:

Pre-requisitos:

  • Sistema Operativo Linux (y el software aquí mencionado instalado bajo el mismo equipo)
  • Bitcoin Core instalado, de preferencia la versión 0.19.1 o posterior.
  • Python 3 instalado en la computadora (la mayoría de las distribuciones de Linux lo tienen pre-instalado.
  • Electrum Wallet instalada en la computadora, de preferencia no instales la versión appimage, sino sigue las instrucciones que indican “Installation from Python sources”.
  • Leer este enlace donde explico como puedes configurar tu Nodo para que funcione como un entorno de pruebas, llamado regtest y deje un archivo de configuración que podrías usar para este caso.
  • Hardware Wallet ya sea Trezor o Nano, en teoría estas 3 generan de forma similar las claves publicas extendidas. Puede que haya otras, pero no las he probado.

Si no cumples con los pre-requisitos, puedes continuar leyendo sin problema, solo que a la hora de tratar de realizar los ejemplos te van a hacer falta.

Ultimo comentario antes de empezar, como ya comenté todos los datos que uso en este Caso, te pueden servir al 100%, porque todo esta realizado en el entorno de regresión (regtest), pero si deseas aprender de verdad te recomiendo seguir los pasos y obtener tus propios datos. Pero si por ejemplo no tienes una HW, usa estos datos sin problema.

Bueno, ahora vamos a ello.

Caso No 1 (Xpub de HW para importar en el Nodo).

Los ejemplos e imágenes de este ejercicio, los he realizado ejecutando todo en la red regtest. Regtest es una red local, que brinda la seguridad de que no usas Bitcoins reales. Otro beneficio de usar regtest es que no es necesario que conectes con ningún par para trabajar y tampoco es necesario que descargues la blockchain, por lo que es menos costoso trabajar en esta modalidad en términos de espacio que si lo hicieras con testnet, dónde si necesitas conectar con pares y descargar bloques.

Otra cosa y como ya comentamos hay unos pre-requisitos que cumplir así que vamos a usarlos ahora.

Lo primero que tenemos que hacer es revisar si tenemos instalado el soporte para HW de Bitcoin Core.

Es tan sencillo como escribir en una terminal de comandos de linux el comando hwi, si esta instalado tendrás una salida como esta:

$hwi

usage: hwi [-h] [–device-path DEVICE_PATH] [–device-type DEVICE_TYPE]
[–password PASSWORD] [–stdinpass] [–testnet] [–debug]

En caso de que el mensaje te diga que no lo tienes instalado, podrías instalarlo ejecutando el comando pip install hwi (recuerda que como pre-requisito debes tener instalado python) o mira en este link para instalar el soporte de HW para Bitcoin Core.

Obtención del fingerprint de la HW

Lo siguiente que vamos a hacer es obtener el fingerprint de nuestro HW, para ello es necesario encender y conectar nuestra HW al PC.

Una vez conectado ejecutamos el comando hwi enumerate, el cual nos dará un dato que vamos a requerir que es el fingerprint. El fingerprint es la “huella” de nuestro HW, es una especie de identificador (tienes que anotarlo porque es el que debes sustituir por el el que tengo en los ejemplos de este artículo/tutorial).

Si tu HW tiene passphrase seguramente tendrás que desbloquear antes tu dispositivo.

Nota: No olvides que toda esta información es sensible, por lo cual realiza estos pasos desde un ordenador seguro, libre de software malicioso y hazlo en un entorno privado, dónde no haya más gente que pueda observar, nunca se sabe.

Obtendrás algo como esto (el fingerprint de estos ejemplos es de un dispositivo Coldcard de pruebas pero los pasos y la información a obtener aplica para cualquiera de los tipos de HW que comentamos al inicio del artículo ya con Coldcard estos pasos los puedes realizar de forma completamente offline ):

$ hwi enumerate (aquí da igual usar o no la opción –testnet ya que el fingerprint es el mismo)

[{"fingerprint": "18734cbe", "serial_number": "205A32753042", "type": "coldcard", "path": "0001:0005:00"}]

Obtención del Xpub de la HW y el número de direcciones a pre-cargar en el pool de direcciones

Lo siguiente que vamos a realizar, una vez que conocemos la huella de nuestra HW, es obtener una Xpub para poder importar en nuestro Nodo, para ello ejecutaremos el comando:

$ hwi –testnet -f 18734cbe getkeypool --wpkh 0 5000
Dónde:

testnet indica que estamos en modo pruebas, cuando ya vayas a realizar estos pasos en la mainnet (la red real de Bitcoin) deberás eliminar este parámetro.

-f indica que a continuación va el fingerprint, es necesario para casi todos comandos de hwi (menos para enumerate que es el comando que te lo brinda).

Getkeypool es el comando que hwi que va a generar la Xpub para el tipo de dirección que indiquemos y nos generará una salida con los descriptores (información que Bitcoin Core requiere) para poder importar de primera instancia un rango de direcciones (las direcciones en realidad son un termino que se usa en Bitcoin para ayudarnos a abstraer temas complejos, ya que en realidad se tratan de scripts que generan diferentes salidas).

Para efectos de este artículo no voy a entrar a revisar todos los posibles descriptores a usar, colo voy a comentar los más usados, pero si quieres profundizar más, te dejo este link sobre los descriptores de Bitcoin:

pk — > Pay-to-pubkey scripts (direcciones legacy, de las primeras)

pkh — > Pay-to-pubkey-hash scripts (direcciones legacy, aún usadas)

wpkh —> witness-pubkey-hash scripts (direcciones segwit)

combo — > un set de direcciones de las anteriores

–wpkh es para efectos de este artículo el set de direcciones que se van a pre-cargar del tipo segwit y

0 (cero) a 5000 que serán el número de direcciones que van a pre-cargarse en la watch-only wallet.

Nota: no es que las direcciones estén en el Xpub, el Xpub es el mismo carguemos 1 0 500 direcciones, lo que sucede es que la salida de este comando va a estar pre-formateada de tal forma que pueda usarse directamente en el Nodo, y le dará la instrucción de pre-cargar ese número de direcciones.

La salida de nuestro comando sería esto:
[{«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/0/*)#5gvqrq5j», «internal»: false, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}, {«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/1/*)#9ufp74y2», «internal»: true, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}]

Marco solo en negrita aquellos datos que considero relevantes y que son:

  • el descriptor wpkh seguido del fingerprint y con el derivation path para una cuenta tipo segwit
    • Súper importante, como estamos ejecutando en la red que NO es la mainnet, el formato del derivation path de salida en este ejercicio es: m/84/1/0/<Xpub>/0/ cuando hagas el ejercicio en mainnet veras que la salida del comando será: m/84/0/0/Xpub>/0/ . Ese 1 en la red de testnet o regtest es el distintivo que hace saber al código que las cuentas que va a generar no son validas en una u otra red.
  • el número con la almohadilla al inicio, #5gvqrq5j, es un checksum, es in verificador que indica que el Xpub + su descriptor (wpkh) son par, es decir este checksum solo será valido para la combinación Xpub + wpkh, si quisieras cambiar el tipo de script por otro te daría un error al tratar de usar ese Xpub.
  • El rango de cuentas a importar (0 a 5000)
  • el indicador para que sean cargadas en la keypool
  • y watchonly true indicando que se cargaran sin las llaves privadas (watch-only)
  • Otra nota: la salida se “repite” 2 veces la diferencia es casi nula, solo un 1 en el derivation path del segundo descriptor para indicar las cuentas de cambio y un checksum propio de esas cuentas.

Dado que es muy importante entender lo que nos esta dando en información el comando, vamos a verlo en esta infografía, que espero quede mucho más claro y se entienda lo importante de los paths de derivación.

Yo creo que hasta aquí hemos llegado a la parte más lenta, pero que era importante ir entendiendo paso a paso lo que estamos haciendo, ahora iremos ya más rápido ejecutando comando que nos llevarán a tener nuestra cartera de vigilancia dentro de nuestro nodo.

Inicio del Nodo en la modalidad de regtest

Lo siguiente a realizar es arrancar nuestro Nodo, como indique al inicio vamos a realizar todo esto en regtest, que es un modo de probar en local todo y asegurarnos de que no realizamos nada que pueda perjudicar nuestros ahorros y nuestros sats.

Para ello, como indique al inicio necesitas haber configurado el Nodo, las indicaciones las tienes en este link.

Iniciamos el nodo con el comando:

$ bitcoind –regtest o si prefieres el entorno gráfico sería bitcoin-qt –regtest, eso ya al gusto de cada quién. Yo usare ambos, terminal para los comandos y gráfico para la parte de mostrar en la Wallet la información.

Así que para la terminal terminal vamos a iniciar el nodo con el comando bitcoind -regtest -daemon

Lo siguiente es crear nuestra cartera llamada “coldwallet”, para ello usamos el siguiente comando y veremos la salida en la imagen de abajo.

Crear cartera watch-only en el Nodo

(la Cartera para efectos del artículo la llame coldwallet , pero tu puedes ponerle el nombre que quieras)

$ bitcoin-cli --regtest createwallet "coldwallet" true
{
«name»: «coldwallet»,
«warning»: «»
}

Importar Xpub en cartera watch-only del Nodo

Importaremos en nuestra cartera creada en el paso anterior la Xpub con el comando (Ojo: en este comando no uso la opción –regtest porque da error, pero es totalmente seguro y sigues trabajando bajo regtest ya que así has iniciado el nodo):

$ bitcoin-cli -rpcwallet=coldwallet importmulti ‘[{«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/0/*)#5gvqrq5j«, «internal»: false, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}, {«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/1/*)#9ufp74y2», «internal»: true, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}]’

Nota: en este comando eliminar la opción –regtest porque si no dará un error

Validación de la creación e importación de la cartera

Validamos que la cartera se haya creado bien y todo este en orden con el comando

$ bitcoin-cli -rpcwallet=coldwallet getwalletinfo

Con esta salida, podremos ver que todo se ha creado de manera correcta y la cartera ya esta preparada, pero vamos a ver como se vería en la cartera del Nodo

Detener el Nodo en terminal para pasar a modo gráfico

Paramos la ejecución del Nodo para arrancarlo en modo gráfico:

$ bitcoin-cli stop y ya está!.

Iniciamos el modo gráfico con

$ bitcoin-qt –regtest

Apertura de la cartera creada en el Nodo

Al iniciarse el entorno gráfico tal vez lo primero que deberíamos hacer es abrir la cartera o monedero como lo llaman en la traducción de Bitcoin Core (si lo tienes en español), para ello vas a las opciones de Archivo/Abrir Monedero y seleccionas la cartera que hemos creado, en mi caso la que dice coldwallet como se ve en la imagen a continuación.

Ahora vamos a ver que ya tiene direcciones a las cuales pueden enviarles fondos

Ahora, como dije, vamos a probar que lo que hacemos funciona sin gastar un solo satoshi, en real, pero podemos gastar todos los que nos venga en gana en la regtest.

Así que vamos a ello, vamos a crear una nueva cartera en el nodo y a darnos el gusto de generar bitcoins!!

Antes de ello vamos a hacer una cosa, antes de cerrar la cartera que llamamos coldwallet, vamos al menú y en la opción de “Ventana” seleccionamos “Direcciones de recepción”, nos abrirá la venta que vimos antes con las direcciones que se han importado, podemos seleccionar una con el botón derecho del ratón y seleccionar copiar dirección, guárdala que la usaremos más adelante, en mi caso he seleccionado: bcrt1q005hcvqc4w2vp4d6ppp0ajx5pfzzjusphwemvd

Ahora si, vamos a cerrar el monedero que hemos creado, coldwallet, haciendo el proceso inverso de como lo abrimos.

Nos debería quedar solo abierta la cartera que se llama “monedero predeterminado” con eso nos basta, pero es importante a efectos del ejercicio que cierres la cartera coldwallet para que quede más claro.

Ahora abrimos una terminal de comandos de linux (la misma que usamos en los pasos anteriores) y vamos a ejecutar el siguiente comando:

Crear cartera de envío y Generar Bitcoins

bitcoin-cli -regtest generatetoaddress 101 $(bitcoin-cli -regtest getnewaddress)

Dónde:

  • generatetoaddres lo que va a realizar es generar 101 veces una recompensa de 50 bitcoins (nos hemos sacado la lotería!!) y nos las va a poner poner en una dirección de la cartera que este abierta en el nodo.
  • Ponemos que sea 101 veces porque una de las reglas de consenso es que los mineros no pueden gastar los Bitcoins hasta pasado 100 bloques, es solo para hacer el ejercicio más real, pero podríamos hacerlo con menos.

En la wallet del Nodo veríamos algo como esto.

Enviar Bitcoins

Ahora vamos a simular el envío de bitcoin con nuestros bitcoins minados, tenemos de sobra!.

Los pasos que vamos a dar son los siguientes:

  • Vamos a realizar un envió a la dirección que guardamos antes de cerrar la cartera “coldwallet”, para ello vamos a ir a la sección (imagen) que dice “Enviar”.
  • En la sección de “Enviar” ponemos la dirección en “Pagar a”, en el monto ponemos 1 bitcoin, estamos generosos!. Y Enviamos. (tienes más opciones pero no es menester de este artículo explicarlas todas, puedes luego jugar con ellas).
Realizar confirmaciones
  • Después de enviarlo vamos a simular que han pasado 7 confirmaciones, con el objetivo de que cuando vayamos a nuestra cartera watch-only veamos que nuestra transacción ya está confirmada, pero podrías dejarlos sin confirmar y de todas formas verías (sin confirmar), para ello ejecuto el mismo comando con el que mine los 101 Bitcoins pero ahora con solo 7: bitcoin-cli -regtest generatetoaddress 7 $(bitcoin-cli -regtest getnewaddress)


Ahí se ve nuestro envío, 7 confirmaciones por debajo de la ultima transacción realizada.

Verificación de recepción en la Watch-only wallet
  • Ahora cerramos la cartera abierta (Monedero predeterminado) y abrimos la cartera “coldwallet” y veremos el resultado, la transacción ya estará registrada en la blockchain y se verá reflejada en nuestra cartera. ¡Ya tenemos evidencia de que nuestra watch-only ha funcionado sin problema y con nuestro Bitcoin!!

Creación de una transacción PSBT de la Watch-only wallet desde el propio Nodo

  • Por último y para cerrar con broche de oro, vamos a generar una transacción para gastar parte de ese bitcoin recibido que solo podrías firmar desde Coldcard hablando de HW, como ya comentamos al inicio del artículo.

Todo el guion para este último proceso lo podrás ir siguiendo con las imágenes a continuación y dejaré en texto solo los datos o comandos relevantes (si los hubiera) para ya no hacer mucho más largo este artículo/tutorial!.

Usare una dirección de prueba cualquiera, una que he encontrado en un artículo, recuerda que estamos jugando en regtest, por lo cual las direcciones reales no funcionan pero lo más importante no puedes usar las de regtest en la red real. La dirección que usaré es esta: mwpKJNJ4UZL7yFyj53RSVcwauGAK84UvV2

A continuación todo el guion en imágenes:

Enviar

Seleccionar entradas

Poner datos: Dirección de envío, etiqueta (muy importante para control), importe, comisión, etc.

Revisamos datos (muy importante acostumbrase a hacerlo9, damos en “Crear sin firmar” y copiamos la TBPF

Dando click en el botón que indica que copiemos la TBPF (Transaction Bitcoin Partially Finaly) podemos importarla en nuestra HW para firmarla y posteriormente enviarla.

La transacción se vería así (esta en base64):

cHNidP8BAHQCAAAAATybuDAbp8WtvB/Aj/cmsPrcmn5bfzpQvRU0yl0WQnDjAQAAAAD9////AgAJPQAAAAAAGXapFLLKnkqioBNJyveXFVm0RKmQGvgsiKxw17gFAAAAABYAFEFmanMZkXWjReqydPmgidDsBKzvcwAAAAABAR8A4fUFAAAAABYAFHvpfDAYq5TA1boIQv7I1ApEKXIBIgYCHqmannzKwty4PTtafdHtUSPYyWIluJZWvao/N6CcKAsYGHNMvlQAAIABAACAAAAAgAAAAABlEAAAAAAiAgKv4y+TxNzx7mPqenfoZeBzdd4jenAR4snHzqMyZTMD6BgYc0y+VAAAgAEAAIAAAACAAQAAAAEAAAAA

Vericación y decodificación de la transacción desde el Nodo

Para validar que la transacción se generó bien y no tiene ningún problema podemos utilizar el comando analyzepsbt y si hubiera algún problema nos lo indicaría, sería ejecutar lo siguiente en la ventana de comandos:

bitcoin-cli -regtest analyzepsbt cHNidP8BAHQCAAAAATybuDAbp8WtvB/Aj/cmsPrcmn5bfzpQvRU0yl0WQnDjAQAAAAD9////AgAJPQAAAAAAGXapFLLKnkqioBNJyveXFVm0RKmQGvgsiKxw17gFAAAAABYAFEFmanMZkXWjReqydPmgidDsBKzvcwAAAAABAR8A4fUFAAAAABYAFHvpfDAYq5TA1boIQv7I1ApEKXIBIgYCHqmannzKwty4PTtafdHtUSPYyWIluJZWvao/N6CcKAsYGHNMvlQAAIABAACAAAAAgAAAAABlEAAAAAAiAgKv4y+TxNzx7mPqenfoZeBzdd4jenAR4snHzqMyZTMD6BgYc0y+VAAAgAEAAIAAAACAAQAAAAEAAAAA

También podríamos decodificar esta transacción con el comando decodepsbt, el resultado sería la transacción con todos sus inputs y outputs:

bitcoin-cli -regtest decodepsbt cHNidP8BAHQCAAAAATybuDAbp8WtvB/Aj/cmsPrcmn5bfzpQvRU0yl0WQnDjAQAAAAD9////AgAJPQAAAAAAGXapFLLKnkqioBNJyveXFVm0RKmQGvgsiKxw17gFAAAAABYAFEFmanMZkXWjReqydPmgidDsBKzvcwAAAAABAR8A4fUFAAAAABYAFHvpfDAYq5TA1boIQv7I1ApEKXIBIgYCHqmannzKwty4PTtafdHtUSPYyWIluJZWvao/N6CcKAsYGHNMvlQAAIABAACAAAAAgAAAAABlEAAAAAAiAgKv4y+TxNzx7mPqenfoZeBzdd4jenAR4snHzqMyZTMD6BgYc0y+VAAAgAEAAIAAAACAAQAAAAEAAAAA

No pongo la imagen de la salida del comando porque es muy grande, pero verías todos los datos de la transacción, muy interesante para entender como es una transacción.

Ya solo restaría firmar tu transacción, por ejemplo en Coldcard a través de la tarjeta SD puedes hacerlo. Una vez firmada podrías ejecutarla a través del propio Nodo, pero eso, estimado amigo, es otro artículo!.

Resumen

Obtención del fingerprint de la HW

Comando: $ hwi enumerate

Salida: $ [{«fingerprint»: «18734cbe», «serial_number»: «205A32753042», «type»: «coldcard», «path»: «0001:0005:00»}]

Obtención del Xpub de la HW y el número de direcciones a pre-cargar en el pool de direcciones

Comando: $ hwi –testnet -f 18734cbe getkeypool –wpkh 0 5000

Salida: [{«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/0/*)#5gvqrq5j», «internal»: false, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}, {«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/1/*)#9ufp74y2», «internal»: true, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}]

Inicio del Nodo en la modalidad de regtest

Comando: $ bitcoind -regtest -daemon

Salida: Ninguna, si todo va bien el nodo se inicia sin mostrar salida alguna.

Crear cartera watch-only en el Nodo

Comando: $ bitcoin-cli –regtest createwallet «coldwallet» true

Salida: {
          “name”: “coldwallet”,
          “warning”: “”
        }

Importar Xpub en cartera watch-only del Nodo

Comando: $ bitcoin-cli -rpcwallet=coldwallet importmulti'[{«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/0/*)#5gvqrq5j», «internal»: false, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}, {«desc»: «wpkh([18734cbe/84h/1h/0h]tpubDCQUid7gmQWq7GLdF6D7fN8RFvEocAUUSxE1Sy74aqtCBgZ8pbPCGSNKpA8nGR8HwN9agAHS4kgngs2Ey9VVFgPKz8cDvBHHZ9sCqAtUVQK/1/*)#9ufp74y2», «internal»: true, «range»: [0, 5000], «timestamp»: «now», «keypool»: true, «watchonly»: true}]’

Salida: [
          {
            “success”: true
	   },
          {
             “success”: true
	  }
	]

Validación de la creación e importación de la cartera

Comando: $ bitcoin-cli -rpcwallet=coldwallet getwalletinfo
Salida: Como salida veras una lista de las características de la cartera como nombre, versión, balance, etc. (en el detalle del ejercicio más arriba veras una imagen de ejemplo)

Detener el Nodo en terminal para pasar a modo gráfico

Comando: $ bitcoin-cli -stop
Salida: ninguna si todo ha ido ok.

Arrancar el Nodo en modo gráfico Comando

Comando: $ bitcoin-qt –regtest
Salida: ninguna si todo ha ido ok se muestra la venta de la cartera del Nodo.

Hasta aquí la información sobre la creación de la cartera, continua con el envío de bitcoins a la cartera, para ello te recomiendo retomar el artículo a partir de aquí (Apertura de la cartera creada en el Nodo ).

Bueno, si has llegado hasta aquí, creo que ambos nos merecemos un aplauso (y una cerveza!), la verdad es que es un artículo largo pero creo que merece la pena para conocer y entender no solo como crear una watch-only wallet, sino el paso a paso de lo que sucede y lo que significan los diversos componentes que intervienen en su creación, así como los diferentes comandos que intervienen.

Si te ha gustado o te ha resultado de utilidad, por favor déjamelo saber con un comentario por twitter en mi cuenta, al igual que si tienes alguna duda, nunca dejo una consulta sin responder: @decentralized_b

También si lo deseas puedes dejarme una propina, te lo agradeceré mucho y me motiva a seguir generando contenido ya que con ello podré tener más tiempo para hacerlo.

Pero lo más importante, si crees que puede ayudar a otros más, compártelo, yo hubiera querido encontrar material tan extraordinario como el que se esta generando cada vez aquí, en Estudio Bitcoin y en dinerosinreglas.com (dónde también público).

No olvides que tenemos pendiente la segunda parte, dónde veremos como importar un Xpub de una cartera de Electrum, seguimos con más!!.

Sobre el autor de este artículo