Instala tu nodo Bitcoin con Lightning Network y gestiona tu propio Banco

Instala tu nodo Bitcoin con Lightning Network y gestiona tu propio Banco

La motivación para instalar mi propio nodo es tener soberanía monetaria y ser un individuo soberano. La motivación para crear esta guía surge porque muchos bitcoiners quieren tener su propio nodo y no todos tienen el conocimiento técnico para saber cual es la mejor ruta para seguir dentro del infinito mar de posibilidades que se pueden escoger.

Estos son las reflexiones, decisiones y paso a paso que seguí desde que decidí tener mi propio nodo de Bitcoin con Lightning Network.

Algunos de los tutoriales pueden ser retadores para personas no técnicas. Sin embargo si eres un usuario no tan técnico pero con muchos deseos de aprender entonces este tutorial es para ti.

Cada decisión que tomé desde el hardware a usar y que software instalar la sustento con argumentos e intento ser lo más explícito posible. Sin más preámbulo pongamos toda la carne en el asador.

Un nodo de Bitcoin puede usar las siguientes redes:

  • Mainnet: Es la red principal donde están los bitcoins reales (peso de la blockchain 460 GB aproximadamente en el momento de hacer esta guía).
  • Testnet: Es una red parecida a mainnet pero para hacer pruebas.(peso de la blockchain menos de 50 GB)
  • Regtest: Es una red local en la cual puedes crear varios nodos en la misma máquina.

La recomendación es usar la red de testnet para aprender y no arriesgar satoshis reales.

Si vas a instalar un nodo de testnet sólo para probar y quieres hacerlo en el PC que usas habitualmente sólo debes asegurarte que tengas más de 50 GB de espacio disponible.

Cuando quieras usar un nodo en producción o sea en mainnet, lo más aconsejable es destinar una CPU para tal efecto y tener un disco adicional debido al peso actual de la cadena de bloques.

Este artículo se va a centrar en todas las decisiones que tomé para poner un nodo personal en producción, desde el hardware , hasta el tipo de implementación y el tipo de instalación.

Tener en cuenta que cuando me refiero a nodo personal es porque un nodo también puede instalarse con el objetivo de ser enrutador o para brindar algún tipo de servicio y en esos casos hay que tener otro tipo de consideraciones y configuraciones.

Requisitos

Hardware

Los requisitos para instalar un nodo de Bitcoin son particularmente bajos, el recurso más costoso para almacenar la cadena de bloques de la red de mainnet sería el disco duro ya que actualmente pesa 460 GB aproximadamente. Si el nodo se va usar para pruebas en red de testnet solo es necesario tener 50 GB de espacio en disco.

A continuación se detallan cuáles serían los requisitos mínimos para instalar un nodo:

  • CPU con procesador corei3 o similares en adelante. También puede ser una raspberry pi 4.
  • Memoria: Mínimo 4 GB
  • Disco duro de 1 Tera SSD

Buscando un buen costo beneficio me decanté por una CPU de segunda mano con las siguientes características:

  • CPU con procesador Corei3 o similares en adelante.
  • Memoria Ram: 8 GB
  • Disco duro HDD Sata III de 500 GB para el sistema operativo
  • Disco duro de 1 Tera SSD para la blockchain

¿Por qué no usé una raspberry?

En el momento en que deseaba montar el nodo era año de pandemia y las raspberry pi estaban más costosas que comprar una CPU con las características enunciadas arriba. Además una CPU con las características mínimas puede dar mejor estabilidad especialmente porque la microsd de la raspberry a veces se daña.

Software

  • Sistema operativo: El sistema operativo a usar será Linux. ¿Porque Linux? Porque siempre me ha gustado la filosofía que hay detrás del software libre, a nivel de servidores es el sistema operativo más usado y cuando deseas profundizar en desarrollo de protocolos como Bitcoin, es necesario aprender a usar la terminal de comandos.
  • Distribución: Aunque hay varias distribuciones de Bitcoin voy a usar Debian. ¿Porqué Debian? Es una distribución muy estable en la que he tenido diferentes servicios sin ningún tipo de problema. Algo importante a destacar es que todos los pasos serán aplicables a cualquier distribución basada en Debian como Ubuntu o similares.

