El libro de la Web3
Capítulos / Parte III
Parte III · Fundamentos técnicos, explicados de manera accesible

10. Sistemas distribuidos, confianza y el problema de los generales bizantinos

Capítulo 10 · 26 min de lectura · Suscriptores

Este capítulo expone la idea más profunda que sostiene a la Web3, aquella de la que la palabra "descentralización" extrae todo su significado. El capítulo anterior (el Capítulo 8, Criptografía para no especialistas) mostró cómo las matemáticas permiten que una sola persona demuestre quién es y demuestre que un mensaje no ha sido alterado. Pero la ambición central de la Web3 es más grande y más extraña que eso. Consiste en lograr que una multitud de computadoras — propiedad de desconocidos que no se conocen ni confían entre sí, dispersas por todo el mundo, algunas averiadas y otras activamente deshonestas — se pongan de acuerdo, a pesar de todo, sobre una única verdad compartida, como "quién es dueño de qué dinero", sin jefe, sin sede central y sin árbitro que zanje las disputas. Durante décadas, los principales científicos de la computación consideraron que esto era algo entre extraordinariamente difícil y demostrablemente imposible. Entender por qué es tan difícil es el preludio necesario para entender por qué la cadena de bloques (blockchain; el Capítulo 11) y Bitcoin (el Capítulo 12) fueron recibidos, por quienes conocían la historia, como un avance genuino y no como mera exageración publicitaria.

Lea este capítulo gratis

Invite a 3 personas a suscribirse y este capítulo se abre aquí.

En pocas palabras

Imagine una orquesta sin director, en la que los músicos no pueden verse entre sí y solo pueden comunicarse pasándose notas escritas a mano de fila en fila. De algún modo, aun así, deben empezar juntos, mantenerse juntos y terminar juntos. Un sistema distribuido es esa orquesta, y la "música" es cualquier tarea que las computadoras intenten ejecutar al unísono.

Imagine que envía una carta a un amigo y no recibe respuesta. ¿Se perdió la carta en el correo? ¿Está su amigo de viaje? ¿La leyó y decidió no contestar? ¿Habrá muerto? A partir del puro silencio no puede saberlo — y sin embargo debe decidir si espera, si escribe de nuevo o si actúa sin él. Cada computadora de un sistema distribuido vive permanentemente en esta niebla de silencio, y dentro de ella debe tomar decisiones de consecuencias reales.

Una falla por colapso es un miembro del comité que se va temprano a su casa; una ausencia incómoda, pero al menos usted sabe a qué atenerse. Una falla bizantina es un miembro del comité que se queda, le miente a la cara, le cuenta una historia a usted y la contraria a la persona de al lado, y conspira en voz baja con otros dos para arruinar la reunión. Tolerar ausencias ya es bastante difícil; tolerar el engaño deliberado y coordinado es mucho más difícil todavía.

El consenso es el problema de lograr que una sala llena de personas que solo pueden pasarse notas, que no pueden estar seguras de que las notas lleguen, y algunas de las cuales quizás estén mintiendo, salgan todas de la sala habiendo acordado la misma decisión — y confiadas, además, en que las demás están de acuerdo. El resto de este capítulo trata de exactamente cuán difícil es eso, y de dónde están los límites infranqueables.

Los generales son las computadoras; los mensajeros son la red; "atacar o retirarse, pero todos juntos" es la exigencia de consenso; y los traidores son las máquinas con fallas bizantinas que mienten. El problema pregunta: ¿pueden los participantes honestos alcanzar siempre una decisión compartida, aun cuando un subconjunto desconocido de ellos haga todo lo que esté en su poder para impedirlo? La analogía es precisa, no decorativa — el problema abstracto es, en efecto, el problema concreto que enfrentan los ingenieros informáticos.

Si usted quiere estar a salvo frente a un solo mentiroso en el grupo, tres personas no bastan — se necesitan al menos cuatro, de las cuales a lo sumo una puede estar mintiendo. Las mentiras son corrosivas precisamente porque un mentiroso puede contar historias distintas a personas distintas, de modo que los miembros honestos no pueden simplemente "someterlo a votación": el mentiroso puede haber votado en un sentido ante media sala y en el sentido contrario ante la otra media. Derrotar eso exige una holgada supermayoría de participantes honestos.

