Explorador de bloques de Bitcoin

btc-rpc-explorer

BTC-RPC-EXPLORER

btc-rpc-explorer es un explorador desarrollado por https://github.com/janoside que permite visualizar la actividad de la red de Bitcoin desde tu propio nodo, me parece una excelente opción para continuar con el aprendizaje de Bitcoin y además para poder visualizar tus transacciones y las de la red.

Recordemos que puedes ver todas las operaciones que hay en la red, aunque no sepas de quién son y eso es lo genial!.

 

He realizado esta guía para documentar los pasos que seguí para instalar btc-rpc-explorer y con ello poder conectarlo con mi nodo.

La instalación ha sido realizada en una laptop con fedora 31 y Bitcoin core 0.19.0.1. (he actualizado el equipo a fedora 33 y Bitcoin Core 0.21.0 y no he tenido ningún problema)

Entiendo que las configuraciones deben similares en los entornos linux pero no tengo certeza de que funcione en windows.

 

Como las propias indicaciones de la descarga en el sitio oficial indican, para poder hacer uso de este explorador debes cumplir con los pre-requisitos los cuales son:

  • Aunque sea obvio, debes tener un nodo completo instalado al que conectar este explorador
  • El nodo debe tener habilitado el indexado completo (cuando lo ejecutaste debiste habilitar la opción -txindex=1)
  • Debe aceptar comandos RPC (en el archivo bitcoin.conf debes tener la opción server=1 habilitado)
  • Es indispensable que tengas instalado en el equipo desde dónde vas a ejecutar el explorador una versión igual o superior de Node.js a la versión 8. En el caso de fedora 31, ejecute las instrucciones:
    • sudo dnf install npm nodejs (en Ubuntu es sudo apt-get install npm nodejs, si no recuerdo mal).
    • Las versiones instaladas fueron: npm 6.13.4 y nodejs v12.13.1

Nota: en mi caso no lo he ejecutado con Docker, por lo que esta guía no cubre esa parte.

  • Paso 0. Lee todo antes de hacerlo, tal vez algún paso no sea tan claro y es mejor que lo entiendas antes de irlos ejecutando.
  • Paso 1. Ingresa al sitio https://github.com/janoside/btc-rpc-explorer y sigue las instrucciones del propio sitio para su instalación pero no ejecutes el explorador todavía.
  • Paso 2. Asumiendo que durante la instalación de nodejs no tuviste ningún problema sigue al paso 3, si tuviste algún problema, busca la solución porque es muy probable que tengas problemas con la ejecución, necesitas nodejs para ejecutar el explorador.
  • Paso 3. Antes de ejecutar el explorador de manera definitiva, en mi experiencia, hay un par de cosas que debes asegurar.
    • Asegúrate que lo ejecutas con los permisos y la configuración en tu nodo de forma correcta para poder realizar comandos RPC.
    • Lo primero con lo que me tope es que en mi nodo la configuración no era correcta, por lo cual debes asegurarte de lo siguiente:
      • En el archivo bitcoin.conf del nodo debes tener habilitado lo siguiente para permitir comandos y que la seguridad no te falle, este archivo suele estar localizado en la ruta ~/.bitcoin:
          • #extracto del archivo bitcoin.conf
          • # Allow JSON-RPC connections from specified source. Valid for are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times.
          • Server=1 #esto es lo que indica que tu nodo puede recibir comandos RPC
          • rpcallowip=127.0.0.1/24 #REVISA QUE ESTAS IPs SEAN LAS QUE TU QUIERES HABILITAR, en mi caso la ejecución del explorador es desde la misma maquina dónde esta el nodo por lo que dejo las IPs como están en este ejemplo, pero se puede configurar para que reciba conexiones desde otras direcciones
          • # Auth Credentials For JSON-RPC server
          • rpcauth=myusername:734726552070792922ceac7ca630c820$17f7d80df7ee7b9dab12d0c017de8c7379b4611de7338445ea5d31d8b3fa99dd –> Ahora te explico de dónde sale esto.
        • Necesitas obtener el rpcauth y otro dato que no va aquí, pero que vas a necesitar (es el password), para obtnerlos es necesario ejecutar la siguiente instrucción (debería estar habilitada con la descarga de tu nodo Bitcoin):
          • rpcauth.py myusername

            la instrucción a ejecutar desde una terminal debería ser solo algo así: python3 rpcauth.py myusername

            Esto te devolverá como salida lo siguiente:

            String to be appended to bitcoin.conf:

        • rpcauth=myusername:734726552070792922ceac7ca630c820$17f7d80df7ee7b9dab12d0c017de8c7379b4611de7338445ea5d31d8b3fa99dd
        • Your password:
        • yPL8WKwYoHu5e1qt7ka38TP6xlFssut5YnSpmxaqfdU=

 