Instalación de nodo Bitcoin

Usaremos la implementación de Bitcoin Core que es la que inició el mismísimo Satoshi y que implementa el protocolo en su totalidad.

La instalación con un archivo binario es más fácil, pero en el tutorial que te voy a compartir se va a descargar el software del repositorio y lo vamos a compilar.

¿Por qué compilar?

Es mejor compilar para mejorar el desempeño, ya que las instrucciones del programa fuente son totalmente adaptadas a la arquitectura de nuestro procesador.

A continuación te voy a dejar el tutorial: Tutorial cómo instalar Bitcoin Core

Instalación de nodo lightning

Usaremos la implementación Core Lightning. Tener en cuenta que antes se llamaba c-lightning porque está escrita en C, pero dado que se están empezando a escribir módulos en Rust se le cambió el nombre por algo más genérico.

¿Por que Core Lightning?

En este momento la cuota de mercado de Core Lightning es de 6% frente a un 92% de LND (aproxidamente) Esta gran brecha se ha dado porque LND ha desarrolló mas pronto herramientas y documentación para que los developers pudieran construir aplicaciones de forma muy sencilla y en este aspecto LND le tomó ventaja.

Sin embargo Core lightning tiene 4 características que me gustan y son:

  • Es ligero: Consume pocos recursos de la CPU.
  • Es modular: Cada funcionalidad está implementada como un módulo.
  • Es extensible mediante plugins: Se pueden construir en lenguajes como C,Python o Rust.
  • Acceso a comandos JSON-RPC nativos: Usando el plugin Commando y mediante sockets.

A continuación te voy a dejar el tutorial: Tutorial Cómo instalar Core Lightning

Si logras instalar tu nodo de Bitcoin con Lightning Network usando esta guía, testea el nodo invitándome un café y déjame un mensaje que te salga del corazón 🙂 Sats para un café

Cómo instalar un nodo Core Lightning desde cero con Linux Debian/Ubuntu y que use Tor

Para poder ejecutar un nodo Core Lightning , debes tener instalado y corriendo Bitcoin Core. En caso de que no lo tengas instalado te recomiendo que vayas primero al siguiente tutorial Como instalar un nodo de Bitcoin Core

Instalar dependencias para poder compilar lightningd

$sudo apt-get update
$sudo apt-get install -y \
autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev \
python3 python3-mako python3-pip net-tools zlib1g-dev libsodium-dev gettext
$pip3 install --upgrade pip

Si se quiere usar el plugin cln-grpc o constuir plugins con Rust debes instalar Rust con esta linea:

$sudo apt-get install -y cargo rustfmt

En caso de que estés interesado en desarrollar, debes instalar estas dependencias adicionales:

$sudo apt-get install -y valgrind libpq-dev shellcheck cppcheck \
libsecp256k1-dev jq

Compilar e instalar lightningd

Clonamos el repositorio donde está el código fuente de c-lightning:

$git clone https://github.com/ElementsProject/lightning.git
$cd lightning

Buscamos la última versión estable:

$git tag

En el momento de actualizar este tutorial es la v23.05 de modo que vamos a ese release:

$git checkout v23.05

Ahora si compilamos y ejecutamos lightning:

$pip3 install --upgrade pip
$pip3 install mako 
$./configure
$make -j$(nproc)
$sudo make install

Antes de ejecutar lightningd debemos crear el directorio .lightning y dentro de ese directorio vamos a crear el archivo config

$sudo nano ~./lightning/config

Y agregamos las siguientes líneas:

network=bitcoin
log-level=debug
log-file=lightningd.log
addr=0.0.0.0:9735

Antes de lanzar lightningd ya debe estar corriendo bitcoind.

Ahora si lanzamos lightningd como demonio:

$lightningd --daemon

