sábado, 17 de marzo de 2018

Bitcoin Core: Modo Consola - Cartera

En este artículos veremos algunos comandos relacionados con la cartera de Bitcoin Core:
  • Información de la cartera
  • Encriptar la cartera
  • Desbloquear la cartera
  • Obtener la clave privada
  • Cerrar la cartera
  • Cambiar la clave de cifrado de la cartera
  • Importar clave privada




Información de la cartera

Podemos obtener una información básica de nuestra cartera utilizando el siguiente comando:

getwalletinfo


Nos muestra la siguiente información:
  • walletname: nombre del fichero donde se almacena nuestra cartera
  • walletversion: versión del monedro
  • balance: bitcoins asociados al monedero
  • unconfirmed balance: bitcoins en transacciones no confirmadas
  • immature_balance: Las monedas inmaduras son monedas que se crearon en una recompensa de bloque y aún no han "envejecido" lo suficiente. El problema con las recompensas por bloque es que aún podrían desaparecer nuevamente, si el bloque generador termina siendo invalidado. Con el fin de minimizar la confusión y los problemas posteriores de alguien que gasta monedas que terminan desapareciendo más tarde, las recompensas de bloque se consideran inmaduras hasta que otros 100 bloques descienden del bloque generador. Después de aproximadamente 16 horas y 40 minutos (se mina un bloque cada 10 minutos con lo que 16 horas x 6 bloques/hora + 4 bloques = 100 bloques), las monedas están maduras y se consideran seguras para gastarse.
  • txcount:Número total de transacciones en el monedero
  • keypoololdest: Por defecto, Bitcoin Core crea 1.000 direcciones (keypool) la primera vez que se inicia, e intenta mantener 1.000 claves aún no utilizadas en wallet.dat. keypoololdest indica la hora en que se generó la clave más antigua aún no utilizada en formato Unix (http://www.onlineconversion.com/unix_time.htm)
  • keypoolsize: Tamaño de keypool (claves pregeneradas)
  • keypoolsize hd internal: Cantidad de claves pregeeradas de uso interno (solo si el monedero usa esta característica)
  • paytxfee: Configuración de la tarifa de transacción, establecida en BTC / kB
  • hdmasterkeyid: Hash160 de la calve pública maestra.

Esta información es interesante, pero lo que es más interesante es el formato en la cual la obtenemos, ya que si eres desarrollador podrás identificar rápidamente que es un JSON, lo que lo hace sumamente sencillo de utilizar por otros lenguajes de programación e incluso su lectura es bastante fácil a la vista humana.

Encriptar la cartera

Para encripar la cartera utilizamos el comando:

encryptwallet [contraseña]

Después de utilizar este comando, tal y como sucedía al utilizarlo a través de la interfaz gráfica del programa, Bitcoin core se cerrará. La próxima vez que abramos el programa la cartera estará encriptada y antes de realizar muchas de las operaciones con la misma deberemos desencriptarla.

Ahora, si ejecutamos el comando getwalletinfo obtendremos la siguiente información:


y obtenemos un nuevo parámetro:
  • unlocked until: nos da 0 si la cartera esta bloqueada o ttt que es la fecha (en formato Unix) en que la cartera está desbloqueada.

Desbloquear la cartera

Previo a realizar muchas operaciones hay que desbloquear el monedero en el caso de que lo hayas cifrado previamente. Para ello hay que introducir el comando:

walletpassphrase [palabra secreta][timeout]

donde
  • palabra secreta: es la palabra que elegimos para encriptar nuestro monedero
  • timeout: es el tiempo que nuestro monedero permanecerá desencriptado en segundos

Ejemplo: walletpassphrase 123456789 1200

Este comando desbloqueará nuestro monedero durante 20 minutos. Si la operación es correcta contestará con null:



Obtener la clave privada

Si perdemos el monedero y no conocemos la clave secreta, nunca podremos recuperar el saldo de bitcoins que teníamos, Por ello, es importante averiguar la clave privada de nuestro monedero y guardarla a buen recaudo. Para ello utilizamos el comando:

dumpprivkey [clave pública]

Nota: recuerda que nuestro monedero puede contener varias "cuentas" por lo que es necesario especificar la clave pública de la que queremos obtener nuestra clave privada.

Ejemplo: dumpprivkey 35jcg8QV3iREy8ZVnY1HXqD1MrugHrafk1


Como podemos apreciar la consola nos devuelve la clave privada asociada a la clave pública.

Cerrar la cartera

Una vez que hayamos operado con nuestro monedero es aconsejable cerrarlo. Para ello hay que ejecutar el comando:

walletlock

y la consola nos contestará con null. ahora, si queremos, por ejemplo, volver a obtener nuestra clave privada nos saldrá un mensaje de error:



Nota: usando las teclas de dirección (arriba y abajo) podremos seleccionar los comandos previos utilizados mientras la consola esté activa. Si se pulsa [CTRL + L] dicho historial de comandos" se borrará.

Cambiar la clave de cifrado de la cartera

Para esta operación utilizamos el comando:

walletpassphrasechange "palabra antigua" "nueva palabra"

Ejemplo: walletpassphrasechange 123456789 987654321

Si la operación se realizó con éxito la consola nos devuelve null

Importar clave

Si queremos importar una clave privada a nuestro monedero debemos utilizar el comando:

importprivkey [clave privada] ["etiqueta"] [reexplorando]

donde
  • clave privada: clave que queremos importar
  • etiqueta: etiqueta que queremos asociar a esta clave privada. La etiqueta estará entre comillas en el caso de utilizar espacios en la etiqueta.
  • reexplorando: Si se deja esta opción en blanco el programa realizará una exploración del blockchain para obtener las transacciones y el saldo de la clave privada. En caso de indicar false no se realizará esta exploración. Esto es útil cuando se importa varias claves y, a la última, se deja en blanco para que realice la exploración.

Nota: es importante señalar que para realizar la importación de una clave privada existente es conveniente tener el blockchain completamente sincronizado.

Ejemplo: importprivkey 5K2doXt2VahUg2ZK9AQkxLQTfi6cWh6kUce4FQR9UqixwHbSDbr "clave importada"

A continuación nos aparece una ventana que nos indica:



Nota: esta exploración puede durar un buen rato dependiendo de la velocidad del PC y del tamaño del blockchain. Durante este tiempo, el programa dejará de responder.

Si no ocurre ningún error, al finalizar la exploración, la nueva clave aparecerá en la interfaz de nuestro monedero. Paraello has de elegir la opción del menú Archivo → Direcciones de Recepción


Nota: para realizar esta prueba he generado una nueva clave utilizando la web walletgenerator:



Clave privada: 5K2doXt2VahUg2ZK9AQkxLQTfi6cWh6kUce4FQR9UqixwHbSDbr
Clave pública: 1H58jHZz3B38teXMKHiy5TTznknnDZ1UnC