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 abordan 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 se deriva de él.
El problema de los generales bizantinos explicado
El problema de los generales bizantinos es una de las situaciones teóricas más discutidas cada vez que se plantea el tema del consenso.
El problema se reconoció por primera vez en un artículo de 1982 llamado El problema de los generales bizantinos por Leslie Lamport, Robert Shostak y Marshall Pease. El papel 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 fallido puede exhibir un tipo de comportamiento que a menudo se pasa por alto, a saber, enviar 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 se deriva 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, todos los cuales se sientan en diferentes campamentos. Los comandantes deben idear un plan de acción común (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).
Por lo tanto, los generales deben encontrar la manera de garantizar que:
- Todos los generales leales deciden sobre el mismo plan de acción.
- Un pequeño número de traidores no puede hacer que los generales leales adopten un mal plan.
Se considera que un sistema que es capaz de resolver lo anterior tiene tolerancia a fallas bizantinas (BFT). Aquí es donde se origina 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).
Resolviendo 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, lo que da margen a la 3f+1 regla donde F es el número de nodos no leales, y la fórmula da el número de nodos leales 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 del llamado Tolerancia práctica a fallas bizantinas.
¿Cómo resuelve 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.
¿Cómo resuelve 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 esencialmente 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 el cifrado de clave pública en una red digital. Para evitar cualquier manipulación de los datos, la seguridad criptográfica utiliza hash, mientras que la identidad de un usuario de la red se verifica a través de su clave pública.
Las transacciones están protegidas en bloques, que están conectados a otros bloques por su valor hash y protegidos por criptografía. Es importante tener en cuenta que la cadena de bloques utiliza un Merkle Tree para verificar los valores hash que provienen del bloque de génesis (inicial). Cada bloque que proviene del bloque de 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 un libro de reglas claro y definitivamente objetivo para que la cadena de bloques lo siga para superar el problema de los generales bizantinos. Un miembro de la red debe publicar una prueba de que completó el trabajo para poder agregar información a la cadena de bloques (por lo tanto, prueba de trabajo). Esto tiene un alto costo para el miembro y lo desincentiva a compartir información defectuosa, ya que será refutada por los demás estados miembros.
Todas las reglas son claras y objetivas, lo que significa que no se puede alterar la información.
¿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, se basan en la participación. Para convertirse en un validador de red, el usuario primero debe apostar fondos en el sistema. Aquellos que posean una mayor participación también pueden validar más bloques y ganar mayores recompensas. Aquellos que intentan alterar la información corren el riesgo de perder la cantidad apostada.
La forma en que estos sistemas resuelven el problema varía. Por ejemplo, Ethereum 2.0 emplea el algoritmo Casper. Necesita 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 intentos variables de resolver 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.