Como podrás ver la salida de ese comando te da el dato rpcauth que debes poner en el archivo bitcoin.conf (rpcauth=……….)

 

El password es un ash que debes guardarte ya que lo vas a necesitar, yo no lo he incluido en el bitcoin.conf, aunque podrías hacerlo poniéndolo en la variable rpcpassword=hasdetupassword

Si tienes problemas para ejecutar este comando descargalo desde el Github usando la siguiente instrucción:

wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py

Y después ejecuta:

rpcauth.py myusername

 

Esto te debería arrojar una salida igual a la anteriormente indicada:

(String to be appended to bitcoin.conf:

rpcauth=myusername:c439fbb5150c3a58079ad06b03c971fa$25fc8f8c89c79a8ce38ba9790861fdff4dc2916c23f8d31b7e9b65312d186d3c

Your password:

NjVnDAbNOMU9YLFVI7-okFNJ0PPhA3x_iyFglHO9AXM=)

 

Si tienes problemas busca esto mismo en esta url: https://www.buildblockchain.tech/blog/btc-node-developers-guide

Con esto incluido en tu archivo bitcoin.conf (no olvides reiniciar el nodo), ya tenemos configurado el nodo para ejecutar comandos RPC.

 

  • Paso 4. Tienes que configurar (si aún no lo has hecho) el archivo btc-rpc-explorer.env el cual en mi caso tuve que poner en la ruta ~/.config/btc-rpc-explorer.env

En este archivo que viene de ejemplo en el sitio desde dónde descargaste el explorador, hay varias variables que podrías cambiar, pero para efectos prácticos yo he dejado casi todo en la configuración por defecto (default) y solo he cambiado lo siguiente:

    • DEBUG=* #quitando el carácter “#” para habilitar la función de depuración, por lo menos al inicio y ver que posibles errores te puede dar (esperemos que ninguno)

    • BTCEXP_BITCOIND_USER=myusername #es el usuario que usaste en el comando rpcauth

    • BTCEXP_BITCOIND_PASS=yPL8WKwYoHu5e1qt7ka38TP6xlFssut5YnSpmxaqfdU= #la passwd que obtuviste con la ejecución del comando rpcauth

    • BTCEXP_BITCOIND_COOKIE=/.bitcoin/.cookie #esta ruta no la hemos comentado, pero es dónde tu nodo genera la cookie de autenticación la puedes buscar en tu archivo debug.log donde esta ejecutándose bitcoin (normalmente ~/.bitcoin/debug.log): “Generated RPC authentication cookie /.bitcoin/.cookie

    • Otra variable que cambie fue:

      • BTCEXP_BASIC_AUTH_PASSWORD=passworddeaccesodesdelaweb #esto estable una contraseña para que quién quiera entrar desde un navegador la tenga que introducir, como dice la propia documentación de btc-rpc-explorer se pedirá, desde el navegador un usuario y una contraseña (la que pongas aquí) y solo se valida esto último.

 

Una vez que tengas esto, ya solo sigue probar que esta todo ok, pero …..

Ejecuta el explorador desde una terminal con el siguiente comando:

