¿Cuál es el problema general bizantino en informática? ¿Bajo qué condición no se puede resolver el problema de los generales bizantinos? ¿Cuál es el problema del acuerdo bizantino y su solución?
Uno de los problemas importantes que Satoshi Nakamoto, conocido como el creador de Bitcoin, tuvo que encontrar una solución con tecnologías como el libro mayor distribuido y la cadena de bloques, en las que basa su trabajo, es el Problema de los Generales Bizantinos, publicado en 1980, basado en el obra de Lessie Lamport, Robert Shostak y Marshall Pease. En algunas fuentes, este problema (quizás no con ese nombre) fue mencionado por primera vez por el Prof. Dr. Se dice que se presentó en una investigación titulada «Algunas restricciones y compensaciones en el diseño de comunicaciones de red» escrito por Eralp Akkoyunlu y su equipo en 1975.
Las criptomonedas son posibles gracias a la coordinación de nodos dispersos en muchos lugares diferentes, gracias a ciertos algoritmos de consenso. Al revisar estos problemas, podemos comprender la causa raíz de las dificultades de consenso entre ellos. Entonces, ¿qué les pasaba a los generales bizantinos? Miremos más de cerca; Para entender este problema, primero debemos establecer la escena.
Los ejércitos bizantinos rodearon el castillo por todos lados para apoderarse del castillo enemigo con sus fuertes muros y valientes y valientes guerreros. Aunque los soldados que defienden el castillo son pocos, ciertamente no son presa fácil, tanto por su coraje como por los fuertes muros del castillo. Si los ejércitos bizantinos no pueden coordinar sus ataques y atacar desde al menos tres alas al mismo tiempo, es muy probable que fracasen. En el ejército bizantino, el ejército de cada ala está bajo el mando de un general, y dado que los ejércitos no están muy cerca uno del otro, la comunicación entre ellos solo puede ser proporcionada por mensajeros. En los bosques donde los mensajeros usan sus caminos, los soldados enemigos capturan a los mensajeros siempre que sea posible. Por si esto fuera poco, también hay inteligencia de que hay un traidor en el ejército.
El general de más alto rango, como comandante, debe comandar el ataque. El general que dirige los ejércitos del norte tiene el rango más alto y dirige el ataque. Envía un mensajero a los otros tres ejércitos, anunciando que atacarán al amanecer del día siguiente.
Ahora consideremos las posibilidades…
La primera posibilidad en realidad se superpone con otro problema, también conocido como el problema de los dos ejércitos.
¿Los mensajeros enviados llegaron a su destino? ¿O fueron capturados en el camino? La única forma de responder a esa pregunta sería que cada ejército respondiera al mensaje recibido, es decir, enviar un mensajero de vuelta. De esta forma, el comandante puede entender que el mensaje ha sido entregado a los propietarios al observar la retroalimentación que recibe.
Aunque el problema parece solucionado, pongámonos en la piel de un general enviando un mensajero al comandante que ha recibido el mensaje. El comandante dio la orden de atacar y le pidió que enviara un mensajero para verificar, pero ¿y si el mensajero enviado para verificar es atrapado en el camino? En este caso, el comandante puede cancelar el ataque, ya que no sabrá si hemos recibido la orden, ¡y un ataque coordinado es absolutamente necesario para ganar! Entonces, ¿debemos atacar al amanecer mañana por la mañana o no?
Si examina el problema detenidamente, se dará cuenta de que en realidad estamos atrapados en un circuito cerrado. No importa cuántas veces el comandante y el general se envíen mensajeros entre sí, nunca pueden llegar a un 100% de acuerdo, pero como resultado del intercambio mutuo de suficientes mensajeros, se forma un consenso serio. Sin embargo, el tiempo que le tomará a cada novia ir requerirá largos períodos de tiempo para llegar a un compromiso adecuado. Una de las soluciones alternativas que se pueden aplicar para evitar esta pérdida de tiempo puede ser enviar 100 mensajeros a la vez. Incluso si algunos de los mensajeros son atrapados, la probabilidad de que algunos mensajeros lleguen a su destino aumentará para que se pueda llegar a un acuerdo suficiente sin extender el tiempo. Sin embargo, incluso si el tiempo se acorta aquí, el costo es muy alto.
Si cortamos el Problema de los Dos Ejércitos aquí y volvemos a nuestros generales bizantinos en problemas, tienen un problema serio más allá de este Problema de los Dos Ejércitos, que tienen un traidor con el que lidiar.
El emperador bizantino y sus asistentes evalúan y ponderan la inteligencia de que hay un traidor entre ellos. Finalmente, preparan un protocolo que tienen que implementar los generales y se lo envían a los generales. Según este protocolo, cada general compartirá la orden que reciba con otros generales mediante el envío de un mensajero.
El comandante que dirige el Ejército del Norte envía la orden: «Atacaremos al amanecer mañana por la mañana» a los otros tres ejércitos con un mensajero. Suponiendo que de alguna manera hemos resuelto el problema de los dos ejércitos, ahora suponemos que el comando ha llegado al otro lado de la calle. Según la orden del emperador, cada general que recibe la orden del comandante envía las órdenes tanto al comandante como a los demás generales con un mensajero. Así, cada general tiene sus propias órdenes y órdenes que otros generales afirman haber recibido.
Si uno de los generales es un traidor y decide no atacar, el ataque de 3 de los 4 ejércitos podrá derribar la ciudad. Para ello, el general traidor deberá dar información falsa mientras repite la orden y tratar de confundir a los demás generales. Sin embargo, dado que solo uno de los 3 mensajes enviados por el general traidor a los generales habrá venido de él, dos de los mensajes contendrán el mismo mensaje correcto y los generales identificarán el mensaje distorsionado e implementarán la orden real.
Así, la solución del Problema de los Generales Bizantinos revela la característica básica de las estructuras descentralizadas. No solo un centro, sino que todos los puntos están en comunicación mutua entre sí.
Este problema que hemos descrito anteriormente se llama el problema de los generales bizantinos. Si algún miembro de la comunidad en las redes blockchain envía información inconsistente sobre las transacciones a otros, la confiabilidad de la cadena de bloques se ve comprometida y no hay una autoridad central que pueda intervenir para corregirlo, los nodos para acordar las transacciones realizadas dependen de una adecuada. solución al Problema General Bizantino en la red.
Una de estas soluciones se conoce como sistema de tolerancia a fallas bizantinas [BFT] como referencia al problema general bizantino que compartimos con usted anteriormente. Sin embargo, la tolerancia a fallas bizantinas es solo una posible solución al problema general bizantino. PoW [Prueba de trabajo], PoS [Prueba de participación] se pueden dar como ejemplos de otras soluciones conocidas.