El eterno debate entre si bitcoin u otras blockchains similares son descentralizadas o distribuidas es una constante en el grupo de Telegram de Blockchain España. Bitcoin nació como un efectivo electrónico o dinero descentralizado gestionado entre pares sin necesidad de utilizar intermediarios pero, desde un punto de vista tecnológico, sigue sin haber consenso en muchos casos si descentralizado o distribuido son los términos correctos a usar. Parece una cuestión secundaria para los que no siguen este mercado a diario, pero resulta revelador si nos fijamos en la forma de pensar de las personas que lo seguimos.

¿Cuál es la diferencia entre sistemas descentralizados o distribuidos desde un punto vista tecnológico?

En el contexto de la computación se llama sistema distribuido a un grupo de computadoras que están conectadas entre sí mediante un protocolo de comunicaciones estándar y que trabajan como una única supercomputadora ofreciendo un servicio común. Los sistemas distribuidos se pueden clasificar en diferentes tipos dependiendo del número de computadoras interconectadas, el software que funciona en ellas o también por cómo se agrupan.

Por ejemplo, se pueden conectar varias computadoras mediante una red de área local (cluster), donde todos los nodos se encuentran en el mismo lugar. Estos nodos pueden funcionar con el mismo software y es mediante un protocolo de comunicaciones local como se tiene acceso a cada uno de los componentes del programa en cualquiera de los nodos. Así se aprovechan los recursos de hardware y software de la red, e incluso, si se realiza la configuración adecuada, se puede garantizar alta disponibilidad del servicio y un poder de cómputo superior.

MÁS INFORMACIÓN

Hay otro tipo de sistema distribuido en el que las computadoras de la red no tienen porqué estar ubicadas en el mismo lugar (grid o red en malla). En este ejemplo, se conectan entre sí mediante un protocolo de comunicaciones global y forman un sistema heterogéneo en el que los nodos de la red no tienen por qué tener instalado todos el mismo software.

¿Qué ejemplos de redes distribuidas existen?

Una de las redes de computación distribuida más populares vio la luz a mediados de 1999, cuando la Universidad de California en Berkeley lanzó el proyecto SETI@Home. Descargabas en el disco duro de tu ordenador paquetes de datos obtenidos por el SETI, y en los momentos que tu computadora estaba inactiva (cuando saltaba el salvapantallas) comenzaba a ejecutarse en segundo plano un programa que procesaba esos paquetes de datos. Al finalizar, tu computadora devolvía los paquetes ya procesados y comenzaba la descarga de nuevos paquetes de información sin procesar para empezar de nuevo. Esto lo hacían usuarios en todo el mundo, de una forma totalmente desinteresada más allá de la colaboración con un proyecto interesante.

Con el paso de los meses la red fue creciendo, creando una red de computadoras enorme y ayudando así a conseguir un objetivo común. En este caso, la búsqueda de inteligencia extraterrestre se potenciaba utilizando el radiotelescopio de Arecibo (Puerto Rico), entonces el más grande del mundo. Este proyecto hoy sigue activo y tiene casi 300.000 ordenadores activos realizando cómputos distribuidos por todo el mundo. 

Otros proyectos similares fueron Einstein@Home que tiene como objetivo buscar ondas gravitacionales en el universo, o Rosetta@Home que busca diseñar nuevas proteínas con la colaboración de casi un millón de computadoras.

La red de bitcoin es una red de computación distribuida que sigue los mismos principios, pero en ella podemos encontrar dos tipos de agrupaciones de nodos. Mayoritariamente encontraremos una red distribuida de tipo grid, donde los nodos no tienen porqué estar ubicados en el mismo lugar geográfico y cada nodo puede estar en un punto diferente del mundo. Se conectan entre sí mediante un protocolo de comunicación propio y se descargan la misma información periódicamente. Por otro lado una parte minoritaria de los nodos conforma una red distribuida de tipo cluster, es decir, computadoras conectadas entre sí y ubicadas en el mismo sitio.

La mayor parte de ellos son clusters de computadoras que procesan la información previamente descargada con las capacidades que tengan disponibles, normalmente la suma de los procesadores y ALU (unidad aritmético-lógica). Finalmente comparten con el resto de nodos de la red global el resultado, contribuyendo mediante un algoritmo de consenso en el mantenimiento de un sistema de almacenamiento de información bastante seguro como es su propia cadena de bloques.

En una red distribuida como la de bitcoin no tienen por qué estar todos los nodos conectados a la totalidad del resto de los nodos porque resultaría complicadísimo. En este supuesto, se tendría que tener abiertas centenares de miles de conexiones bidireccionales en todos los nodos, lo que no es razonable ni eficaz. Así que en realidad, en bitcoin se comparte la misma información replicada entre todos los nodos, donde entre muchos otros datos se encuentran unos nodos participantes de la red que se va actualizando periódicamente. De ese modo basta con establecer comunicación con algunos nodos cercanos que a su vez estos estarán conectados a otros nodos creando algo parecido a una red neuronal. De ello se encarga bitcoin como protocolo, el software que todo nodo participante en la red debe tener instalado y debidamente configurado.

¿Entonces bitcoin es distribuido o descentralizado?

Hoy en día se puede decir que el sistema computacional descentralizado por antonomasia es el que utiliza bitcoin, ya que no posee uno o varios nodos centrales que se encargan de almacenar y procesar la información de la cadena de bloques. De ser así perdería todo su valor, pues la confianza en el consenso de la mayoría de los nodos es la principal característica del protocolo. Al fin y al cabo se creó con tal fin; prescindir de una entidad centralizada que pudiera manipular la información registrada y almacenada o censurar el uso de bitcoin. Tal y como se ha explicado antes, todos los nodos de la red participan de un modo u otro en hacer la red más rápida y segura.

La diferencia principal entre un sistema descentralizado y uno distribuido es cómo y dónde se realiza la toma de decisiones y cómo la información es compartida entre los nodos del sistema.

En un sistema descentralizado no hay un punto único de decisión. Cada nodo toma la decisión que más le conviene en función de las reglas de consenso que el operador del nodo ha elegido libremente. El resultado del conjunto del sistema es la respuesta colectiva. Los nodos en un sistema descentralizado no tienen conocimiento del estado de la totalidad del sistema, pero toman las decisiones que más le convienen con la información que tienen. En cambio en un sistema distribuido el procesamiento se comparte entre múltiples nodos, pero las decisiones son centralizadas y tienen conocimiento del estado total del sistema.

Han colaborado en este artículo: José Antonio Bravo, economista, miembro fundador de AvalBit.org @AvalBit y co-administrador del foro Telegram de BlockchainEspana.comJavier Domínguez Gómez, Nodo programador y co-administrador del foro Telegram de BlockchainEspana.comAlex Preukschat es autor coordinador del libro ‘Blockchain: La revolución industrial de Internet’ Ediciones Gestión 2000 (Grupo Planeta) y de la novela gráfica‘Bitcoin: la caza de Satoshi Nakamoto’@BitcoinComic y nodo Coordinador de BlockchainEspana.com@BlockchainES, AlianzaBlockchain.org @AlianzaBlock y SSIMeetup.org @SSIMeetup

Fuente: El País