Tolerancia a fallas bizantinas en la cadena de bloques: una mirada más cercana

El campo de las criptomonedas se ha expandido enormemente en los últimos años. El surgimiento de nuevos proyectos también presenta varias formas en que los desarrolladores están abordando los problemas existentes en el campo.

Un término que se usa con bastante frecuencia es el "mecanismo de consenso BFT". BFT significa Tolerancia a fallas bizantinas y presenta un problema teórico en los sistemas informáticos que existía mucho antes de Bitcoin.

Sin embargo, muchos protocolos basados ​​en blockchain se dedican a resolver los problemas asociados con la tolerancia a fallas bizantinas y lo siguiente analiza más de cerca el asunto y todo lo que conlleva.

Explicación del problema de los generales bizantinos

El problema de los generales bizantinos es una de las situaciones teóricas más discutidas siempre que se plantea la cuestión del consenso.

El problema fue reconocido por primera vez en un artículo de 1982 titulado El problema de los generales bizantinos por Leslie Lamport, Robert Shostak y Marshall Pease. El periódico dice:

Un sistema informático confiable debe ser capaz de hacer frente a la falla de uno o más de sus componentes. Un componente defectuoso puede exhibir un tipo de comportamiento que a menudo se pasa por alto, que envía información contradictoria a diferentes partes del sistema. El problema de hacer frente a este tipo de fracaso se expresa de forma abstracta como el Problema de los generales bizantinos.

El nombre proviene de la analogía presentada en el documento. Más específicamente, los autores describen una situación teórica en la que varias divisiones del ejército bizantino acampan fuera de una ciudad enemiga. Cada división está comandada por su propio general, que se sienta en diferentes campamentos. Los comandantes deben idear un plan de acción conjunto (ya sea para atacar o retirarse) y solo pueden comunicarse con mensajes. Sin embargo, algunos de los generales pueden ser traidores y tratar de evitar que los generales leales lleguen a un acuerdo (consenso).

bft_img2
Fuente: Wikipedia

Por lo tanto, los generales deben encontrar una manera de garantizar que:

  • Todos los generales leales deciden el mismo plan de acción.
  • Un pequeño número de traidores no puede inducir a generales fieles a adoptar un mal plan.

Se cree que un sistema capaz de resolver lo anterior tiene tolerancia a fallas bizantinas (BFT). De aquí es de donde proviene el algoritmo de consenso BFT.

En esencia, la tolerancia a fallas bizantinas es una condición que evita que el sistema sufra de participantes poco confiables (no leales).

Resolver el problema del general bizantino

Para resolver el problema de los generales bizantinos y lograr la tolerancia a fallas bizantinas (BFT), debe haber un acuerdo mayoritario entre los generales sobre su estrategia.

Esto se logra de varias maneras dependiendo del sistema y sus necesidades. En el contexto de blockchain, tanto la prueba de trabajo como la prueba de participación son capaces de lograr la tolerancia a fallas bizantinas, pero el enfoque en ambos es diferente.

La mayoría de las cadenas de bloques de prueba de participación pueden tolerar que hasta un tercio de sus nodos sean defectuosos, dejando espacio para la regla 3f + 1 donde F es la cantidad de nodos infieles y la fórmula proporciona la cantidad de nodos leales de los que el sistema necesita tener.

Por ejemplo, en un sistema con 4 nodos, solo uno de ellos puede estar defectuoso para cumplir con los criterios (3f + 1).

En febrero de 1999, Miguel Castro y Barbara Liskov del Laboratorio de Ciencias de la Computación del Instituto Tecnológico de Massachusetts (MIT), publicaron un artículo en el que presentaban una solución al problema a través de la denominada Tolerancia Práctica a Fallos Bizantinos.

¿Cómo soluciona Blockchain el problema de los generales bizantinos?

La tecnología basada en blockchain presenta múltiples soluciones al problema de los generales bizantinos. Las diferencias se derivan del algoritmo de consenso designado y su enfoque de BFT, pero tanto la Prueba de trabajo como la Prueba de participación brindan soluciones viables.

bft_img1

¿Cómo soluciona Bitcoin el problema de los generales bizantinos?

Curiosamente, en el documento técnico original, Satoshi Nakamoto no mencionó el problema de los generales bizantinos, pero con la introducción de la red Bitcoin, el creador seudónimo básicamente lo resolvió a través del algoritmo de consenso de Prueba de trabajo (PoW).

Para resolver el problema, Satoshi creó una forma de utilizar la seguridad criptográfica y la criptografía de clave pública en una red digital. Para evitar la manipulación de datos, la seguridad criptográfica utiliza hash, mientras que la identidad de un usuario de la red se verifica utilizando su clave pública.

Las transacciones están aseguradas en bloques, que están vinculados a otros bloques por su valor hash y protegidos por encriptación. Es importante tener en cuenta que la cadena de bloques utiliza un Merkle Tree para verificar los hash que provienen del bloque de génesis (inicial). Cualquier bloque derivado del bloque génesis es válido. Estos bloques son validados por mineros que resuelven acertijos criptográficos en una competencia para producir bloques como parte del método de consenso.

Bitcoin ha establecido una regulación clara y definitivamente objetiva que debe seguir la cadena de bloques para superar el problema de los generales bizantinos. Un miembro de la red debe publicar una prueba de finalización del trabajo para agregar información a la cadena de bloques (por lo tanto, prueba de trabajo). Esto tiene un alto costo para el miembro y hace que sea desalentador para ellos compartir información incorrecta, ya que será refutada por otros miembros del estado.

Todas las reglas son claras y objetivas, lo que significa que la información no puede ser alterada.

¿Cómo resuelve la prueba de participación el problema de los generales bizantinos?

Las redes gobernadas por el algoritmo de consenso de prueba de participación no se basan en la minería, sino en la participación. Para convertirse en un validador de red, el usuario primero debe apostar los fondos en el sistema. Aquellos que poseen una participación mayor también pueden validar más bloques y obtener mayores recompensas. Aquellos que intentan alterar la información corren el riesgo de perder la apuesta.

La forma en que estos sistemas resuelven el problema varía. Por ejemplo, Ethereum 2.0 usa el algoritmo Casper. Se requiere una mayoría mínima de dos tercios de todos los nodos para acordar un bloque específico antes de que pueda crearse y agregarse a la red.

Hay varios intentos de solucionar el problema según la necesidad del sistema y el enfoque del equipo. Por ejemplo, con la prueba de participación delegada (dPoS), llegar a un consenso es significativamente más rápido. Por otro lado, algunos sistemas implementan la práctica tolerancia a fallas bizantinas.

Publicar tolerancia a fallas bizantinas en Blockchain: una mirada más cercana apareció por primera vez en CryptoPotato .