MASTERING BITCOIN
Tabla de contenidos:

Instalación de Bitcoin Core en Linux Ubuntu con línea de comandos

Autores

@decentralizedb, @bitao36, @dulcedu

Cómo empezar

Si eres totalmente nuevo en Bitcoin te recomendamos leer:

Lectura sobre nodos

Six reasons you should run bitcoin node

Podcast sobre que me aporta tener un nodo de Bitcoin

▶️ Videotutorial

Cómo levantar un nodo completo de Bitcoin en red testnet con Linux Ubuntu

Hay cuatro formas de instalar un nodo de Bitcoin, voy a enumerarlas empezando de la más fácil a la más difícil:

  1. Con software plug & play como Umbrel, RaspiBlitz, Runcitadel o similares. Estos programas tienen instaladores para raspberry pi y también pueden correr en PCs con sistema Linux.
    En el caso de Umbrel y Runcitadel instala un contenedor docker con Bitcoin Core y la implementación LND de Lightning network por defecto usando Tor. Lo cual le da facilidad a usuarios no técnicos de correr un nodo de forma muy simple y con privacidad por defecto.
  2. Instalar a partir de contenedores docker. Esta opción requiere algún conocimiento más técnico.
  3. Instalación a partir de binarios ya compilados. En bitcoin.org hay instaladores binarios para varios sistemas operativos, es cuestión de descargarlos y seguir las instrucciones.
  4. Bajar el código fuente, compilarlo e instalar.

En este tutorial vamos a desarrollar el punto 4, que puede ser retador para personas no técnicas. Si eres un usuario técnico o no tan técnico, pero con muchos deseos de aprender, entonces este tutorial es para ti.

Como requisito para este tutorial, debes haber instalado previamente una versión de Linux, en nuestro caso nos vamos a basar en Ubuntu, por ser una distribución ampliamente usada por la comunidad de desarrolladores de Bitcoin y tener una base bastante extendida de información y tutoriales basados en esta distro.

Instalar programas, librerías y dependencias
Programas que necesitamos

Vamos a instalar estos dos programas que los necesitaremos más adelante:

$ sudo apt-get install git curl

Librerías y dependencias

Ahora necesitamos instalar algunas librerías. Al instalar librerías, a veces se pueden enumerar muchas en un solo comando y separarlas con un solo espacio. En este tutorial, los dividí en grupos similares a la documentación de compilación en Github para Debian/Ubuntu

Ejecuta los siguientes comandos para instalar todas las librerías que ayudarán a compilar el código de <span style="background-color:#DEDEDE;"> bitcoind </span> y que también servirán en caso de que quieras usar herramientas para aprender a desarrollar.

$ sudo apt-get install build-essential autoconf libtool autotools-dev automake pkg-config bsdmainutils python3
$ sudo apt-get install libevent-dev libboost-dev
$ sudo apt-get install libsqlite3-dev
$ sudo apt-get install libminiupnpc-dev libnatpmp-dev
$ sudo apt-get install libzmq3-dev

En caso de que quieras usar la interfaz gráfica o GUI (Graphical User Interface) para administrar <span style="background-color:#DEDEDE;"> bitcoind </span> debes instalar estas librerías, si solo vas a usar la línea de comando no es necesario.

$ sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools

Compilar e instalar bitcoind

Verificamos que estamos en el home del usuario actual:

$ cd ~

Y ejecutamos este comando para bajar el código del repositorio de Bitcoin:

$ git clone https://github.com/bitcoin/bitcoin.git

Una vez terminada la descarga, nos cambiamos a la carpeta <span style="background-color:#DEDEDE;"> bitcoin </span> que se acaba de crear ejecutando el comando:

$ cd bitcoin

Miramos los tags para ver las versiones disponibles con este comando

$ git tag

También puedes mirar la versión del último release en esta url:
https://github.com/bitcoin/bitcoin/releases

En este caso vamos a ir a la última versión que es la v23.0 para eso ejecutamos este comando

$ git checkout v23.0

Instalamos la Berkeley Database
Esta es una base de datos que aún se necesita para poder compilar, posiblemente no se necesite en el futuro.

Instalamos la base de datos Berkeley con este comando (recuerda que debemos estar en el directorio bitcoin):

$ ./contrib/install_db4.sh `pwd`

Con el siguiente comando exportamos la ruta donde quedó la base de datos en una variable de entorno <span style="background-color:#DEDEDE;"> BDB_PREFIX </span>, esta variable la necesitamos más adelante (recuerda debes reemplazar el usuario admon por tu usuario)

$ export BDB_PREFIX='/home/admon/bitcoin/db4'

Empezamos el proceso de compilación

Ahora vamos a preparar el entorno para compilar el sofware de referencia de Bitcoin Core, para ello ejecutamos el siguiente comando:

$ ./autogen.sh

El anterior comando creó el script <span style="background-color:#DEDEDE;"> configure </span>. A este script se le pueden pasar varios parámetros para ajustar a la medida de nuestras necesidades.