Un rumor sin firma puede retorcerse por el camino — "ella me dijo que atacáramos" es imposible de refutar. Una nota firmada y a prueba de alteraciones, no: lleva la marca infalsificable de su autor, de modo que el mentiroso ya no puede atribuirle a alguien palabras que nunca dijo. Las firmas digitales convierten el resbaladizo "me dijeron que" en evidencia verificable, y ese solo cambio afloja drásticamente la tenaza del problema. Nótese, eso sí, la dependencia: la garantía descansa en el supuesto de que las firmas de verdad no pueden falsificarse — que es exactamente para lo que sirve la criptografía del Capítulo 8.

Castro y Liskov tomaron un resultado que se admiraba como teoría y lo convirtieron en ingeniería — una receta que un sistema en operación podía seguir de verdad para continuar funcionando mientras algunas de sus propias computadoras intentaban corromperlo. Su diseño asumía, sin embargo, que los participantes eran una lista de máquinas conocida y fija. Permitir que cualquier persona del mundo entre y salga a voluntad, sin pedir permiso, era un salto adicional — y ese salto es exactamente el que Bitcoin daría después.

FLP dice que si usted exige una garantía matemática absoluta de que un grupo de computadoras llegará siempre a un acuerdo, y no hace suposición alguna sobre la velocidad de la red, entonces esa garantía no es posible — una sola computadora que se quede callada puede, en el peor de los casos, estancar la decisión para siempre. Es el equivalente, en sistemas distribuidos, de un límite de velocidad fundamental: no una falta de ingenio, sino un muro incorporado al problema mismo.

Dos sucursales de un banco comparten un único libro contable de cuentas y se mantienen sincronizadas por una línea telefónica. Un día la línea se corta — una partición de red. A cada sucursal llega un cliente que quiere retirar dinero de la misma cuenta. Las sucursales enfrentan ahora una elección inevitable. Pueden rechazar todas las transacciones hasta que la línea se restablezca, de modo que los dos libros nunca discrepen — eso es elegir la consistencia a costa de la disponibilidad (el banco es correcto pero está cerrado). O pueden seguir atendiendo a los clientes con el último saldo que conocieron, arriesgándose a que el mismo dinero se pague dos veces — eso es elegir la disponibilidad a costa de la consistencia (el banco está abierto pero posiblemente equivocado). Lo que no pueden hacer, mientras la línea esté caída, es estar a la vez plenamente abiertas y plenamente correctas. Esa imposibilidad es el teorema CAP.

Enviarle a alguien una moneda digital es, por defecto, más parecido a enviarle una fotografía de una moneda que a entregarle la moneda misma — usted conserva su copia después del envío, y por lo tanto puede "enviarla" de nuevo a otra persona. El dinero no puede funcionar así. Resolver el problema del efectivo digital significa encontrar la manera de que una moneda digital se comporte como una física: gastable una sola vez.

El problema sin resolver nunca fue "¿cómo demuestro que esta moneda es mía?" — de eso se encargaban las firmas. Era "¿cómo hacen miles de desconocidos que no confían entre sí, sin jefe y sin lista de miembros, para acordar todos el único orden verdadero de quién le pagó a quién, de modo que la misma moneda no pueda gastarse dos veces?". Ese es un problema de consenso entre quienes desconfían mutuamente — el problema de los generales bizantinos con el disfraz del dinero.

Qué cubre el capítulo

  1. Qué es un sistema distribuido
  2. Por qué los sistemas distribuidos son difíciles
  3. Dos tipos de falla: colapsos honestos y mentiras activas
  4. El problema del acuerdo entre quienes desconfían mutuamente
  5. El problema de los generales bizantinos
  6. La tolerancia a fallas bizantinas se vuelve práctica
  7. Los límites infranqueables: el resultado de imposibilidad FLP
  8. El teorema CAP: no se puede tener todo
  9. Por qué fracasó el dinero digital anterior: el problema del doble gasto
  10. Síntesis

Términos que se explican en este capítulo

El capítulo completo está en el libro.

Comprar el libro completo