El problema bizantino

El Imperio Bizantino, Turquía en la Edad Media, tenía una gran riqueza y estaba rodeado por 10 países vecinos que existían desde hacía mucho tiempo. Sin embargo, el Imperio Bizantino tenía altos muros y era tan inexpugnable que no. un solo país vecino podría invadir con éxito. Cualquier invasión de un solo vecino fracasará, y también es posible que sea invadida por otros 9 vecinos. Las capacidades defensivas del Imperio Bizantino eran tan fuertes que al menos la mitad de sus diez vecinos tuvieron que atacar al mismo tiempo para poder abrirse paso.

Sin embargo, si uno o varios de los vecinos acuerdan atacar juntos, pero se produce una traición durante el proceso real, entonces todos los invasores pueden ser aniquilados.

De modo que cada parte actuó con cautela y no se atrevió a confiar fácilmente en sus vecinos. Este es el problema de los generales bizantinos.

En el problema bizantino, el punto más importante es: cómo todos los generales pueden llegar a un acuerdo para atacar Bizancio. Entre ellos, ejemplos de situaciones posibles son los siguientes:

Utilice una explicación. el modelo:

Supongamos que sólo hay tres personas, A, B y C. Si uno de los tres es un traidor. Cuando A emite una orden de ataque, si B es un traidor, puede decirle a C que recibió una orden de "retirarse". En ese momento, C recibió un "ataque" y una "retirada", por lo que C estaba confundido por la información y no sabía qué hacer.

Si A es un traidor. Le dice a B que "ataque" y a C que "retire". Cuando C le dijo a B que había recibido una orden de "retirada", B no pudo alinearse con C porque había recibido una orden de "ataque" del comandante.

Por las razones anteriores, en un sistema con solo tres roles, mientras uno sea un traidor, es decir, el número de traidores sea igual a 1/3, el problema bizantino será irresoluble.

Se puede observar que mientras el número de traidores sea mayor o igual a 1/3, el problema bizantino es irresoluble.

Técnicamente entendido, el problema de los generales bizantinos es un Problema de tolerancia a fallos del sistema distribuido. Las criptomonedas se basan en la red P2P y son un sistema distribuido típico. Por analogía, lo general es el nodo en la red P2P, el mensajero es la comunicación entre los nodos y la decisión de atacar o retirarse es el consenso que debe lograrse. . Si una computadora de nodo independiente se expande, se desconecta o ataca la red para causar daños, todo el sistema dejará de funcionar. Dicho sistema será muy frágil, por lo que es necesario permitir que algunos nodos fallen o causen daños sin afectar el funcionamiento. de todo el sistema, esto requiere soporte teórico del algoritmo para garantizar que el sistema distribuido aún mantenga la coherencia y la disponibilidad incluso cuando existe una cierta cantidad de nodos de error.

Además, el problema de los generales bizantinos es diferente del problema de dos ejércitos. El primero supone que no hay problema con el mensajero, pero que el general se ha rebelado. mensajero.

La solución definitiva ha llegado——

Si varios de los 10 generales inician mensajes al mismo tiempo, inevitablemente causará caos en el sistema, provocando que cada uno tenga su propio ataque. plan de tiempo, lo que dificulta tomar medidas consistentes.

Cualquiera puede iniciar un mensaje ofensivo, pero ¿quién lo enviará? Satoshi Nakamoto agregó inteligentemente el costo de enviar información al sistema, es decir:

El costo que agrega es la "carga de trabajo": el nodo debe completar un cálculo para difundir el mensaje a cada ciudad-estado. Por supuesto, quien haga el trabajo primero podrá correr la voz. (Este es también el significado del mecanismo de prueba de trabajo: demostrar cuánto trabajo ha realizado en el pasado probando los resultados)

Esta tecnología de cifrado, el cifrado asimétrico, puede resolver por completo la dificultad. para resolver firmas de la antigüedad Pregunta:

Cuando Satoshi Nakamoto diseñó Bitcoin, utilizó un mecanismo de prueba de trabajo llamado Hash Cash Para encontrar un número aleatorio en un bloque de transacción, la computadora solo podía. Use el método exhaustivo para encontrar este número aleatorio, se puede decir que si se puede encontrar depende completamente de la suerte, por lo que para cada nodo, solo la aleatoriedad es verdaderamente justa en este mundo. La mejor manera de lograr la aleatoriedad es usar las matemáticas. Todos los generales buscan El proceso de conocimiento se basa en una lógica matemática reconocida por todos.

Por supuesto, ¿por qué deberíamos estar obligados a realizar trabajos de cálculo? Entonces debe haber un mecanismo de incentivo: el mecanismo de recompensa de Bitcoin es recompensar 25 Bitcoins por cada bloque empaquetado, mientras que el problema de los generales bizantinos El mecanismo de recompensa puede ser dividir los beneficios obtenidos por Bizancio.

En esta red distribuida:

Cada general tiene un libro de mensajes que se sincroniza con otros generales en tiempo real.

La firma de cada general en el libro mayor se puede utilizar para verificar la identidad. Si algún mensaje es inconsistente, puede saber con qué generales son inconsistentes.

Aunque hay información inconsistente, mientras más de la mitad acepte atacar y la minoría obedezca a la mayoría, se logra conciencia política (mientras la mayoría sea buena gente, entonces se puede lograr conciencia política) .

El mecanismo de consenso en la cadena de bloques resuelve principalmente el problema de quién construirá el bloque y cómo mantener la unidad de la cadena de bloques.

El problema de la tolerancia a fallas bizantinas también necesita resolver el problema de quién inicia la información y cómo lograr la sincronización unificada de la información.

Nota: Si es nuevo en el aprendizaje de blockchain, indique si hay algo incorrecto

.