Firmas

Consenso descentralizado o la salsa mágica de Bitcoin y Ethereum

Consenso es una de la palabras mágicas dentro del ecosistema de las Blockchains públicas, como Bitcoin o Ethereum. Los ejemplos clásicos a los que recurrimos para explicar cómo funciona el consenso en estas blockchains públicas son el Problema de los Generales Bizantinos o incluso otro modelo de consenso llamado Paxos. La verdad es que muchas veces tras escuchar la lógica de cualquiera de estos dos modelos de consenso uno se queda sin entender del todo bien cómo esto aplica a Bitcoin o Ethereum. En nuestra entrevista de hoy intentaremos explicar todos estos conceptos y transmitir cómo aplica el modelo de consenso de Bitcoin o Ethereum, conocido como Prueba de Trabajo (Proof of Work - PoW en inglés) y que en el caso de Ethereum se llama GHOST.

Para ilustrarnos sobre el asunto, he invitado a Óscar Delgado, profesor de Criptografía y Seguridad Informática en la Escuela Politécnica de la Universidad Autónoma de Madrid.

¿Qué es el Problema de los Generales Bizantinos?

Este problema es, en realidad, un mero experimento mental que se plantea en un área de la informática llamada tolerancia a fallos, cuyo objetivo es estudiar la capacidad de un sistema de seguir en funcionamiento, incluso aunque se produzcan fallos en el mismo, tanto en sus comunicaciones como en sus nodos de computación.

El problema de los generales bizantinos se centra en los fallos intencionados, o cómo es posible llegar a un acuerdo (consenso) entre un conjunto de entidades con un objetivo común, pero cuando entre ellas no hay confianza. El problema se presenta en forma de un escenario de guerra, donde un grupo de generales se encuentran acampados con sus tropas alrededor de una ciudad enemiga que desean atacar. Se asume que los mensajes que éstos se intercambian pueden ser interceptados, leídos y/o modificados por el enemigo. Además, existe la posibilidad de que un porcentaje de los generales sean traidores, y envíen mensajes deliberadamente falsos para confundir al resto. A pesar de todo, el objetivo es que, incluso en estas difíciles condiciones, los generales honestos sean capaces de ponerse de acuerdo y atacar conjuntamente para ganar la batalla.

Si lo pensamos detenidamente, vemos que la aplicación de este escenario al ecosistema Bitcoin tiene todo el sentido: los participantes de la red no son confiables, las comunicaciones pueden ser interceptadas y/o modificadas (como cualquier otra en Internet) y, a pesar de todo, es necesario llegar a un consenso sobre cuáles son las transacciones correctas por el fin principal de evitar el problema del doble gasto.

¿y Paxos en qué sentido es relevante para el mundo de Blockchain?

Paxos es otro tipo de algoritmo de consenso distribuido, pero muy anterior al mundo Bitcoin, pues se publicó, de hecho, veinte años antes que éste. Es importante entender que Bitcoin es un protocolo realmente ingenioso pero que, en realidad, no inventa ninguna nueva tecnología o primitiva. Todos los elementos que componen Bitcoin ya existían y se llevaban estudiando años, pero la forma de combinarlas y utilizarlas juntas es lo que le da su enorme potencia.

En el caso particular de Paxos, que es puramente académico, no tiene relación con Bitcoin, ni se utiliza en éste de ninguna forma, porque se centran en problemas diferentes. Paxos asume que todos los nodos son confiables, escenario muy diferente del que se utiliza en Bitcoin. Además, en Paxos existen uno o varios nodos que se establecen como líderes, mientras que en Bitcoin todos los nodos son iguales en funcionalidad. Puede decirse, eso sí, que Paxos, y otro protocolos como Raft, son los "padres" inspiradores del protocolo que finalmente utiliza Bitcoin.

¿Cómo se llega al consenso en una Blockchain como la de Bitcoin?

Para situar en contexto la enorme aportación de Bitcoin, es necesario tener en cuenta que el problema de crear un sistema de moneda digital llevaba abierto desde al menos principios de los años 90 en la comunidad criptográfica. Y no por casualidad, sino porque era un problema realmente difícil de resolver, dadas las condiciones de partida: para ser anónimo, debe funcionar correctamente entre pares no confiables, y no debe existir autoridad central.

En esta situación, determinar quién tiene la razón cuando existan discrepancias (es decir, establecer un mecanismo de consenso) o cómo se genera nueva moneda no es, en absoluto, trivial. La aproximación de Nakamoto fue muy ingeniosa, que además resolvía los dos problemas simultáneamente: suponer que quien demuestre que ha trabajado en pos del bien del sistema debe "tener razón" en caso de disputa y, además, se le debe otorgar nueva moneda como recompensa.

¿Cómo demostramos matemáticamente que alguien "ha trabajado por el bien del sistema"? Con las pruebas de trabajo, que se diseñaron inicialmente para luchar contra el spam. Una prueba de trabajo es, esencialmente, un algoritmo matemático en el que hay que gastar forzosamente una cierta cantidad de cómputo mínimo para su resolución. Por tanto, si me presentas una solución válida a dicho "puzzle", sabré con certeza que has gastado un tiempo de CPU determinado en resolverlo. El tiempo de CPU es en última instancia, dinero, puesto que un ordenador tiene un coste elevado y consume mucha electricidad. Si estás dispuesto a hacer ese gasto por "el bien" del sistema parece razonable asumir que no eres un enemigo, sino alguien que pretende ayudar. En esta asunción tan simple se basa, en realidad, toda la seguridad de Bitcoin (y se deriva el ataque del 51% cuando no se cumple).

¿Cuáles son las diferencias de consenso entre Bitcoin y Ethereum?

