MASTERING BITCOIN
Tabla de contenidos:

¿Qué es y para qué sirve un nodo de Bitcoin?

Autor

Entre Plancton y Ballenas. Twitter para correcciones, comentarios o sugerencias: @entreplanctony1.

El presente artículo se realizó para el Seminario socrático de Mastering Bitcoin a través de @libreriadesatoshi.

En el siguiente enlace puedes encontrar la documentación de referencia:
https://bitcoin.org/en/full-node

¿Qué es un nodo?

Bitcoin está estructurado como una arquitectura de red de igual a igual sobre internet. El término igual a igual, o P2P, significa que las computadoras que participan en la red son iguales entre sí, no hay nodos “especiales” y todos los nodos comparten la carga de proporcionar servicios a la red.

Los nodos se conectan entre sí en una red de malla con una topología “plana”. No hay un servicio centralizado y no hay jerarquía dentro de la red. Los nodos en una red P2P proporcionan y consumen servicios al mismo tiempo, y la reciprocidad actúa como incentivo para la participación. Las redes P2P son inherentemente resistentes, descentralizadas y abiertas.

Entonces, definimos un nodo de Bitcoin como un ordenador que está ejecutando el software de Bitcoin-Core. Con este software el ordenador está descargando datos de la red de Bitcoin de manera constante. Estos datos vienen de otros nodos y el ordenador los utiliza para construir su propia copia de la cadena de bloques y transacciones de Bitcoin. Además de descargar dicha información, una vez que el nodo tiene una copia válida, el nodo también retransmite estos datos para propagarlos a otros nodos a través de la red.

La copia de la cadena de bloques que el nodo descarga es validada usando las reglas de consenso de Bitcoin.
Bloque por bloque, el nodo verifica que toda la información, desde el primer bloque de Bitcoin hasta el bloque más reciente, sea correcta. Y si algún bloque contiene información errónea o incompleta, este no será propagado hacia los demás nodos, manteniendo así la consistencia de los datos y aumentando la resistencia a la censura y puntos de falla a través de la red. Entre más nodos existan, más difícil es atacar a la red.

A nivel personal, el incentivo de montar un nodo de bitcoin es aumentar la privacidad en la consulta y ejecución de nuestras transacciones de bitcoin. Cuando consultamos una dirección de nuestra wallet de bitcoin en un explorador de bloques en internet, estamos sujetos a confiar en que el sitio donde hacemos la consulta no divulgue o guarde la IP de nuestra computadora y la dirección de la wallet que nos pertenece.

Con un nodo de Bitcoin, las consultas que hagamos de nuestra wallet, solo son locales dentro de la base de datos que tenemos guardada en nuestra computadora, aumentando así nuestra privacidad y seguridad.

Sé tu propio Banco y contribuye a la red más resistente que existe.

Bitcoin Core: La implementación de referencia

🛈 Ya que Bitcoin es un estándar, existen varias implementaciones del software cliente de Bitcoin.

Cada implementación escoge el lenguaje a utilizar, el tipo de computador para el que está construida y cada una tiene un equipo de desarrolladores que trabaja para mantener su código. Mientras siga las reglas del sistema de Bitcoin, cualquiera puede crear su propia implementación del cliente de Bitcoin.

Pero existe una implementación de referencia, también conocida como el cliente Satoshi (o bitcoin core), que se administra como un proyecto de código abierto por un equipo de desarrolladores que revisa y mejora el código de manera constante y deriva de la implementación originalmente escrita por Satoshi Nakamoto. Bitcoin Core es la implementación de referencia.

Este cliente implementa todos los aspectos del sistema Bitcoin, incluyendo la administración de carteras, un motor de verificación de transacciones con una copia completa del histórico de transacciones (la cadena de bloques), y enrutamiento de la red peer-to-peer de Bitcoin. Esto es análogo a un servidor de email autónomo en el sentido en que se ocupa de cada aspecto del protocolo sin requerir de ningún otro servidor o servicio de terceros.

El cliente de Bitcoin Core se puede instalar de las siguientes formas:

  • Compilando el código fuente, se instala desde el repositorio de GitHub. Esta opción es recomendada para expertos en programación.
  • Bitcoin Core daemon (bitcoind), que viene ya compilado desde la página de bitcoin.org y solo contiene la interfaz de línea de comandos. Opción recomendada para usuarios avanzados.
  • Bitcoin Core Graphical User Interface (GUI), también ya compilado desde la página de bitcoin.org. Recomendado si no estás acostumbrado a la línea de comandos. Puedes ver el tutorial en el siguiente link: Instalación de Bitcoin Core con interfaz gráfica

La descarga inicial de bloques (IBD)

🛈 La descarga inicial de bloques se refiere al proceso en el que los nodos se sincronizan con la red descubriendo otros nodos y descargando los bloques para construir su propia cadena de manera independiente.

Esto sucederá cuando un nodo esté muy atrasado con respecto al bloque más reciente de la cadena. Durante el proceso de IBD, un nodo no acepta transacciones entrantes ni solicita transacciones del pool de transacciones no confirmadas (mempool).

Cuando instalas un nodo completo, tu nodo pasará por el proceso de IBD en la primera ejecución, y puede llevar una cantidad considerable de tiempo porque debe descargar la cadena completa de bloques (que actualmente es aproximadamente de 540 Gigabytes). Este proceso puede durar días dependiendo de tu conexión a internet.

Durante la descarga, puede haber un alto uso de la red y de CPU. Esto se debe a que el nodo verifica los bloques descargados y simula toda la historia de transacciones de Bitcoin para asegurar la consistencia de la información. El cliente ocupará una cantidad cada vez mayor de espacio de almacenamiento en el directorio que hayas definido al inicio de la instalación.
⚠️ Mientras el nodo realiza el IBD, no podrás ver una nueva transacción relacionada con tu wallet hasta que el cliente se haya puesto al día con el bloque que contiene esa transacción.

Muchos sistemas operativos hoy en día (Windows, Mac OS y Linux) entran en un modo de bajo consumo después de que se activa el protector de pantalla, lo que detiene el tráfico de red. Esta es a menudo la configuración predeterminada en las computadoras portátiles y en todas las computadoras de escritorio. Verifica la configuración de tu protector de pantalla y desactiva las opciones automáticas de “sueño” o “suspensión” para asegurar el apoyo a la red siempre que tu computadora esté funcionando, o al menos durante la descarga inicial de bloques, ya que si se interrumpe dicha descarga, la sincronización inicial tomará mucho más tiempo.

🛈 El proceso de verificación que implica el IBD es lo que hace que cada nodo mantenga una copia consistente de la cadena de bloques.