En este caso, solo le vamos a pasar los parámetros para configurar la base de datos Berkeley que ya instalamos en un paso previo.

$ ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_FLAGS="-I${BDB_PREFIX}/include"

Con esta configuración vas a usar GUI (Interfaz gráfica) y requieres las librerías QT. En caso de que no quieras usar la GUI podemos pasarle el parámetro <span style="background-color:#DEDEDE;">  --with-gui=no </span> y quedaría así:

$ ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_FLAGS="-I${BDB_PREFIX}/include" --with-gui=no

Si todo estuvo bien, se deben haber creado los scripts para compilar <span style="background-color:#DEDEDE;"> bitcoind </span>. En caso de que no, mira qué librerías faltaron, las instalas e intenta de nuevo.

Ahora sí, vamos a compilar, para ello ejecutamos el comando:

$ make -j$(nproc)

El comando <span style="background-color:#DEDEDE;"> make </span> puede ejecutarse sin parámetros y usa un solo núcleo el procesador, pero si usamos el parámetro <span style="background-color:#DEDEDE;"> -j$(nproc) </span> usaremos todos los núcleos que tenemos en el procesador para que la compilación se haga en paralelo y tarde menos tiempo.

Este proceso puede tardar entre 60 min. y 90 min. dependiendo de los núcleos que tenga tu pc y la memoria disponible. Te recomiendo que no tengas muchas aplicaciones abiertas.

Al finalizar podemos ver una imagen similar a esta:

Si no hubo ningún problema, se habrá creado el compilado, por lo que ahora vamos a proceder con la instalación, ejecutando el comando:

$ sudo make install

La instalación dejará una salida por consola como la que se ve en la siguiente imagen:

Esto debe instalar el binario <span style="background-color:#DEDEDE;"> bitcoind </span> en la ruta: <span style="background-color:#DEDEDE;"> /usr/local/bin/bitcoind </span> al igual que <span style="background-color:#DEDEDE;"> /usr/local/bin/bitcoin-cli </span> y <span style="background-color:#DEDEDE;"> /usr/local/bin/bitcoin-qt </span> en caso de que hayas decidido instalar Bitcoin Core con la interfaz gráfica (GUI).

Configurar el archivo bitcoin.conf

Cuando se ejecuta <span style="background-color:#DEDEDE;"> bitcoind </span> por primera vez se crea un directorio <span style="background-color:#DEDEDE;"> .bitcoin </span> en el home del usuario que contiene el archivo <span style="background-color:#DEDEDE;"> bitcoin.conf </span>. Como aún no hemos ejecutado <span style="background-color:#DEDEDE;"> bitcoind </span> vamos a crear el directorio de manera previa, para ello ejecutamos estos comandos que nos van a ayudar creando el directorio <span style="background-color:#DEDEDE;"> .bitcoin </span> y cambiaremos al directorio creado:

$ mkdir ~/.bitcoin
$ cd ~/.bitcoin

Ahora creamos el archivo de configuración con cualquier editor de texto. Voy a usar <span style="background-color:#DEDEDE;"> nano </span> por simplicidad:

$ nano bitcoin.conf

Vamos a usar una configuración para instalar un nodo que contiene la historia completa de los bloques. Aunque es posible correr un nodo podado (un nodo que no contiene toda la historia de los bloques), es altamente recomendable hacerlo con un nodo que tenga toda la historia y así no penalizar el rendimiento y el consumo de recursos del nodo.

En el archivo de configuración se pueden añadir muchos parámetros, pero para simplificar las cosas solamente vamos a introducir un par de líneas que van a indicar que vamos a usar la red de testnet.

testnet=1
txindex=1

Antes de ejecutar <span style="background-color:#DEDEDE;"> bitcoind </span> en segundo plano, ten en cuenta que se empezará a bajar la blockchain de testnet que al momento de crear este tutorial pesa 50 gigas aproximadamente, lo que demorará algunos minutos.

Ejecutar bitcoind y descargar la blockchain

Ahora ejecuta <span style="background-color:#DEDEDE;"> bitcoind </span> como un <span style="background-color:#DEDEDE;"> daemon </span> para que se ejecute en segundo plano y empiece a bajar la blockchain:

$ bitcoind -daemon

Para chequear el progreso usar este comando:

$ bitcoin-cli getblockchaininfo

Si comprobamos muy rápido es probable que Bitcoin aún esté cargando y verificando el índice, por lo que podríamos obtener un mensaje de error como el siguiente:

No hay que preocuparse, espera unos segundos más y tendrás un resultado como el siguiente:

El parámetro verificationprogress te indicará el porcentaje del progreso, cuando llegue a 0.99 ya ha descargado la blockchain completa.

🎉 Si has llegado hasta aquí, ¡felicitaciones!, ahora tienes un nodo de Bitcoin listo para usar. Este es el primer pilar para empezar a construir tu soberanía monetaria.