Como hemos visto en el punto anterior, estrictamente hablando Bitcoin no tiene un algoritmo de consenso distribuido "duro", tipo Paxos, o PBFT (Practical Byzantine Fault Tolerance), como el que utiliza Hyperledger, sino que lo sustituye por una versión "soft", a través del proceso de minado. PBFT está pensado para redes de nodos de quizás una docena y que podrían dejar de funcionar si superan los 100 nodos.

En esencia, tanto Bitcoin como Ethereum utilizan una prueba de trabajo, pero el problema a resolver en éste último caso es algo diferente. Se basa en una versión modificada del introducido en Bitcoin, se llama Ethash (el algoritmo equivalente en Bitcoin es SHA-256) y ha sido diseñado para ser algo menos susceptible a la centralización (por el agrupamiento del poder de minado en las grandes granjas) que Bitcoin.

Para ello, el puzzle a resolver se diseñó de forma que la potencia computacional no fuera tan determinante a lo hora de resolverlo, de forma que cualquier minero, con una inversión mínima comparada con la necesaria para minar Bitcoin, pueda obtener beneficios. Esta es la razón por la que las grandes granjas de minado se dedican principalmente a Bitcoin.

Además, como es conocido por cualquier iniciado en estas tecnologías, Ethereum tiene planeado cambiar en el futuro a otro tipo de prueba de trabajo, denominada Proof-of-Stake o PoS (Prueba de participación). Sin entrar en detalles ahora, esta prueba elimina la necesidad del minado y, aunque hay cierta polémica al respecto, puede hacer el algoritmo de consenso algo más justo.

¿El ataque del 51% hasta qué punto es una amenaza real?

Técnicamente es desde luego posible. De hecho, en 2014 estuvo a punto de pasar de forma no intencionada, cuando un pool de minado se acercó peligrosamente al 51% de la capacidad computacional de toda la red de Bitcoin. Afortunadamente, no tenían ninguna intención de realizar un ataque, y se "auto-desactivaron", dividiendo su potencia en varios sub-pools más pequeños.

Además, existen diversos trabajos académicos que demuestran que la cifra del 51% es, en realidad, mucho menor, y puede situarse en cotas tan bajas como entre el 25% y el 33%.

Desde mi punto de vista, si este tipo de ataques no se han producido hasta el momento no es porque no pueda hacerse técnica o económicamente, sino porque no ha habido interés por parte de nadie. Sin embargo, no es descartable que actores con enormes recursos económicos, como un país completo, decidiera atacar el sistema en un momento dado, bien porque lo considere una amenaza para sí mismo, o bien para dañar a un país enemigo que tuviera grandes reservas de bitcoins. Según algunos cálculos que publicaré próximamente en un trabajo académico, llevar a cabo este ataque costaría "sólo" unos 500 millones de euros.

¿Desde un punto de vista académico se ha podido probar por qué Bitcoin funciona?

Curiosamente, no. Sobre todo en lo relativo a su seguridad, faltan buenos modelos matemáticos y rigurosos de cómo los distintos parámetros del sistema (número total de nodos, número de nodos maliciosos, etc...) influyen en el nivel global del sistema.

En mi opinión, a un nivel más conceptual, probablemente Bitcoin funciona simplemente por la gente quiere que lo haga. Es un sistema que se basa esencialmente en la confianza, y todos sabemos lo frágil que ésta es, y cómo puede perderse en un segundo. Porque que técnicamente el sistema "funcione", no significa que lo haga en la práctica si sus usuarios pierden la confianza en su utilidad o practicidad.

¿Qué aspectos de la Teoría de juegos se deben conocer para entender su impacto en el mundo de las blockchains públicas?

La teoría de juegos podría jugar un papel esencial en entender las dinámicas de los comportamientos de los actores implicados en estos sistemas, y suponen el mejor marco en el que sustentar los fundamentos teóricos de funcionamiento que mencionábamos en la cuestión anterior.

De hecho, ya ha dado algún resultado. El ataque del minado egoísta, propuesto en 2014 por el profesor Eyal, de la Universidad de Cornell (Eyal, Ittay and Emin Gün Sirer. 'Majority Is Not Enough: Bitcoin Mining Is Vulnerable.' Financial Cryptography - 2014), demuestra que en, realidad, sólo es necesario ese rango del 25% al 33% de capacidad computacional para atacar Bitcoin y lo hace con herramientas básicas de teoría de juegos.

Lo interesante es que, con los grandes progresos que se han hecho en los últimos años en las área de verificación de software y modelado automático, no se haya encontrado una forma de modelar el ecosistema Bitcoin en un lenguaje formal y poder detectar así de forma automática y matemática posibles fallos y estrategias sub-óptimas. Quizás simplemente sea pronto, pero es desde luego un área de investigación apasionante, que despegará cuando las comunidades de Bitcoin y los expertos en teoría de juegos trabajen juntos.

Óscar Delgado cuenta con más de 15 años de experiencia profesional en el mundo de la seguridad informática, donde ha trabajado para empresas como S21sec, Verisign o AEGON. Apasionado desde hace años de las criptomonedas y los sistemas distribuidos, trabaja actualmente como profesor en la Escuela Politécnica de la UAM.

Alex Preukschat es autor coordinador del libro 'Blockchain: La revolución industrial de Internet' publicado por Ediciones Gestión 2000 (Grupo Planeta) ya disponible a la venta en Amazon.es y en la Casa del Libro, cuyas novedades se pueden seguir en @LibroBlockchain y LibroBlockchain.com, la novela gráfica 'Bitcoin: la caza de Satoshi Nakamoto' @BitcoinComic y como Nodo Coordinador de BlockchainEspana.com @BlockchainES.

Edición por Iñigo Molero @Imolman

WhatsAppFacebookFacebookTwitterTwitterLinkedinLinkedinBeloudBeloudBluesky