Y obtenemos datos del nodo:

$lightning-cli getinfo

Felicitaciones ahora tienes corriendo un nodo core lightning.

Con este comando puedes detener lightningd

$lightning-cli stop

Configurar lightningd para que use Tor y cargue al iniciar el sistema.

Abrimos el archivo de configuración de Tor:

$sudo nano /etc/tor/torrc

y añadimos las siguientes líneas:

HiddenServiceDir /var/lib/tor/lightningd-service_v3/
HiddenServiceVersion 3
HiddenServicePort 9735 127.0.0.1:9735

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Detenemos Tor:

$sudo systemctl stop tor

Volvemos a lanzar Tor:

$sudo systemctl start tor

Ahora ejecutamos el siguiente comando para obtener la dirección onion que nos asignó Tor.

$sudo cat /var/lib/tor/lightningd-service_v3/hostname

Esta dirección que nos acaba de arrojar es una dirección tor fija para nuestro nodo lightning

Añade esta dirección en el archivo de configuración de lightningd

$sudo nano ~./lightning/config

Copia las siguientes líneas en ese archivo reemplazando la que dice announce-addr por la que hayas obtenido.

announce-addr=huzhaegx5xoeqebmrjeiti6hu7qpg4pavr5lq4vaf52h4bq5rgx4oaid.onion
:9735
proxy=127.0.0.1:9050
always-use-proxy=true

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ahora detenemos lightningd con el siguiente comando:

$lightning-cli stop

Ahora regarcamos Tor:

$sudo systemctl restart tor

E iniciamos de nuevo lightningd:

$lightningd –daemon

Para observar que esté funcionando, ejecutamos:

$lightning-cli getinfo

Si no hacemos nada más, cada vez que se reinicie el PC hay que ejecutar este comando para que bitcoind se ejecute. Por eso lo que debemos hacer es crear un servicio para que se ejecute automáticamente al iniciar el pc.

Antes de crear el servicio detengamos de nuevo lightningd para lanzarlo luego como servicio:

$lightning-cli stop

Ahora para crear el servicio vamos a la siguiente ruta:

$cd /etc/systemd/system

Y ejecutamos este comando para obtener el archivo de configuración directamente desde el repositorio de bitcoin

$sudo wget https://raw.githubusercontent.com/ElementsProject/lightning/master/contrib/init/lightningd.service

Ahora tenemos que modificar las rutas donde esta el parámetro ExecStart

$sudo nano lightningd.service

ExecStart=/usr/local/bin/lightningd --daemon   /home/admon/.lightning/config --pid-file=/run/lightningd/lightningd.pid

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ejecutamos este comando para que inicie el servicio cuando se reinicie el equipo:

$sudo systemctl enable lightningd.service

Y con este comando lo ejecutamos:

$sudo systemctl start lightningd.service

Para mirar el estado del servicio ejecutamos:

$sudo systemctl status lightningd.service

Si deseamos detenerlo usamos:

$sudo systemctl stop lightningd.service

Si has llegado hasta aquí muchas felicitaciones, tienes corriendo un nodo con Bitcoin Core y Core Lightning, ahora tienes tu propio banco y por primer vez en la historia podrás tener soberanía monetaria 🙂

Como Instalar un nodo completo de Bitcoin Core en Linux Debian 11/Ubuntu con Tor (edición 2022)

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 o similares. Estos programas tienen instaladores para raspberry pi y también pueden correr en pcs con sistema linux.
En el caso de Umbrel 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.

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.

Para sacarle el jugo a este tutorial debes haber instalado previamente una versión de Linux basada en Debian como Ubuntu, en mi caso lo hice en Debian 11 Bullseye y también debes haber creado otro usuario además del root. Ahora sí manos a la obra.

La instalación la hice en un Debian 11 Bullseye, pero dado que Ubuntu está basado en Debian, la instalación debe ser igual para las últimas versiones de Ubuntu.

