BLOG

Buscar
  • José Antonio Ces Franjo

Los generales bizantinos

Me pide un "amigo" que escriba una entrada sobre Blockchain. Porque por mucho que lee no se entera de nada. No me extraña. Es complejo. Pero seguramente este símil ayude y oriente al lector en la resolución de un problema que los Bitcoins resolvieron. Pero ya te avanzo de que aquí se mezclan varios conceptos. Hablemos de Blockchain.

Existía en informática hasta hace poco un problema no resuelto: el problema de los generales bizantinos. Se trata de un experimento mental creado para ilustrar un dilema que emerge cuando queremos lograr un consenso entre entidades distribuidas cuya comunicación no es fiable. Los sistemas distribuidos presentan muchas ventajas, como por ejemplo la escalabilidad y, por lo tanto, su rendimiento. Sin embargo, estas ventajas sólo son alcanzables si todos sus elementos trabajan con un mismo objetivo y de manera coordinada. Y aquí es donde surge el paradigma que quedaba sin resolver. Veamos el símil y avancemos identificando los distintos elementos clave que constituyen Blockchain.

El problema de los generales bizantinos es un experimento mental creado para ilustrar un dilema cuando queremos lograr un consenso entre entidades distribuidas cuya comunicación no es fiable

Una ciudad se encuentra sitiada por dos ejércitos bizantinos comandados por sendos generales. Cada uno muy suyo. ¿Te los estás imaginando? Pero la cuidad es inexpugnable salvo que ambos ataquen a la vez. Cada uno de los dos ejércitos están situados en los dos únicos puntos de acceso a la ciudad: la cara norte y la cara sur. Esta situación impide que los ejércitos atacantes puedan coordinarse en el ataque. Para realizar esta coordinación emplean mensajeros. Pero ambos desconfían porque estos mensajeros podrían ser interceptados por algún espía de la ciudad que, cambiando el mensaje, podría provocar un ataque descoordinado. Algo que daría la victoria a la ciudad sobre los generales.


¡Vaya por Dios!


¿Cómo deben hacer nuestros ínclitos militares para coordinar su acción?


Primer elemento clave en Blockchain: criptografía


Efectivamente.


La criptografía sería una buena respuesta a este primer problema. Si codifico mi mensaje para que sólo el otro general pueda decodificarlo, nadie podrá intercambiarlo por otro diferente. Lo podría hacer, pero el general que recibiese el mensaje falso, enseguida descubriría el engaño al intentar decodificar el mensaje y ver que aquello no es posible. Con esto se conseguiría que, de haber ataque, sería siempre de manera coordinada.

Si codifico mi mensaje para que sólo el otro general pueda decodificarlo, nadie podrá intercambiarlo por otro diferente

Pues vaya. Si lo hemos resuelto en segundos. ¿Era éste el gran "problema no resuelto"?


En realidad no. Déjame que siga y lo entenderás.


Extendamos un poco más el símil y supongamos que la ciudad sitiada no lo está siendo por dos, sino por varios generales, que reciben una primera orden (atacar o retirarse) de uno de ellos con mayor rango. Ahora la cosa se complica. Se trata de coordinar no a un par sino a varios generales para que la acción sea coordinada y sincronizada. Con este nuevo planteamiento, existe la posibilidad de que algunos generales sean traidores y, por lo tanto, decidan enviar mensajes con información errónea para confundir a los generales leales. Necesitamos algo que valide que todas las órdenes que den estos generales son reales para garantizar su fidelidad a un objetivo común. Algo que otorgue a cada general las garantías suficientes para atacar o, en caso contrario, retirarse. Y aquí se entremezclan generales leales con traidores, intercepciones de los mensajeros o simplemente deserciones o mensajes no recibidos. Y aparece, por tanto, la necesidad de incorporar un elemento más. Una base de datos con todos los flujos de comunicación entre los distintos generales. Algo que nos diga qué decisiones está tomando cada uno de ellos y que esta información, aquí recogida, esté debidamente verificada.


Segundo elemento clave en Blockchain: cadena de bloques


Para hablar de este segundo elemento clave, que da nombre a la globalidad, cambiemos de contexto y hablemos ahora de Bitcoin. Ya volveremos luego a la batalla ;)


