EL LIBRO DE SATOSHI
también podría ser interceptado, lo que llevaría al segundo general a vacilar
también. El primer general podría estar enviando una confirmación de la
confirmación, pero ésta también podría haber sido interceptada. Por lo tanto,
nuevamente, el primer general podría dudar a menos que obtenga una
confirmación de esta confirmación de la primera confirmación. Este proceso
podría ocurrir infinitas veces, sin que ninguno de los dos pudiera saber si los
mensajes fueron enviados o si fueron interceptados por el enemigo.
Para obtener más información, lea la sección "Ilustrando el problema" en
el siguiente artículo de Wikipedia:
http://en.wikipedia.org/wiki/Two_Generals%27_Problem
Ver también este artículo sobre la tolerancia de fallas Bizantina:
http://en.wikipedia.org/wiki/Byzantine_fault_tolerance
Re: Papel del dinero electrónico Bitcoin P2P
Satoshi Nakamoto, jueves 13 de noviembre 2008, 19:34:25 -0800
_______________________________________________________________
James A. Donald escribió:
No es suficiente que todos sepan X. También necesitamos que todos
sepan que todos conocen X, y que todos saben que todos saben que
todos conocen X - lo que, como en el problema de los generales
bizantinos, es el clásico y difícil problema del procesamiento
distribuido de datos.
_____________________________________________________________
La cadena de prueba de trabajo es una solución al Problema de los
Generales Bizantinos. Trataré de re-expresarlo en ese contexto.
Varios generales bizantinos tienen cada uno un ordenador y quieren
atacar por fuerza bruta la contraseña del wi-fi del Rey, que han
descubierto que tiene una cierta cantidad de caracteres. Una vez que
animan a la red a generar un ataque, deben descifrar la contraseña
dentro de un tiempo limitado para entrar y borrar los registros, de lo
71
EL PROBLEMA DEL GENERAL BIZANTINO
contrario serán descubiertos y tendrán problemas. Solo tendrán suficiente
poder de CPU para descifrarlo lo suficientemente rápido si la mayoría de
ellos atacan al mismo tiempo.
No les importa especialmente cuándo será el ataque, solo que todos estén
de acuerdo. Se ha decidido que cualquiera que lo desee puede anunciar
un momento concreto, y que cualquier momento que se escuche primero
será el momento oficial de ataque. El problema es que la red no es
instantánea, y si dos generales anuncian diferentes momentos de ataque
casi al mismo tiempo, algunos pueden escuchar a uno primero y otros
escuchar al otro primero.
Usan una cadena de prueba de trabajo para resolver el problema. Una vez
que cada general recibe la hora de ataque que escuchan primero,
configuran su ordenador para resolver un problema de prueba de trabajo
extremadamente difícil que incluye el momento de ataque en su hash. La
prueba de trabajo es tan difícil que se espera que tarden 10 minutos en
trabajar todos a la vez antes que uno de ellos encuentre una solución.
Una vez que uno de los generales encuentra una prueba de trabajo, lo
transmite a la red, y todos cambian su cómputo actual de prueba de
trabajo para incluir esa prueba de trabajo en el hash en el que están
trabajando. Si alguien estaba trabajando con un momento de ataque
diferente, cambia a este, porque su cadena de prueba de trabajo ahora
es más larga.
Después de dos horas, el momento de ataque debe ser hasheado por una
cadena de 12 pruebas de trabajo. Cada general, verificando la dificultad
de la cadena de prueba de trabajo, puede estimar cuánta potencia de
CPU paralela fue gastada por hora, y ver lo que debe de haber requerido
la mayoría de los ordenadores para producir tanta prueba de trabajo en el
momento asignado. Todos debieron haberlo visto porque la prueba de
trabajo es prueba de que trabajaron en ello. Si la potencia de CPU
exhibida por la cadena de prueba de trabajo es suficiente para descifrar
la contraseña, ellos pueden atacar con seguridad a la hora acordada.
La cadena de prueba de trabajo es lo que resuelve todos los problemas de
sincronización, de base de datos distribuida y de visión global que pedías.
_______________________________________________________________
La Lista de Correo de Criptografía
72