Nodo
¿Qué es un nodo 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.
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
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.
Comunicación
¿Cómo se comunica un nodo con otros nodos?
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
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 sí ejecuta un nodo te envíe información correcta.
No confíes, verifica.
2. Privacidad
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 sí 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:
- 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.
- 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)
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.