Bitcoin es el caso de éxito que hace emerger Blockchain como una entidad propia y ponerlo al frente de la manifestación en materias tecnológicas. En 2009 alguien (y digo "alguien" porque Satoshi Nakamoto no es más que un alias) diseñó, en palabras textuales "una versión P2P de dinero electrónico que permitía que los pagos en línea se hiciesen directamente sin pasar por una institución financiera". La idea era permitir intercambios sin necesidad de contar con una entidad que validase dichas transacciones. La forma de asegurar la validez de la operación era, claro está, la criptografía (primer elemento clave ya comentado).

Bitcoin es una versión P2P de dinero electrónico que permitía que los pagos en línea se enviasen directamente sin pasar por una institución financiera

Sin embargo, al no existir nadie validando la operación, había que meter algún elemento adicional que permitiese comprobar que un mismo pago no era aceptado más de una vez, esto es, que el proceso no generase un "doble gasto". Y para ello es necesario un registro de cada transacción. Un libro de cuentas. Pero en este caso, éste debería ser escrito de forma distribuida, al tiempo que sea confiable.


La cadena de bloques (o "blockchain" en inglés), no es más que esto. Una sucesión de transacciones validadas que se van apuntando en un sitio único y que es accesible por todo aquél que quiera consultarlo. Una base de datos distribuida que, como tal, precisa de cierta validación en lo que a su escritura se refiere. Si no fuese así, cualquiera podría dar validez a transacciones no realizadas. Por ello, la cosa no acaba aquí, sino que se precisa de un tercer elemento.


Tercer elemento clave en Blockchain: la prueba de trabajo


Teníamos claro que necesitábamos apuntar las transacciones en algún punto, pero necesitamos que éstas fueran previamente validadas. Que no haya mentiras y que el propio proceso vigile que así sea. Y aquí surge un tercer concepto alrededor de Blockchain que es la prueba de trabajo o "proof of work". Un mecanismo que estaba siendo utilizado para evitar spam en el correo electrónico o ataques de denegación de servicio.


Te lo explico, que te veo la cara.


Estamos ahora en el año 1997 y Adam Back, un criptógrafo inglés, hace un planteamiento para resolver el incipiente problema (entonces) del spam en el correo electrónico. La idea pasa por hacer costoso el generar spam, hasta el punto en que cualquiera que quiera tocar las narices tenga que asumir un costo basado en tiempo de procesador. Para ello crea "hashcash", un mecanismo rápido de verificación de unos códigos cuya generación es extremadamente costosa. De esta forma, el envío de un correo provocará un coste lo suficientemente elevado de CPU como para que éste no sea "gratis". Una prueba de trabajo. Esto debería evitar los grandes "spams" de correo.

Bitcoin implementa la "prueba de trabajo" como elemento necesario para validar las transacciones

Le dedico un poco más de tiempo a esto para todo aquél que no está familiarizado con esto del "hashing", porque en muchas explicaciones del Blockchain arrancan directamente con esto. Además, como dice mi madre, "el saber no ocupa lugar". Las funciones hash, funciones resumen o funciones digest son algoritmos que tienen como entrada una cadena variable y dan como salida un código de longitud determinada. En criptografía se utilizan mucho, porque permiten asimetrías muy interesantes. Por ejemplo la que se da en el mecanismo planteado por el bueno de Back. Asimetría por la cuál generar el código mediante la función hash es algo muy costoso, mientras que su validación es inmediata. En el caso de Bitcoin se utiliza el algoritmo SHA-256. Se obliga al verificador a ejecutar este algoritmo hasta que el código resultante tiene un número determinado de ceros en sus cifras más significativas. Para ello se va variando un contador especial llamado "nonce" (number used once) que se combina con la cadena de entrada y provoca un código de salida diferente. Estableciendo un control sobre un número mayor o menor de ceros, controlaremos el tiempo que estas operaciones tardan en dar el resultado esperado, y esto permite controlar los tiempos de validación y, por lo tanto, los nuevos bitcoins que entran en el sistema. Luego volveremos a esto.


Lo importante de todo esto, y lo que debes saber es que Bitcoin implementa la prueba de trabajo como elemento necesario para validar las transacciones. Y ello obliga a que la gente se implique y dedique su tiempo para hacer que el sistema sea sostenible.


Pero... ¿qué gente? ¿a cambio de qué?


Cuarto elemento clave en Blockchain: los mineros


Pues está claro... a cambio de bitcoins... la moneda oficial de todo este mundo.


