Instalar un Nodo Completo de Bitcoin

Un node de bitcoin nos permitirá tener privacidad al realizar nuestras transacciones de envío de bitcoins, descentralizar los nodos de Bitcoin, además de aprender.
Lo primero que debemos hacer es bajar la última versión de Bitcoin core del sitio https://bitcoincore.org/ En agosto de 2023, la versión liberada es la 25. La instalación se realizará en Ubuntu 22.04.
1. Bajar la última versión de Bitcoin Core
Para correr un nodo completo de Bitcoin se requiere el programa Bitcoin core. En esta guía se instalará en un sistema operativo Ubuntu 22.04, elegimos la última versión disponible. Para Linux se tiene que elegir el archivo bitcoin-25.0-x86_64-linux-gnu.tar.gz. El archivo tiene un tamaño de 45M.
$wget https://bitcoincore.org/bin/bitcoin-core-25.0/bitcoin-25.0-x86_64-linux-gnu.tar.gz
Cuando leas esta guía habrá un versión más reciente por lo que se recomienda revisar en el sitio oficial https://bitcoincore.org/en/download/. El nombre bitcoin-25.0-x86_64-linux-gnu.tar.gz indica que se trata de la versión para linux a 64 bits y que el archivo se encuentra tareado (.tar) y comprimido (.gz).
1.1 Verificar el programa
Debemos verificar la integridad del archivo bitcoin-25.0-x86_64-linux-gnu.tar.gz para garantizar que es la versión oficial y que no tiene modificaciones. Este arcchivo está firmado digitalmente usando la llave privada del equipo de desarrollo de Bitcoin Core. Si se trata de una instalación experimental no es necesario verificar el archivo, sin embargo, si la instalación será para un equipo en producción es necesario verificar la firma digital por seguridad. Recuerda nunca confiar en programas de terceros sin verificar.
La verificación se realiza a través de los siguientes pasos
- Bajar el archivo de firma
- Verificar que el hash del archivo .tar.gz coincide con el hash en la parte del mensaje del archivo de firma.
- Bajar la llave pública del equipo de Bitcoin Core.
- Instalar la clave pública de Bitcoin Core como de confianza
- Finalmente verificar la firma.
Veamos cada una de las etapas a detalle.
1. Bajar el archivo de la firma
Para verificar que el archivo que se bajó es el del equipo de Bitcoin Core, también se debe bajar el archivo de firma llamado SHA256SUMS.asc
El archivo se baja desde la misma ubicación de donde se obtuvo
$wget https://bitcoincore.org/bin/bitcoin-core-25.0/SHA256SUMS.asc
Este archivo es válido únicamente para la versión 25, debes bajar el archivo correspondiente a la misma versión de Bitcoin Core.
El archivo SHA256SUMS.asc tiene el siguiente contenido (solo se muestra una parte).