Si tienes una instalación desde cero debes tener dos usuarios en el sistema el root y otro usuario cualquiera que será el usuario en el cual haremos toda la instalación para no trabajar con el usuario root por cuestiones de seguridad.

El usuario que vamos a usar en este tutorial se llama admon y está agregado al grupo sudo para que pueda ejecutar comandos sudo.

Para chequear si el usuario está agregado al grupo sudo ejecuta este comando cambiando admon por tu usuario

$groups admon

En caso de que el resultado anterior no se encuentre el grupo sudo agrégalo con el siguiente comando

$sudo usermod -a -G sudo admon

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

Instalar Tor

Vamos a usar Tor, no sólo por la privacidad, sino porque de esa forma no
tenemos que hacer ninguna redirección de puertos en el router que tengamos y tampoco usar servicios dns dinámico para que se refresque nuestra ip en
caso de que sea fija, que es el caso más típico en caso de instalaciones de internet domésticas.

Ahora instalaremos Tor y lo dejaremos listo para cuando lo necesitemos más adelante.

Ejecutamos el siguiente comando para saber el nombre de la distribución linux que estamos usando

$lsb_release -c

Ahora vamos a crear el siguiente archivo

$sudo nano /etc/apt/sources.list.d/tor_repo.list

Edita donde dice bullseye por lo que te haya aparecido a ti y copias allí
las siguiente líneas para poder bajar los repositorios en donde se aloja el código fuente

deb http://deb.torproject.org/torproject.org bullseye main`  
deb-src http://deb.torproject.org/torproject.org bullseye main

presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ahora ejecuta el siguiente comando para bajar la llave GPG del repositorio para poderla instalar:

$curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -

Ejecutamos este comando para actualizar los repositorios que acabamos de añadir:

$sudo apt-get update

E instalamos:

$sudo apt-get install tor deb.torproject.org-keyring

Ahora vamos a ir a la siguiente ruta para editar el archivo de configuración torrc

$cd /etc/tor

Y añadimos las siguientes líneas

SOCKSPort 9050
Log notice stdout
ControlPort 9051
CookieAuthentication 1 
CookieAuthFileGroupReadable 1 

Ahora vamos a añadir el usuario en donde está la instalación de bitcoin al grupo de Tor. Con este comando encontramos el nombre del Tor group.

$grep User /usr/share/tor/tor-service-defaults-torrc

En nuestro caso aparece debian-tor, entonces añadimos el usuario admon a este grupo:

$sudo usermod -a -G debian-tor admon

Deslogueate y logueate de nuevo para que se apliquen las modificaciones o reinicia el pc.

Ahora vamos a configurar Tor para que arranque cada vez que inicie el pc:

$sudo systemctl enable tor

Y para lanzarlo en este momento ejecutamos

$sudo systemctl start tor

Ahora la máquina está corriendo Tor. El tráfico es normal a menos que le especifiques al software de comunicaciones que estés usando que se conecte a través de Tor como lo haremos más adelante con bitcoind & lightningd.

Librerías y dependencias

Ahora necesitamos instalar algunas librerias. Al instalar librerias, a veces se puede 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 bitcoind 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 libevent-dev
$sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev
$sudo apt-get install libsqlite3-dev
$sudo apt-get install libminiupnpc-dev
$sudo apt-get install libzmq3-dev
$sudo apt-get install libqrencode-dev

En caso de que quieras usar GUI(interfaz gráfica) para administrar bitcoind 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

Navegamos hasta la carpeta bitcoin que se acaba de crear

$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 (Si la versión es diferente a la imagen es porque el tutorial ha sido actualizado)

$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:

$./contrib/install_db4.sh `pwd`

Con el siguiente comando exportamos la ruta donde quedó la base de datos en una variable de entorno BDB_PREFIX, 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

Ejecutamos el siguiente comando para preparar el entorno

$./autogen.sh

El anterior comando creó el script configure. A este script se le puedan pasar varios parámetros para ajustar a la medida de nuestras necesidades.

