Nodo

¿Qué es un nodo Bitcoin?

Diagrama que muestra un nodo como parte de una red de computadoras ejecutando el programa Bitcoin.

Un nodo es una computadora que ejecuta el programa Bitcoin.

Se conecta con otros nodos en la red para compartir información sobre transacciones y bloques.

Un nodo es cualquier dispositivo que envía, recibe o procesa datos conectado a una red.
techjury.net

La forma más fácil de convertirte en nodo es descargar y ejecutar el software Bitcoin Core.

Función

¿Qué hace un nodo?

Un nodo tiene dos funciones principales:

1. Mantener una copia de la blockchain

Diagrama que muestra un nodo entrando en la red Bitcoin y descargando una copia de la blockchain.

Cuando ejecutas Bitcoin por primera vez, se conecta a otros nodos de la red para descargar una copia completa de la blockchain.

Eso permite que tu nodo se actualice con el estado actual de la blockchain, para que puedas empezar a recibir (y validar) las transacciones y bloques más recientes enviados por la red.

Descargar la blockchain completa también significa que queda replicada en otra computadora. Eso refuerza la red, porque cualquiera que quisiera destruir Bitcoin tendría que eliminar cada copia de la blockchain. Y, al mantener una copia, ayudas a replicarla para otros nodos que entren en la red en el futuro.

Bitcoin se parece mucho a torrent, donde muchas computadoras diferentes están sembrando el mismo archivo (la blockchain).

2. Validar y retransmitir nuevas transacciones y bloques

Después de descargar la copia más reciente de la blockchain, un nodo puede empezar a recibir las transacciones y bloques más recientes.

Cada nodo verifica las transacciones y bloques que recibe contra un conjunto de reglas, para asegurarse de que son válidos, antes de retransmitirlos a los nodos con los que está conectado.

Como resultado, un nodo trabaja constantemente para aplicar reglas y transmitir datos por la red.

Requisitos

¿Qué necesitas para ejecutar un nodo Bitcoin?

Bitcoin es solo un programa de computadora, así que todo lo que necesitas para ejecutar un nodo es una computadora y una conexión a Internet.

Hay algunos requisitos de sistema que ayudan al programa a funcionar bien:

Espacio en Disco

Recomendado: 2+ TB

Antes que nada, vas a necesitar un disco lo bastante grande para almacenar la blockchain (actualmente en torno a 850 GB).

La blockchain también crece a un ritmo de unos 100 GB/año, así que necesitas espacio disponible para seguir el ritmo si piensas ejecutar un nodo durante un período prolongado.

Puedes reducir drásticamente el espacio necesario ejecutando un nodo podado (pruned).

RAM

Recomendado: 2+ GB

La RAM se usa para almacenar las transacciones más recientes en el mempool, además de almacenar UTXOs para ayudar a acelerar la validación de nuevas transacciones y bloques.

No necesitas mucha RAM para ejecutar Bitcoin, pero cuanto más le des, más eficientemente se ejecutará.

Ancho de Banda (Bandwidth)

Recomendado: 2+ TB/mes

Un nodo está enviando y recibiendo datos constantemente (transacciones y bloques) hacia y desde otros nodos de la red, así que vas a necesitar suficiente ancho de banda para cubrir eso.

No es una cantidad exorbitante de datos, pero un nodo Bitcoin va a usar bastante más ancho de banda del que usarías navegando por sitios web y enviando correos electrónicos.

Puedes limitar la cantidad de ancho de banda que usa tu nodo con la configuración maxuploadtarget.

Los mayores requisitos son tener el espacio en disco para almacenar la blockchain y ancho de banda suficiente para enviar y recibir los datos más recientes de la red.

Así que Bitcoin no es el programa más ligero del mundo, pero es perfectamente posible ejecutarlo en un portátil o escritorio de uso diario. De hecho, es común que la gente configure un nodo Bitcoin en un Raspberry Pi.

No necesitas mantener un nodo Bitcoin ejecutándose 24/7.

Es útil para la red si puedes mantenerlo funcionando todo el tiempo posible, pero puedes iniciar y detener el programa tantas veces como necesites.

Los mensajes se transmiten en la mejor medida posible, y los nodos pueden salir y volver a la red cuando quieran, aceptando la cadena de prueba de trabajo más larga como prueba de lo que ocurrió mientras estuvieron fuera.
Satoshi Nakamoto, Lista de Criptografía (artículo de Bitcoin)

Comunicación

¿Cómo se comunica un nodo con otros nodos?

Diagrama que muestra un nodo comunicándose con otro nodo enviando un mensaje por una conexión TCP.

Un nodo se comunica con otros nodos enviando muchos mensajes individuales.

Esos mensajes se envían por TCP (Transmission Control Protocol), una forma común de que dos computadoras en una red se comuniquen.

Cada nodo también necesita seguir un protocolo Bitcoin específico al comunicarse, que básicamente es un conjunto de reglas sobre la estructura y el orden de los mensajes enviados entre los nodos.

La Red Bitcoin es completamente abierta y accesible para cualquiera. Así que, siempre que sigas las reglas para conectarte y enviar mensajes, cualquiera puede escribir su propio software para comunicarse con un nodo.