Al ser todo este proceso algo donde no existe una entidad central que valide la transacción, es necesario que algún mecanismo de fe del hecho. Y no sólo eso. Alguien debe "imprimir" dinero. Alimentar el proceso. Y este mecanismo, si no existe centralizado, deberá existir distribuido. Con Bitcoin, las transacciones son validadas por entidades ajenas en la transacción, que ofrecen su trabajo a cambio de una comisión. Si yo realizo una transacción de bitcoins a otra persona y lo comparto en la red, alguien tiene que validar esta operación. Y lo hará a cambio de un contraprestación, porque nadie trabaja gratis. A cambio de nuevos bitcoins. Pues bien. Ese "alguien" son los mineros: entidades especializadas en la validación de transacciones a cambios de nuevos bitcoins que se pondrán en circulación.

Los "mineros" son entidades especializadas en la validación de transacciones a cambios de nuevos bitcoins que se pondrán en circulación

La consecuencia de todo este trabajo que generan los mineros, será que las nuevas transacciones quedarán "enganchadas" en esa cadena de bloques que es el libro de registro de todos los movimientos que se producen en Bitcoin. El famoso Blockchain.


¿Entendido?


En conclusión...


Volvamos ya con nuestros generales, que se nos aburren.


Si todos los generales fueran capaces de ir registrando todas sus contestaciones, previa validación de las mismas con una "prueba de trabajo" y evitando su posible falsificación en tránsito por medio de codificaciones en origen, su problema (el problema de los generales bizantinos) quedaría resuelto. La consulta de esa "cadena de bloques" que iría rellenándose de manera progresiva nos dejaría un registro de acciones (atacar o retirarse) que permitiría hacer un balance conjunto de las decisiones de nuestro ejército y, consecuentemente, determinar si existe una mayoría con la pretensión de darlo todo por la patria o, por el contrario, de abandonar la causa.

Blockchain es una tecnología que habla de criptografía, de bases de datos distribuidas y de evitar trampas con pruebas de trabajo

Blockchain es una tecnología que habla de criptografía, de bases de datos distribuidas y de evitar trampas con pruebas de trabajo. Pero también habla de entidades terceras que validan lo que en otros ambientes haría una entidad central certificadora. Entidades que necesitan ser remuneradas a cambio de su esfuerzo. Por eso Blockchain y los bitcoins (o las criptomonedas en general) están tan unidas, y se hace difícil pensar en su separación.


¿Blockchain sin Bitcoin?


Sin embargo, la utilización del concepto en otros sectores es algo atractivo, porque puede sortear las dificultades típicas de un entorno cuya supervisión sea compleja y costosa cuando se hace de manera centralizada, y su distribución no se ha contemplado hasta la fecha como algo viable. Si encontramos los mecanismos de remuneración de las validaciones necesarias para que los bloques se añadan en la cadena, y si adecuamos el esquema a otro tipo de bloques distintos de las transacciones, habremos entrado en una dimensión mucho más amplia y profunda de lo que hoy vivimos en Internet.


Gracias a Blockchain el Internet que conocíamos hasta ahora, de intercambio de información, evolucionará hacia uno nuevo donde se intercambiará valor y confianza sin terceros que deban validar dichos intercambios. La fiebre actual por esta tecnología deriva de una burbuja alrededor de las criptomonedas que hoy se ha empezado a desinflar. No sin daños colaterales. Como en otras muchas. Sin embargo, nos ha abierto los ojos a una posibilidad muy interesante y deseada que no es otra que evitar las entidades de control. Distribuir el control. Permitir el autogobierno para evitar dictaduras, regulaciones y peajes innecesarios. Un concepto "fully Internet".

El Internet que conocíamos hasta ahora, de intercambio de información, evolucionará hacia uno nuevo donde se intercambiará valor y confianza sin terceros que deban validar dichos intercambios

Habrá que ver con el tiempo si esta idea se va convirtiendo en realidad. Yo estoy convencido de que se andará en esta dirección. Con tiento y con la dificultad lógica de los comienzos. Esos comienzos ya han arrancado caminos en campos como la distribución, las entidades de registro y certificación, las cadenas de suministro o la gestión de las identidades. Hoy son sólo embriones de un posible futuro construido sobre Blockchain. Y, como siempre, por el camino veremos muchos caídos y escucharemos muchas tonterías. Yo ya he escuchado varias... más de las que debería, viniendo de quienes han venido. Pero es normal, porque no es esto algo simple de entender si no se explica.


¿Verdad, "amigo"?

367 vistas
  • LinkedIn - Círculo Negro
  • Twitter - Círculo Negro
  • Facebook - Círculo Negro

Room714 © 2019

Madrid | Spain