Saltar al contenido

¿Y después de instalar un Nodo qué? (segunda entrega)

Uso de comandos en el Nodo

Como comentamos en la primera entrega, una de las cosas que nos suele venir a la cabeza después de instalar un Nodo Completo es ¿y ahora qué puedo hacer?.

Otra cosa que pensamos es “el nodo solo me va a servir si tengo Bitcoin, si no, no me vale para nada”.

Nada más lejos de la realidad, no hace falta tener un solo satoshi para poder empezar con un nodo y aprender como funciona la red de Bitcoin.

Este punto lo resalto porque cada vez que me decían que podría ayudar a Bitcoin, me costaba entenderlo, pero una vez que probé por mi propia cuenta la instalación y configuración de un Nodo, ¡lo entendí!.

Obviamente no es el objetivo replicar aquí todos los comandos, si quieres indagar más, todos los comandos tienen una ayuda, para activarla basta con que ejecutes desde una terminal de Linux lo siguiente: bitcoin-cli help <comando> y te mostrará las instrucciones e información de ayuda.

Para asegurar que los comandos están activos es necesario activar en el archivo de configuración de bitcoin.conf (del cual hablamos en la primera entrega) la opción server=1.

El software proporciona una interfaz de comandos que se realizan a través de un procedimiento remoto de ejecución o RPC por sus siglas en inglés (Remote Procedure Call) y para evitar problemas de configuración o compatibilidad de clientes RPC, Bitcoin provee su propio cliente para la ejecución de comandos a través del cliente bitcoin-cli por lo cual este es el interprete de línea de comandos desde la terminal. Antes de ejecutar cualquiera de los comandos especificados más abajo, tendrás que escribir bitcoin-cli, por ejemplo: bitcoin-cli getnetworkinfo

Vamos a revisar algunos comandos interesantes y que para mi fueron de utilidad en el aprendizaje básico de Bitcoin. Siempre con la visión de que puedas entender y aprender lo que esta sucediendo por debajo, desde tú propio nodo.

Empecemos por temas sencillos y básicos, como sabrás Bitcoin es una red P2P lo cual significa que estas conectado a otros nodos, ¿cómo puedes saberlo? Y ¿cómo obtener información de eso?:

  • El comando getnetworkinfo te permite, dada la configuración que hayas puesto en el archivo bitcoin.conf, ver la conexión de tu nodo, la versión de tu cliente y tu dirección de conexión entre algunas cosas más.
  • Ahora, si quieres saber qué nodos están conectados al tuyo, el comando getpeerinfo te permite obtener la información de todos los nodos conectados al tuyo.
  • Si por algún motivo quieres desactivar la conectividad P2P de tu nodo, no es necesario salir del programa, con setnetworkactive activas o des-activas la conectividad. Por ejemplo, bitcoin-cli setnetworkactive false —> desactiva la conexión P2P de tu nodo, sin necesidad de apagarlo, no aceptará conexiones hasta que no lo habilites (true).

Muchas veces nos preguntamos, si tenemos habilitadas las conexiones entrantes al nodo (más detalles en la entrega 1), ¿porqué casi no hay pares o nodos conectados a nuestro nodo? o al contrario, ¿porqué hay muchos?. Bueno, eso se debe a que conforme el nodo esta más tiempo conectado a la red va adquiriendo mayor “calificación” (score) de confianza por la red, mientras más confianza, más nodos sabrán de tu existencia. ¿Y cómo saberlo?, el comando uptime en su respuesta, te dirá el tiempo total que el nodo ha estado ejecutándose en formato de segundos.

