@decentralizedb, @bitao36, @dulcedu
Si eres totalmente nuevo en Bitcoin te recomendamos leer:
Six reasons you should run bitcoin node
Podcast sobre que me aporta tener un nodo de Bitcoin
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:
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.
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
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).
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.
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.