¿Qué es el consenso blockchain? – Entendiendo blockchain

Una fácil explicación del consenso

1
158
noticias de criptomonedas más relevantes, consenso blockchain

En posts anteriores hemos abordado distintos aspectos sobre blockchain. Sabemos que es un sistema resistente a la censura, seguro y transparente, y que solucionó el problema de la falsificación (doble gasto) en sistemas de efectivo digital sin autoridad central. Sin embargo, desde un punto de vista más amplio, blockchain es la primera solución práctica para el problema del consenso en sistemas distribuidos sin confianza entre sus participantes (también llamado problema de los generales bizantinos).

qué es el consenso blockchain
Fuente: https://app.hedgeye.com/insights/51858-cartoon-of-the-day-chum?type=cartoons via @hedgeye

¿Qué es el consenso?

Una red informática sencilla está constituida por un servidor central que tiene el control de la base de datos, y unos clientes que pueden conectarse para leer información. En este caso, sólo el servidor central puede modificar la base de datos, así que siempre hay una versión confiable de la información (la que está en el servidor). Sin embargo, es un sistema vulnerable porque una falla en el servidor bloquea por completo el funcionamiento de la red.

Para solventar este problema, se puede replicar la base de datos en varios servidores. De esta forma, si un servidor falla, la información aún estaría accesible en alguna de las réplicas. Sin embargo, como la transmisión de datos no es inmediata, y las fallas pueden ocurrir en cualquier momento, es posible que en ciertas ocasiones exista más de una versión de la base de datos.

Esto hace necesario definir unas reglas que permitan saber cuál es la versión aceptada de la base de datos cuando aparezcan discrepancias, en otras palabras que puedan establecer el consenso de la red alrededor de una versión de la información.

¿Cuál es el problema del consenso en redes distribuidas sin confianza entre sus participantes?

Establecer reglas que garanticen el consenso de la red cuando hay confianza entre los participantes es sencillo. Existen distintas soluciones, pero en general se trata de controlar cuál de los servidores puede modificar la información, y cuáles condiciones deben cumplirse para que la modificación sea aceptada. En este caso se asume que ningún participante actuará maliciosamente, así que sólo debe manejarse la posibilidad de fallas de los servidores o de los medios de transmisión.

Lograr el consenso en redes en las que cualquiera puede conectarse y hacer modificaciones, sin que existan permisos ni confianza entre ellos es mucho más complejo. Los canales de comunicación no son confiables, las fallas pueden ocurrir en cualquier momento, y cualquiera de los participantes podría intentar hacer daño a la red modificando maliciosamente la información, especialmente cuando es una red que maneja dinero.

¿Cómo resolvió Bitcoin ese problema?

La clave es la prueba de trabajo, de la cual hablamos en el post anterior. Por una parte, establece un sistema de incentivos que hace poco atractivo atacar la red, con lo cual el potencial de ataques disminuye. Por la otra, establece unas reglas que permiten a los participantes determinar la versión aceptada de la información en cualquier momento.

Estas reglas tienen relación con la cadena de bloques. Recordemos que los mineros codifican un bloque de transacciones cada cierto tiempo (unos 10 minutos en Bitcoin) y que codificar el bloque requiere gran cantidad de trabajo computacional para cumplir las condiciones de dificultad de la red.

En ocasiones puede ocurrir que 2 mineros envíen bloques diferentes de forma simultánea. Esto puede ocurrir por demoras en la transmisión de datos (los dos consiguen la solución al mismo tiempo, y la envían antes de recibir la de su contraparte), o por ataque deliberado a la red por parte de alguno de ellos.

En estos casos, el consenso de la red se rompe momentáneamente, y ocurre lo que se denomina un fork, en otras palabras, la cadena de bloques se divide y hay dos opciones ahora. Cada minero debe decidir en cuál cadena de bloques seguir trabajando.

El protocolo de Bitcoin indica que cuando esto sucede, la cadena válida es la más larga. Como la generación de cada bloque requiere de un gran esfuerzo computacional, la cadena más larga es aquella en la que está trabajando la mayoría del poder computacional de la red (porque para ser más larga debe tener más bloques).

Esto significa que cuando los mineros siguen trabajando en alguna de las versiones del fork están emitiendo un voto que tiene un peso proporcional a su poder de procesamiento, y la versión que consiga mayor cantidad de votos es la que será aceptada.

que es el consenso blockchain
Esto es lo que ocurre cuando se rompe el consenso. La cadena que logre tener el apoyo de mayor poder informático en la red se hará más larga y será la aceptada, la otra desaparece. El icono es cortesía de mynamepong través de Flaticon, bajo licencia CC 3.0 BY

Esta condición es la que resuelve el problema de los generales bizantinos. Si existe confianza entre los participantes, y el sistema sólo necesita ser resistente a fallas no intencionadas, el poder de voto puede ser igual para cada participante, pero esto no es posible cuando se teme que alguno de los participantes pueda actuar maliciosamente, ya que alguno de ellos podría controlar múltiples identidades y así aumentar su poder de voto, esto se llama Ataque SybilHacer un ataque de este tipo en una red que utiliza la prueba de trabajo como algoritmo de consenso requiere acumular poder informático, y esto no se puede hacer de forma artificial.

Esta condición también hace que la información de la red sea inmutable. Si se quiere modificar una transacción ocurrida en el pasado sería necesario hacer el trabajo informático necesario para generar todos los bloques ocurridos a partir de ese momento antes de que la red pueda procesar el siguiente bloque legítimo, ya que de otra forma la cadena de bloques modificada sería más corta y la red automáticamente la descartaría.

Es destacable el ingenio con el que Bitcoin combinó tecnologías existentes como las firmas digitales y la prueba de trabajo para solucionar de forma eficiente un problema muy complejo. Ese trabajo sentó las bases para una tecnología que aún está en sus primeras etapas de desarrollo, y que evoluciona de forma permanente para tener un impacto cada vez mayor en la vida de muchas personas.

1 COMENTARIO

DEJA UNA RESPUESTA

Please enter your comment!
Please enter your name here