Ahora, si queremos conocer algo más sobre lo que se mueve por la red, saber ¿qué esta sucediendo?, ¿cuál es el estado de la red y de la blockchain?, podemos usar los siguientes comandos:

  • Con el comando getblockchaininfo obtendremos la información de la blockchain y de ahí varios datos muy valiosos, por ejemplo, podríamos tomar el dato chainwork el cual nos dirá un aproximado en hashes de cuanto trabajo es necesario para recrear la blockchain actual; otro campo de salida, de los varios que tiene este comando, es el tamaño de la blockchain en tu disco duro o el número de bloques que componen la cadena.
  • Con getmininginfo obtenemos información sobre los bloques minados, nos da no solo el número de bloques minados, sino la dificultad con la que la red esta trabajando en este momento, el número de transacciones sin confirmar, así como el hashrate de poder de minado de la red.
  • Otro comando de información de la red y la blockchain podría ser getchaintxstats, de la ejecución de este comando el campo txcount te dice el total de transacciones que hay en la red en ese momento,entre otra información.

¿Y que pasa con la información “monetaria” (los UTXOs)?, pues para conocer sobre eso y las transacciones de la red puedes usar:

  • El comando gettxoutsetinfo, uno de mis favoritos ya que te permite calcular algunas estadísticas sobre la base de datos de UTXOs que cada nodo de Bitcoin mantiene. Aquí algunos de los campos de salidas más relevantes:
    • transactions: el número total de las distintas transacciones a las que pertenecen los UTXO contenidas en la base de datos del nodo.
    • txouts: el número total de UTXO en la base de datos del nodo.
    • hash_serialized_2: el hash de toda la base de datos serializada. Se podría usar este valor para compararlo con el mismo valor en otros nodos (validando que tienen el mismo height block), con la finalidad de verificar la integridad del UTXO set.
    • Y el que para mi es el dato más genial de todos, el total_amount: Indica el valor (en Bitcoins) de todos los UTXOs,esta sería la mejor estimación posible que podrías obtener de la cantidad de Bitcoins en circulación. Es una estimación ya que por ejemplo no considera los 50 BTC del bloque génesis ni algunos Bitcoins perdidos debido a un bug de hace mucho tiempo en el protocolo y que dio origen al BIP30.

Por toda esta información que brinda este comando, al ejecutarse tarda un poquito más que otros comandos.

Hasta aquí, todo bien, pero ¿y qué hay con las carteras?, ¿sólo se puede interactuar con ellas desde el cliente GUI de Bitcoin Core?, la respuesta es no, puedes interactuar con ella desde los comandos y SIN tener un solo satoshi, como ya te había dicho.

  • createwallet, tal vez sea de los comandos que más deberíamos entender y estudiar, ya que crear una cartera no es suficiente, debemos entender que tipo de cartera podemos crear. Con este comando puedes crear tu cartera, y además como varios de los comandos de Bitcoin, puedes pasarle algunos parámetros, por ejemplo para darle nombre o des-habilitar las claves y crear una billetera watchonly. Por ejemplo vamos a crear una cartera watch only vacia:
  • Con getnewaddress y un par de parámetros opcionales “label” y “address_type”, puedes crear tantas direcciones como quieras para recibir tus pagos, crear tus etiquetas y darles un tipo de dirección (legacy, multifirma o segwit), entre otras cosas súper importantes. Por ejemplo para creas una dirección Legacy cuya etiqueta sea «nuevaDireccionSoloLegacy» ejecutariamos: bitcoin-cli getnewaddress nuevaDireccionSoloLegacy legacy y la dirección sería la de la imagen
  • validateaddress, si quieres validar una dirección, con este comando y como parámetro la dirección que quieres revisar, te dirá si la dirección es valida, si es witness y algunas otras cosas más.
  • El comando sendtoaddress, te permitiría realizar el envió, por ejemplo de 10 satoshis, a una dirección a través del comando: sendtoaddress <ADDRESS> 10.00 Este comando tiene variedad de parámetros que podrías usar como por ejemplo: subtractfeefromamount=true y la comisión es descontada de los 10 satoshis y no de tu saldo total, con los 3 primeros parámetros sería suficiente, como respuesta tendrías el transaction id (txid), el cual te da acceso a otros comandos para ir viendo como se mueve tu transacción en la blockchain y en la red.
  • Otro comando de ayuda podría ser el comando setlabel, recibe de entrada una dirección y un texto o etiqueta, ambos parámetros son obligatorios; con esto le asignas una etiqueta a la dirección que hayas usado, esto es útil para mantener organizada tu información y saber en ¿qué o para qué? haz usado esta dirección y por ejemplo si luego usas el comando getreceivedbylabel, el cual recibe de entrada una etiqueta y otro parámetro de manera opcional que es el número de confirmaciones tendrás el total de bitcoin agrupado bajo esa etiqueta.