En este caso sólo 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 –with-gui=no 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 sobre ruedas se deben haber creado los scripts para compilar bitcoind.
En caso de que no, mira qué librerías faltaron las instalas e intenta de nuevo.

Ahora si compilamos:

$make -j$(nproc)

Si todo esta bien ya se creó el compilado. Ahora lo instalamos:

$sudo make install

Esto debe haber instalado bitcoind en esta ruta /usr/local/bin/bitcoind
al igual que /usr/local/bin/bitcoin-cli y /usr/local/bin/bitcoin-qt en caso de que hayas usado GUI.

Configurar el archivo bitcoin.conf

Cuando se ejecuta bitcoind por primer vez se crea un directorio .bitcoin en el home del usuario que contiene el archivo bitcoin.conf
Como aún no hemos ejecutado bitcoind vamos a crear el directorio:

$mkdir ~/.bitcoin
$cd .bitcoin

Ahora creamos el archivo de configuración bitcoin.conf con cualquier editor de texto, voy a usar nano por simplicidad

$nano bitcoin.conf

Este archivo puede tener parámetros para configurar un nodo completo que baje toda la blockchain o un nodo podado que baje una blockchain parcial para ahorrar espacio.

Está fuera del alcance de este tutorial explicar sobre la conveniencia de instalar un nodo podado, así que usaremos una configuración para instalar un nodo completo.

Lo más recomendable es que la blockchain no la almacenes en el mismo disco donde tienes instalado el sistema operativo. La sugerencia es destinar para ello un disco SSD de 1 Tera. Si tomas este camino, ten en cuenta que debes montar el disco con fstab.

Introduce esta línea en el archivo de texto que estás creando:

assumevalid=0
txindex=1

En caso de que hayas montado un disco para almacenar la blockchain, debes añadir una línea para indicar la ruta en donde montaste el disco. Voy a suponer que la ruta es /home/admon/BTC_Blockchain, entonces la línea quedaría así:

datadir=/home/admon/BTC_Blockchain

Antes de ejecutar bitcoind en segundo plano, ten en cuenta que se empezará a bajar toda blockchain que al momento de crear este tutorial está en 400 Gigas aproximadamente. Eso demora varios días dependiendo de la conexión a internet.
Para que esta descarga sea más rápida la blockchain se bajará por la clearnet ya que no hemos configurado Tor aún.

Ejecutar bitcoind y descargar la blockchain usando clearnet

Ahora ejecuta bitcoind como un demonio 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

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

Configurar bitcoind para que use exclusivamente Tor y cargue al iniciar el sistema.

Cuando haya bajado la blockchain podemos modificar la configuración para que bitcoind se comunique con los otros nodos exclusivamente a través de Tor y así tener más privacidad.

El archivo quedaría así:

assumevalid=0
txindex=1
debug=tor
onlynet=onion
proxy=127.0.0.1:9050
bind=127.0.0.1
dnsseed=0
dns=0
addnode=kpgvmscirrdqpekbqjsvw5teanhatztpp2gl6eee4zkowvwfxwenqaid.onion
addnode=bnx4povtqynvwnui5oqm5xcxqvat3j7yzgn6mqciuyszqawhuayvyaid.onion:8333
addnode=wyg7twmf7t3pfvfpdcfd64wvjj2pkccuui7ew34ovnqung5f623b4yyd.onion
addnode=glm52zywiqrcxuwswvgjsxr5pfeggil7uci4z5tbpvb4rjyu5hwjhtid.onion
addnode=xspiicyddsdmzxsffzw6z4f22wi2iwyyufkjcaj2qr7cznxymtft5nid.onion
addnode=nqb5q6d4nhp54ziahhm2oxopqwyyulg7nrqwrcmfvwhj7y7xasaeg7ad.onion
addnode=vp4qo7u74cpckygkfoeu4vle2yqmxh7zuxqvtkazp4nbvjnxl2s3e6id.onion
addnode=ew7x2hv76f7w7irfyektnbhd42eut27ttbfgggu7lbpxsyrlfvsujuqd.onion
addnode=qxkgr5u4rmwme5jticjuuqrecw5vfc5thcqdxvbffwbqgqkdin7s7vid.onion

Presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Expliquemos un poco estos parámetros:

debug=tor agrega logs que tengan que ver con tor
onlynet=onion le indica a Bitcoin Core que las conexiones salientes sean sobre Tor
proxy=127.0.0.1:9050 le indica a Bitcoin core como comunicarse mediante Tor

bind: 127.0.0.1 restringirá las conexiones entrantes de Bitcoin Core desde otros nodos para que solo se realicen a través de Tor. Si nunca has ejecutado un nodo antes, otros peers no intentarán conectarse con tu nodo porque no saben que existe, pero aún podrían hacerlo.

dnsseed=0 and dns=0 Evita que Bitcoin Core intente conectarse a las “semillas” de DNS predeterminadas que se encuentran el siguiente archivo del repositorio de bitcoin:
https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L116
A pesar de las restricciones entrantes/salientes que establecimos anteriormente, sin estas dos configuraciones, nuestro nodo aún intentará conectarse a estos hosts.

¿Por qué queremos evitar que se conecte a esas semillas?

Dado que a finales del año 2021 se dejó de tener soporte para la versión 2 de Tor, entonces varias personas tuvieron problemas obteniendo conexiones entrantes de nodos con la version 3 de Tor cuando hicieron la actualización.

Por eso vamos a agregar semillas manualmente para conectarnos.
Con addnode se añaden las semillas, que son otros peers que se van a conectar a nuestro nodo. Y dado que estamos ejecutando el nodo sólo sobre Tor, debemos agregar las direcciones onion de otros peers en lugar de las direcciones IP. Una vez que nos conectamos a ellos, nos envían más a los que podemos conectarnos.

Eventualmente, nuestro nodo creará una larga lista de nodos y ya no necesitará los nodos semilla, por eso más adelante los quitaremos.

La lista de nodos la extraje de este hilo de reddit donde un usuario tuvo problemas porque con la versión 3 de Tor y no obtenía conexiones entrantes de otros nodos de modo que varias personas le compartieron sus direcciones onion.

https://www.reddit.com/r/Bitcoin/comments/kzhhgk/bitcoin_core_0210_tor_v3/

Hay dos parámetros llamados rpcuser y rpcpassword que si no se usan como en este caso, Bitcoin core por defecto genera un archivo .cookie para autenticarse.  En caso de que ingreses estos  parámetros  debes especificarlos más tarde en la configuración del nodo de lightnind para que este se comunique por el protocolo RPC con bitcoind.

Terminada la explicación del archivo de configuración procedemos a detender bitcoind:

$sudo bitcoin-cli stop

Ahora los arrancamos de nuevo:

$sudo bitcoind -daemon

Si ejecutamos el comando

$bitcoin-cli getnetworkinfo

Podemos observar que estamos conectados mediante Tor, connections_in aún está en cero porque tarda un poco en ir obteniendo conexión de otros nodos.

Si no hacemos nada más, cada vez que se reinicie el PC hay que ejecutar este comando para que bitcoind se ejecute. Por eso lo que debemos hacer es crear un servicio para que se ejecute automáticamente al iniciar el pc.

Para lograrlo vamos a la siguiente ruta:

$cd /etc/systemd/system

Y ejecutamos este comando para obtener el archivo de configuración directamente desde el repositorio de bitcoin
$sudo wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/init/bitcoind.service

Ahora tenemos que modificar las rutas donde esta la blockchain de bitcoin y comentar tres parámetros, por eso abrimos el archivo:

$sudo nano bitcoind.service

Y editamos las rutas en el parámetro ExecStart, en mi caso con el usuario admon queda así:

ExecStart=/usr/local/bin/bitcoind -daemon \
                            -pid=/run/bitcoind/bitcoind.pid \
                            -conf=/home/admon/.bitcoin/bitcoin.conf \
                            -datadir=/home/admon/.bitcoin