Beneficios

¿Por qué ejecutar tu propio nodo?

1. Confianza

Diagrama que muestra a una persona dependiendo de un nodo de terceros para obtener información sobre una transacción.

Ejecutar tu propio nodo significa que no necesitas confiar en nadie más para obtener información sobre transacciones.

Eso significa que puedes saber con 100% de certeza que cada pago que recibes es válido, y que cada consulta que haces sobre la blockchain es correcta. Si no ejecutas tu propio nodo, estás confiando en que otra persona que ejecuta un nodo te envíe información correcta.

No confíes, verifica.
Frase común usada en Bitcoin

2. Privacidad

Diagrama que muestra a una persona transmitiendo una transacción por un servidor de terceros.

Ejecutar tu propio nodo significa que no necesitas compartir tus transacciones con servicios de terceros.

Si no ejecutas tu propio nodo, necesitas usar un sitio o cartera de terceros que ejecuta un nodo para enviar transacciones a la red por ti. Esos servicios pueden rastrear tus solicitudes junto con tu IP para ayudar a construir una imagen de tus actividades, lo cual no es ideal para la privacidad.

3. Apoyar la red

Ejecutar tu propio nodo apoya a la red de dos formas:

  1. Replicación de la blockchain. Bitcoin es difícil de matar porque todo el historial de transacciones está replicado por el mundo, así que añadir un nodo más vuelve a Bitcoin más resistente.
  2. Transmisión de datos. Bitcoin funciona porque muchos nodos individuales cooperan para difundir las transacciones y bloques más recientes por la red. Al ejecutar un nodo, añades un retransmisor más a la red.

Ejecutar un nodo es como sembrar un archivo torrent; y a todo el mundo le gusta un seeder.

4. Desarrollo

Ejecutar tu propio nodo es útil si planeas convertirte en desarrollador de Bitcoin: tienes acceso a todos los datos de bitcoin en tu computadora local (a través de bitcoin-cli) y, si compilas Bitcoin Core desde cero, al código fuente que lo hace funcionar.

Definiciones

¿Cuáles son los diferentes tipos de nodo?

Nodo Completo (Full Node)

Diagrama que muestra un nodo completo validando todos los nuevos bloques y transacciones que recibe.

Un nodo completo es un nodo que puede seguir la blockchain y validar los bloques y transacciones que recibe.

Un nodo completo recibe una copia completa de la blockchain, lo que significa que tiene memoria de todo el historial de transacciones y puede determinar si cualquier nuevo bloque o transacción que recibe es válido. En otras palabras, puede aplicar las reglas del sistema y por lo tanto es un participante activo de la red.

1. Nodo de Archivo (Archival Node)

Un nodo de archivo mantiene una copia completa de la blockchain, lo que significa que puede replicar la blockchain entera para cualquier nodo nuevo que entre en la red.

2. Nodo Podado (Pruned Node)

Un nodo podado no mantiene una copia completa de la blockchain. En su lugar, recibe una copia completa, pero va borrando los bloques más antiguos para ahorrar espacio en disco. Todavía puede aplicar las reglas (validar y retransmitir), pero no puede servir una copia completa de la blockchain a los nodos nuevos.

Nodo Ligero (Lightweight Node)

"Thin Node", "Thin Client", "Lightweight Client"

Un nodo ligero puede seguir la blockchain, pero no puede validar los bloques y transacciones que recibe. Puede verificar que un bloque o transacción existe en la blockchain, pero no puede confirmar que sean válidos. Por lo tanto, es incapaz de aplicar las reglas del sistema y no es un participante activo de la red.

Cartera SPV

Simple Payment Verification

Un tipo común de nodo ligero es la llamada cartera SPV (por ejemplo: Electrum). Una cartera SPV solo recibe los encabezados de bloque (mucho más pequeños que los bloques completos) y puede pedir una prueba a un nodo completo para confirmar si una transacción específica está en un bloque específico (una prueba de Merkle).

Sin embargo, aunque una cartera SPV usa muy poca banda y disco, tiene que confiar en que la información enviada por un nodo completo es válida. Si quieres tener certeza de que todas las transacciones que ves son válidas sin tener que confiar en nadie, necesitas ejecutar un nodo completo.

Implementaciones

¿Qué software necesito para ejecutar un nodo completo?

La forma más fácil de ejecutar un nodo completo es descargar la implementación original: Bitcoin Core. Hay implementaciones alternativas (btcd, bcoin, BitcoinJ), pero todas son mucho menos populares que el cliente original.

Todos los comandos bitcoin-cli mencionados en este sitio asumen que estás ejecutando un nodo Bitcoin Core.

Software Personalizado

Nada te impide escribir tu propio software de nodo, si quieres. La red Bitcoin es completamente abierta, así que, si descubres cómo conectarte con otros nodos y sigues las reglas de la red, podrás usar Bitcoin con tu propio software. Lo cual es bastante bueno.

Y, lo más importante, nadie puede impedirte escribir tu propio software de nodo. Y de eso se trata Bitcoin.

Recursos