Estos son algunos ejemplos sencillos, al final dejo una lista no completa, pero si de cuantos comandos hay por cada categoría, si quieres la lista completa, instálate un nodo y juega con ellos!!

Aquí otros comandos esperando que te puedan dar más luz sobre todo lo que puedes hacer en y con tu nodo, para entender mejor como funciona Bitcoin.

getdifficulty: Te permite conocer la dificultad con la que los mineros están trabajando para ejecutar el proceso de validación de trabajo (PoW)

getbestblockhash: Con este comando puedes obtener el valor hash del bloque más reciente dentro de la cadena principal de blockchain

getblock: Con este comando  puedes, pasándole el hash de un bloque en particular, conocer la información del bloque y de todas las trx que contiene

getblockcount: Te permite obtener el numero del bloque actual en la blockchain

getblockhash: Te permite obtener el número de un bloque en particular, puedes obtener el hash de ese bloque; por ejemplo con un cero, obtendrás el hash del bloque génesis

getchaintips: Para saber si tu nodo esta conectado a la cadena principal, este comando  te dirá si tienes al menos un bloque invalido, si es un fork valido (que tiene todos los bloques validos pero aún no se conecta a la red principal), entre otras cosas.

getmininginfo: Te permite obtener información sobre el último bloque minado valido

getmempoolinfo: Te permite obtener la información sobre el pool de memoria, su tamaño y el estado de las transacciones. (El pool de memoria es muy importante para determinar el nivel de saturación de la red, si el tamaño del pool es alto significa que hay muchas trx esperando ser confirmadas y añadidas a los bloques, lo cual seguramente signifique que las comisiones por trx se elevaran)

gettransaction: Te permite obtener la información sobre una operación o transacción de tu wallet (con este comando no puedes ver trx que no sea de tu propia wallet).

Los comandos de acuerdo a la ayuda proporcionada por el propio software de Bitcoin Core, se divide en las siguientes categorías (recuerda hablamos de Bitcoin Core v.0.19.1):

  • Blockchain (25 comandos)
  • Control (6 comandos)
  • Generating (2 comandos)
  • Mining (6 comandos)
  • Network (13 comandos)
  • Rawtransactions (17 comandos)
  • Util (7 comandos)
  • Wallet (55 comandos)
  • Zmq (1 comando)

Espero que si has llegado hasta aquí y no has tirado la toalla, te haya quedado claro que existe una gran variedad de formas de interactuar con tu nodo, de conocer lo que sucede en la red y lo más importante, de estudiar para seguir aprendiendo.

Como ya he mencionado en la entrega anterior, esta investigación la he realizado por mi propia cuenta con el afán de ir aprendiendo, por lo que no está exenta de algún mal entendido por mi parte. Si detectas algún error te agradecería que me lo hicieras saber, toma en cuenta que la idea es poder dar información veraz a otros usuarios. No hay mayor interés de mi parte que ayudar a los que como yo vamos aprendiendo con la práctica.

Sobre el autor de este artículo

Desde que conocí Bitcoin me he vuelto un admirador de sus conceptos, su filosofía y de toda la tecnología que emerge a su alrededor. Mi objetivo y misión, es el tratar de facilitarle las cosas, a muchos que como yo, están buscando información que les ayude a adentrarse en este fantástico mundo.
¿Te ha sido útil esta madriguera? Puedes dejarme una propina via Lightning network
Decentralized.b

Paynyms (Samourai Wallet)

PM8TJR2yPtx5JS8e8CuwXBZMay67mg1RKrtVptBRZQD5qCyZc1rosVCbScFmzgYYrQtVmc6cJZ2hCK2nBra3KAXxXCKPU4K4vRPjnBqGCYKYRUwimKnA
+crimsontruth10e