btc-rpc-explorer #si obtienes un error que dice:

      • “btcexp:error Error 2379gsd7sgd334: Error: ENOENT: no such file or directory, open ‘CHANGELOG.md’, json: {«errno»:-2,»code»:»ENOENT»,»syscall»:»open»,»path»:»CHANGELOG.md»} +0ms”

        Pasa de el, me tire horas viendo que podría ser y al fina para ser un problema de que no encuentra un archivo (CHANGELOG.md) que además no influye en absoluto en la ejecución.

    •  
      • Si no obtienes ese mensaje y te indica un mensaje como el siguiente;

        “btcexp:error Error 32euofeege: Error: no auth mechanism defined, json: {«cause»:{},»isOperational»:true}, userData: [object Object] (json: {«cmd»:»getnetworkinfo»}) +17ms

        btcexp:error Stack: Error: no auth mechanism defined”

        Tienes que asegurarte que el archivo de configuración btc-rpc-explorer.env esta bien configurado y que esta en la ruta ~/.config/ si todo esta ok, prueba poner el mismo archivo en la ruta ~/.env/

    •  
      • Si te sigue dando problemas, prueba ejecutarlo desde la terminal con las siguientes opciones:

        btc-rpc-explorer –bitcoind-user myusername –bitcoind-pass yPL8WKwYoHu5e1qt7ka38TP6xlFssut5YnSpmxaqfdU= –bitcoind-cookie /.bitcoin/.cookie

        Recuerda, bitcoind-pass la password obtenida al igual que bitcoind-user y bitcoind-cookie la ruta de la cookie RPC autogenerada por bitcoin.

Si después de esto tienes problemas, lamento decirte que tienes que investigar que más podría ser o avísame y estaré dispuesto a ayudarte (telegram: https://t.me/Decentralizedb).

 

Si todo ha ido bien, enhorabuena, tienes que darle las gracias a https://github.com/janoside que son los que han desarrollado este magnifico explorador.

 

 

Funcionalidad adicional

Una cosa que también puedes ver desde el cuadro de mando de tu explorador es el precio de bitcoin al momento de ejecutar tu explorador.

En principio, según las instrucciones del sitio de Janoside bastaría con tener en tu archivo de configuración ~/.config/btc-rpc-explorer.env configurado lo siguiente:

BTCEXP_NO_RATES=false

Sin embargo en mi caso, me encontré con que no tomaba esa configuración, por lo cual tuve que investigar un poco más y encontré que donde tenía que cambiar el valor era en el archivo que se llama config.js que se encuentra en la ruta ~/btc-rpc-explorer/app o si no lo localizas ahí o no te toma el valor de ahí en la ruta /usr/local/lib/node_modules/btc-rpc-explorer/app y buscando que la siguiente línea quede como sigue:

queryExchangeRates: (process.env.BTCEXP_NO_RATES.toLowerCase() != «false«),

 

Explorador BTC

 

 

 

Nota adicional.

Para no tener que estar ejecutando esto desde un terminal todo el tiempo y como una opción, una vez que me di cuenta que todo se ejecutaba de manera correcta, me he configurado un archivo para ejecutar como si fuera una aplicación.

 

La ventaja es que no tienes una terminal ejecutando, la desventaja, es que no podrás ver los mensajes que te pueda dar por consola (terminal) si algo va mal, por eso es algo opcional.

Lo que hice fue crear un archivo de texto llamado btc-explorer.desktop en la siguiente ruta:

~/.local/share/aplications/

el cual tiene lo siguiente:

[Desktop Entry]

Categories=Tools;

Comment=Blockchain explorer

Encoding=UTF-8

Exec=btc-rpc-explorer -a passwordParaIngresarDesdelaWeb –bitcoind-user myusername –bitcoind-pass yPL8WKwYoHu5e1qt7ka38TP6xlFssut5YnSpmxaqfdU= –bitcoind-cookie ~/.bitcoin/.cookie

MimeType=text/html;

Name=btc explorer

Type=Application

X-DBUS-ServiceName=

X-DBUS-StartupType=

Los campos marcados en negritas deben de ser sustituidos por los valores que tú tengas configurados. 

Esto permite ejecutarlo como si fuera una aplicación más a través de la interfaz gráfica.

 

 

5/5

Puedes dejar una propina con el botón «Invítame un café».

O mediante Lightning network:

⚡[email protected]

También puedes hacerlo onchain, vía Paynyms de Samourai Wallet:

PayNym: +decentralized