Y comentamos con # las siguientes tres líneas que están más abajo:

#PermissionsStartOnly=true
#ExecStartPre=/bin/chgrp bitcoin /etc/bitcoin

#ProtectHome=true

Presiona Ctrl+x , luego presiona ‘s’ y enter para guardar los cambios.

Ejecutamos este comando para que inicie el servicio cuando se reinicie el equipo:

$sudo systemctl enable bitcoind.service

Y con este comando lo ejecutamos:

$sudo systemctl start bitcoind.service

Para mirar el estado del servicio ejecutamos:

$sudo systemctl status bitcoind.service

Si deseamos detenerlo usamos:

$sudo systemctl stop bitcoind.service

Si has llegado hasta aquí felicitaciones, ahora tienes instalado un nodo de Bitcoin instalado que te proveerá privacidad y ayudará a la descentralización de la red.

¿Qué es Bitcoin y como funciona?

¿Qué es Bitcoin y como funciona?

 

Explicar Bitcoin usualmente es difícil dependiendo de que conocimientos tiene la persona que está investigando. Esto ese debe que para comprenderlo a fondo debes tener muy claro que es el dinero, además algunos conceptos de economía y teoría de juegos, comunicación de datos, criptografía, programación y estructuras de datos.

Uno de los aspectos más importantes de Bitcoin es precisamente que te hace cuestionar acerca de que es el dinero y en caso de que no sepas exactamente te recomiendo ver un corto video de como se creó el sistema monetario actual.

En el whitepaper de Satoshi Nakamoto el título dice  «Bitcoin: Un sistema de efectivo  electrónico de usuario a usuario», esto quiere decir que su creador o creadores que hasta el momento es anónimo,  pensaba crear un tipo de dinero electrónico que pueda usarse de persona a persona(p2p) sin necesidad de un intermediario.

En nuestro sistema monetario actual la banca ha jugado el rol de intermediario y debido a que Bitcoin usa criptografía para delegar la confianza que depositamos en un banco, teóricamente amenaza el concepto de banca tradicional que tenemos en la actualidad.

Diciéndolo desde otro punto de vista, Bitcoin es tecnología, es un protocolo que permite intercambiar valor de forma descentralizada usando criptografía.

La criptografía que le da la seguridad al Bitcoin es el resultado de mucha de la investigación que los cypherpunks desarrollaron para intentar crear herramientas de forma que el individuo conservara la privacidad.

Bitcoin es la primer criptomoneda que emerge de todo este conocimiento  como respuesta al sistema monetario actual que desde que Richard Nixón abolió el patrón oro en 1971, es básicamente deuda, un dinero falso respaldado por leyes. Lo cual ha creado crisis cíclicas en donde la banca central solo rescata a los bancos. Por eso Satoshi Nakamoto en el bloque Génesis como protesta a este sistema inmoral escribió esta frase «The Times 03/Jan/2009 Chancellor on brink of second bailout of banks»  que traduce «El Canciller está a punto de dar un segundo rescate a los bancos»

Lo que te voy a explicar a continuación son los fundamentales de esta tecnología que tienes que tener muy claro antes de comprar. Voy a explicarlo de la forma más simple posible, pero por ningún motivo vayas a comprar  si no entiendes lo que te voy a explicar a continuación.

Bitcoin se puede dividir en tres aspectos:

Protocolo: El protocolo se llama Bitcoin con B mayúscula y tiene las reglas de concenso. El concenso son un conjunto de reglas basada en teoría de juegos que debe proveer incentivos a quienes dan seguridad a la red aportando su capacidad de cómputo para que los usuarios la usen y así pueda obtener valor. Quienes aportan la seguridad a la red se llaman mineros, estos son recompensados con el token bitcoin cada vez que minan bloques los cuales son agregados a la blockchain que ya explicaremos más adelante.