Bajamos el archivo SHA256SUMS
El archivo SHA256SUMS tiene los hash de todas las versiones de sistema operativo.
$wget https://bitcoincore.org/bin/bitcoin-core-25.0/SHA256SUMS
Si solo queremos ver el de la versión linux a 64 bits y para el Bitcoin Core 25.
$cat SHA256SUMS | grep 'bitcoin-25.0-x86_64-linux-gnu.tar.gz'
33930d432593e49d58a9bff4c30078823e9af5d98594d2935862788ce8a20aec bitcoin-25.0-x86_64-linux-gnu.tar.gz
Verificar el hash del archivo bitcoin-25.0-x86_64-linux-gnu.tar.gz
$sha256sum bitcoin-25.0-x86_64-linux-gnu.tar.gz
33930d432593e49d58a9bff4c30078823e9af5d98594d2935862788ce8a20aec bitcoin-25.0-x86_64-linux-gnu.tar.gz
Verificamos que el hash obtenido en este paso coincide con el hash del archivo SHA256SUMS (33930d432593e49d58a9bff4c30078823e9af5d98594d2935862788ce8a20aec).
En la página de Bitcoin core recomiendan verificar los hashes en un solo comando
sha256sum --ignore-missing --check SHA256SUMS
Si es correcto debe mandar el mensaje bitcoin-25.0-x86_64-linux-gnu.tar.gz: OK.
Bajar las llaves publicas del equipo de Bitcoin Core
El archivo .tar.gz fue firmado digitalmente con las llaves públicas de los desarrolladores. El programa que nos permite instalar llaves públicas es gpg. Lo instalamos en Ubuntu en caso de que no lo tengamos.
$sudo apt update
$sudo apt install gpg
Necesitamos las llaves publicas, las cuales están disponibles en https://github.com/bitcoin-core/guix.sigs/tree/main/builder-keys
Podemos bajar una de quien tengamos confianza, por ejemplo la de fanquake.gpg
wget https://github.com/bitcoin-core/guix.sigs/blob/main/builder-keys/fanquake.gpg
Ahora importamos la llave pública
gpg --import fanquake.gpg
Podemos importar todas la llaves públicas
$git clone https://github.com/bitcoin-core/guix.sigs
$gpg --import guix.sigs/builder-keys/*
Verificamos la firma
Ahora verificamos que el archivo SHA256SUMS.asc está firmado por suficientes llaves públicas que importamos en el paso anterior
$gpg --verify SHA256SUMS.asc
Cada firma debe mandar dos líneas
gpg: Good signature
Primary key fingerprint: E777 299F C265 DD04 7930 70EB 944D 35F9 AC3D B76A
En caso de que aparezcan Warnings, podemos ignorarlos si tenemos la llave pública y es de confianza.
Bonus: Podemos firmar las fingerprints con nuestra clave privada para recordar que son de confianza. Por lo tanto, creamos nuestra clave privada y luego la utlizamos para firmar.
$gpg --key-gen
Nos va a solicitar nuestro nombre completo y un email, así como un Passphrase que no devemos olvidar
Nos muestra la siguiente salida
public and secret key created and signed.
pub rsa3072 2023-08-09 [SC] [expires: 2025-08-08]
DBB02713794BDDF0125B5C22B6AA217BAB302878
uid Oscar Olvera Neria <oon@mikronet.mx>
sub rsa3072 2023-08-09 [E] [expires: 2025-08-08]
Ahora podemos firmar con nuestra llave privada los fingerprints de confianza. Nos preguntará si queremos firmar y respondemos que sí. Este proceso se realiza para cada uno de los fingerprints del paso anterior. Debemos introducir la Passphrase para firmar.
$gpg --sign-key E777299FC265DD04793070EB944D35F9AC3DB76A
2. Expandir y descomprimir el archivo .tar.gz
$tar xvfz bitcoin-25.0-x86_64-linux-gnu.tar.gz
Nos genera un directory bitcoin-25.0, entramos al directorio bitcoin-25.0/bin y vemos el contenido
$cd bitcoin-25.0/bin
$ls
bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin
Los archivos ejecutables son los siguientes:
- bitcoin-cli es un programa para extraer información del nodo que se está corriendo y para administrar la wallet que trae Bitcoin Core.
- bitcoin-qt es un programa para ejecutar una interfaz gráfica del nodo. Se emplea principalmente para usar la wallet.
- bitcoin-tx es una utilidad pequeña para crear y modificar transacciones en Bitcoin.
- bitcoind es el programa que se usa en background cuando no se desea usar la interfaz gráfica.
Para ejecutar Bitcoin Core en background corremos el programa bitcoind
$./bintcoind -daemon
Bitcoin Core starting
Este programa inicia el nodo, se conecta con pares y comienza a bajar el blockchain.
Bajar el blockchain toma tiempo y depende de los recursos de hardware y de la conexión de internet, puede durar incluso varios días
Para verificar el proceso de descarga del blockchain usamos el comando bitcoin-cli
$./bitcoin-cli getblockchaininfo
{
"chain": "main",
"blocks": 12602,
"headers": 802328,
"bestblockhash": "00000000093b412cdad477c2b6dd9f5092c60e0fe9fc10a5fbcfff28c636e7a7",
"difficulty": 1,
"time": 1240985600,
"mediantime": 1240980813,
"verificationprogress": 1.476251893448488e-05,
"initialblockdownload": true,
"chainwork": "0000000000000000000000000000000000000000000000000000313b313b313b",
"size_on_disk": 3502610,
"pruned": false,
"warnings": ""
}
Nos indica que ha bajado 12602 bloques, y 802328 encabezados que son los encabezados totales hasta este momento (verificar en mempool.space) pero no ha descargado los bloques completos. Mientras esté actualizando y bajando bloques, la variable initialblockdownload será true.
La blockchain se baja por defecto en la ruta $HOME/.bitcoin/blocks
Para verificar el tamaño del directorio, en caso de que se haya instalado en la carpeta por defecto.
$du -h $HOME/.bitcoin | sort -hr
540G /home/oscolv/.bitcoin
532G /home/oscolv/.bitcoin/blocks
7.2G /home/oscolv/.bitcoin/chainstate
182M /home/oscolv/.bitcoin/blocks/index
4.0K /home/oscolv/.bitcoin/wallets
La blockchain tiene un tamaño de 540G, por lo que debe tenerse un disco de al menos 1TB y pensando en el futuro de 2 TB.
Se puede visualizar el proceso de descarga de la blockchain revisando el archivo debug.log
$tail -f $HOME/.bitcoin/debug.log
Para revisar las conexiones que estableció nuestro nodo:
$./bitcoin-cli getconnectioncount
10
En caso de querer detener bitcoin core, se ejecuta el comando:
$./bitcoin-cli stop
Bonus:
Se puede actualizar la variable PATH en ubuntu para que cuando se ejecute un comando, busque el ejecutable en la ubicación PATH. Modificamos el archivo .bashrc y agregamos la línea export PATH=$PATH:$HOME/bitcoin/bin, usamos el programa vi o nano.
$vi $HOME/.bashrc
export PATH=$PATH:$HOME/bitcoin/bin
Cargamos nuevamente el archivo o cerramos la sesión y nos logeamos nuevamente para actualizar los cambios.
$source $HOME/.bashrc
Comments ()