La recompensa inicialmente era de 50 bitcoins y cada 4 años aproxidamente disminuye a la mitad hasta que llegue a cero, a este proceso de disminución de la recompensa es lo que se llama Halving. El suministro de bitcoin es limitado a 21 millones y esta regla del protocolo implica un concepto económico de deflación que hace que en la medida que haya más demanda y debido a que la oferta es escasa, el precio tenderá a subir. Esto se diferencia enormemente de la teoría monetaria actual en la cual los bancos centrales pueden emitir dinero de la nada de forma infinita devaluando la moneda.

Token: El token se llama bitcoin con b minúscula y es la moneda como tal que se crea mediante la recompensa que se le otorga a los mineros. Su función principal es para hacer transacciones en la red. Este token se puede dividir hasta en 100.000.000 y esa cienmillónesima parte corresponde a la unidad mínima llamada satoshi.

Blockchain: Es como una base de datos en donde se guardan las transacciones. Dado que el protocolo es descentralizado cada nodo de la red tiene una copia independiente. Pero a diferencia de una base de datos que almacena datos en registros, las transacciones son almacenadas en bloques con identificadores criptográficos para enlazar los bloques que hace que una vez que un bloque se añada no puede ser modificado nunca. Esta propiedad de inmutabilidad provee la confianza de que es un libro contable público y transparente en el que nadie puede hacer trampa. Estas propiedades de transparencia e inmutabilidad de la blockchain son muy atractivas para ser usadas en proyectos donde éstas dos característica sean necesarias. Esta es la razón por la cual  empezaron a nacer nuevas criptomonedas que como punto débil la mayoría no tienen la descentralización que es en realidad el aspecto más importante de Bitcoin.

 

Conclusiones:

Bitcoin ha sido atacada y será atacada por dos entes: los enemigos de la libertad como China o los que quieren esclavizar a través de la deuda como la reserva federal, bancos centrales o el FMI.

Para los enemigos mencionados en el párrafo anterior  no tiene ningún valor porque no tiene respaldo. En realidad lo que quieren decir es que no les interesa porque no lo pueden controlar. La naturaleza descentralizada hace que cualquier persona o incluso estado lo pueda usar, pero no lo puedan controlar.

Así como en el pasado el oro era considerado un refugio de valor frente a la incertidumbre del mercado, ahora  Bitcoin se convierte en un activo de refugio para aquellos que entienden los fundamentos que te acabo de explicara y lo almacenan en el largo plazo.

El precio de Bitcoin se ha mantenido por la adopción que estos hodlers hacen de la criptomoneda.  ¿Y entonces porque se da su alta volatilidad?   La respuesta es muy simple y es porque dado que el precio se rige estrictamente por la oferta y demanda del mercado, todo tipo de especuladores entre ellos algunos de gran patrimonio hacen trading de todo tipo haciendo fluctuar el precio todo el tiempo.

Aunque Satoshi Nakamoto quiso crear un dinero para que las personas pudieran hacer transacciones entre ellos sin necesidad de un banco que haga la intermediación, Bitcoin en el momento en que se está escribiendo este artículo se ha adoptado como una reserva de valor para hodlers a largo plazo  y como activo especulativo por traders. 

Aunque desde el 2018 que se implementaron protocolos de segunda capa como la lightning network , ya se pueden hacer micropagos solventando algunos problemas que tiene hacer transacciones pequeñas con el protocolo base de Bitcoin.

No te voy a engañar, en Bitcoin hay personas que se han hecho millonarias y hay otras que han perdido mucho dinero. La diferencia entre los primeros y los segundos es que los primeros se educaron y entendieron los fundamentos.

Ahora la respuesta que estás buscando, ¿vale la pena comprar Bitcoin?  

Ninguna persona que haya tenido una estrategia de largo plazo de Bitcoin ha perdido dinero, porque aunque a corto plazo fluctué a largo plazo siempre sigue una tendencia alcista, debido a que el suministro fijo (oferta) y adopción incremental (mayor demanda) harán que el precio suba.

Y cuando veas en cualquier otro lugar que Bitcoin se puede ir a cero, es simplemente porque esa persona no entiende la tecnología.