El protocolo Bitcoin a nivel técnico es una solución inteligente al problema de consenso en las ciencias informáticas. La idea del consenso es muy general: un número de participantes conjuntamente ejecutan un cálculo para llegar a un acuerdo sobre el estado del mundo, o un subconjunto del mismo que les interesa.
Debido a esto, por lo general, hay diferentes métodos para analizar y probar cosas acerca de este tipo de protocolos de consenso, procedentes de diferentes áreas de las matemáticas aplicadas y ciencias informáticas. Estos métodos utilizan diferentes lenguas y terminología y encarnan diferentes supuestos y puntos de vista. Como resultado, no siempre son consistentes entre sí. Ésta es una receta para la confusión; a menudo las personas no están de acuerdo porque han asumido implícitamente una visión del mundo u otra. En este artículo se explican los dos modelos principales que se utilizan para analizar la seguridad de consenso en Bitcoin.
La aplicación tradicional de consenso es a base de datos distribuidos. Un buen ejemplo es un centro de datos con numerososnodos que operan con los mismos datos. El sistema debe defenderse de los fallos de sus miembros, pero los fallos son relativamente benignos – los nodos pueden caer (crash), o en el peor de los casos, comportarse de forma aleatoria. Cuando los programas maliciosos (malware) y los ataques a través de Internet se hicieron más habituales, los investigadores de los consensos distribuidos empezaron a estudiar los fallos Bizantinos en los que los nodos pueden ser tomados por un adversario y pueden comportarse de manera arbitraria. En este campo de investigación, el objetivo habitual es demostrar que el consenso es o no es posible en varios escenarios. Un porcentaje de nodos se supone que es “honesto”, lo que significa que siempre siguen un protocolo dado, y otros son “maliciosos”, lo que significa que deliberadamente pueden tratar de pervertir el protocolo.
Cuando se creó Bitcoin, la gente buscó modelos para analizar su comportamiento y el modelo de consenso bizantino parecía decente, dado que hacíamos algunos retoques. En particular, en Bitcoin cuando hablamos de fracciones de nodos debemos medirlos por la potencia de hash. Éste es el modelo que el documento original utiliza para analizar la seguridad, al igual que varios trabajos de seguimiento posteriores.
Pero hay que darse cuenta de lo diferente que es Bitcoin con las aplicaciones tradicionales para las que el modelo fue diseñado. En un sistema distribuido es una buena solución que un administrador del sistema se dé cuenta de que algo está mal antes de que demasiados nodos estén comprometidos, y buscar la solución, por lo que tiene sentido suponer que buena parte de los nodos son siempre honestos. Pero, ¿qué obliga a cualquier nodo Bitcoin o minero a seguir el protoclo?
Los mineros tienen poderosos incentivos monetarios, y uno de los argumentos es que van a tratar de maximizar sus beneficios, independientemente de si eso significa que están siguiendo el protocolo. La rama de las matemáticas que estudia el comportamiento de los participantes interactuando que siguen sus incentivos se llama teoría de juegos. Éste es el otro conjunto principal de modelos que se ha aplicado a Bitcoin.
En este modelo no clasificamos nodos como honestos y maliciosos. En su lugar, se supone que cada nodo elige una estrategia (aleatoria) para maximizar su rentabilidad, teniendo en cuenta las posibles estrategias de otros nodos. Si el protocolo y los incentivos están bien, entonces la mayoría de los nodos seguirán, la mayoría de las veces, las reglas. El comportamiento “honesto” es solo una estrategia de muchas, y no le concedemos ninguna relevancia moral particular.
Este modelo tiene cierta elegancia y evita supuestos que parecen arbitrarios y difíciles de justificar, como por ejemplo que el 50% de los nodos son honestos. En la práctica hay diversidad en las implementaciones de los clientes, y el protocolo evoluciona con el tiempo, por lo que incluso designar un comportamiento tan honesto es algo arbitrario.
Pero la elegancia de la teoría no es suficiente. ¿Podemos modelar eficazmente el sistema con todos sus componentes interactuando en el lenguaje de las estrategias y maximización de la rentabilidad? ¿Es el modelo resultante manejable y podemos analizarlo matemáticamente o con simulaciones? Y lo que es más importante, ¿se ajustan sus predicciones a lo que observamos en la práctica?
En una artículo anterior de Arvind Narayanan explicamos por qué para la estabilidad de Bitcoin es fundamentalmente una propuesta de la teoría de juegos, terminando con algunas preguntas: ¿Podemos modelar eficazmente el sistema con todos sus componentes interactuando en el lenguaje de las estrategias y maximización de la rentabilidad? ¿Es el modelo resultante manejable y podemos analizarlo matemáticamente o con simulaciones? Y lo que es más importante, ¿se ajustan sus predicciones a lo que observamos en la práctica?
Recordemos que los mining pools son grupos de mineros individuales que unen su poder de cómputo, así como sus recompensas. Supongamos dos mining pools – las llamaremos azul y rojo – que están buscando a la vez maximizar sus recompensas mineras. Imaginemos que el gerente de la roja decide infiltrarse en la azul y disminuye su eficacia haciendo uso de la potencia minera que la roja controla (directa o indirectamente). Esto sería posible mediante la presentación de cuotas (pruebas parciales de trabajo) para ganar una parte de las recompensas, pero reteniendo los bloques válidos que se resuelven y que, por lo tanto, no suponen ningún trabajo productivo para la azul. A simple vista esto podría parecer una tonteria, ya que se disminuye la eficacia de la azul, pero la roja también pierde potencia de hash.
Para entender mejor esta situación, vamos a enumerar tres normas que siguen las recompensas en un mining pool:
Los ingresos de un pool en un período dado son proporcionales al número de bloques Bitcoin que sus miembros han minado, medido como una parte de los bloques totales extraídos en dicho periodo.
Las recompensas de un minero son proporcionales al número de “participaciones” presentadas, como una parte del total de acciones presentadas por todos los miembros de ese grupo.
Los mineros pueden crear fácilmente numerosas pseudo-identidades (“sybils”), cada una de ellas contribuyendo con una cantidad muy pequeña de potencia minera. Por lo tanto, las pools no pueden detectar fácilmente si un minero está reteniendo bloques válidos (y no se puede castigar a un minero por hacerlo).
Estas reglas son aproximadas, pero las aceptamos como punto de partida por su claridad analítica. En este contexto, queremos determinar si un ataque de retención de bloques puede ser rentable. Lo que obviamente es una cuestión importante, y también está bien definido matemáticamente. Hemos tenido en cuenta todos los elementos de la conducta humana en la ecuación, para poder hacer un poco de aritmética y comprobar la respuesta.
Digamos que en principio, la pool azul y la pool roja tienen entre ambas el 50% de la potencia minera. Para este ejemplo, vamos a ignorar los ataques del 51%.
Ilustración de un ataque de retención de bloques rentable. La pool roja tiene el 50% de la potencia minera pero gana cinco novenas partes de las recompensas.
Ahora la roja destina la mitad de su potencia (25% del total) para infiltrarse en la azul, y envía solo participaciones pero no bloques. Esto significa que de todos los bloques que llegan a la red Bitcoin, 2/3 vienen de la pool azul y 1/3 de la pool roja. Por lo tanto, las recompensas serán distribuidas entre las dos en la misma proporción, 2/3 para la azul y 1/3 para la roja.
De las recompensas de la azul, la azul pagará 1/3 a la roja y se quedará 2/3. Esto es debido a que la roja aporta 1/3 de las participaciones totales de la azul y las pools pagan en base a las participaciones y no a los bloques.
Recordemos que la pool azul no puede saber qué mineros están actuando maliciosamente. En otras palabras, la azul se queda 4/9 partes de las recompensas mineras globales, y paga 2/9 a la roja que, unido a 1/3 que la roja obtiene directamente por su participación en la red Bitcoin, la recompensa de la roja es 5/9 partes.
Esto significa que los ataques de retención de bloques pueden, en teoría, ser rentables, lo cual es un hecho sumamente interesante por sí mismo.
Lo que es alucinante es que mientras durante mucho tiempo la gente se había hecho la pregunta de si la retención de bloques podía ser rentable, nadie se había parado a hacer estos cálculos para obtener una respuesta. La rentabilidad de este ataque fue señalada por primera vez en un paper de Courtois y Bahack el año pasado que no ha recibido mucha atención. Recientemente Ittay Eyal ha analizado con rigor, haciendo un impecable análisis de la teoría de juegos, una situación con múltiples ataques de pools, que obtuvo mayor atención.
Este no es el único ejemplo de una ruptura evidente de supuestos acerca de la estabilidad de la minería Bitcoin. Está también al menos la minería egoísta (selfish mining) de Eyal y Sirer y el tenedor de pluma (feather fork) de Andrew Miller. En estos casos, los mineros pueden potencialmente ganar por desviarse del protocolo predeterminado. A pesar de que los modelos de minería usados en estos análisis son muy simples, ha llevado años detectar estos errores. Y podemos estar seguros de que no hemos encontrado todos.
Utilzamos la palabra bugs (errores) por una razón. Si se piensa en el enorme progreso que se ha hecho en las pruebas de software ycomprobación de modelos para encontrar bugs de software y escribir programas correctos, es difícil creer que no hemos encontrado una manera de representar la estrategia del espacio Bitcoin en un lenguaje formal y automáticamente buscar las estategias desviadas. ¿Es simplemente una cuestión de que no existe una superposición entre las comunidades de investigación de la teoría de juegos y la de Bitcoin? ¿O son las herramientas desarrolladas en la teoría de juegos para el análisis automatizado de los equilibrios las que no son capaces de manejar el dominio de la minería Bitcoin por alguna razón? [1]
Bitcoin ofrece un excelente banco de pruebas para explorar y mejorar nuestro conocimiento de la teoría de juegos. Debido a los grandes incentivos financieros en juego, el conocimiento teórico acerca de las estrategias se considera muy valioso. Y, sin embargo, a diferencia de, por ejemplo, el mercado de valores, el sistema está “cerrado” y relativamente susceptible al modelado y análisis. [2] Estamos empezando muy lentamente a explotar esta oportunidad, y seguir trabajando en este área puede enriquecer tanto a Bitcoin como a la teoría de juegos.
Por último, ha habido poca o ninguna evidencia de mineros empleando estrategias desviadas en la práctica hasta ahora. Si bien esto no disminuye de ninguna manera la importancia del tipo de análisis del que hemos hablado, es importante preguntarse qué está causando la brecha entre los modelos y la conducta observada. Analizaremos esta cuestión en el próximo artículo.
[1] Ha habido algo de análisis en la comunidad Bitcoin en la construcción de simuladores de minería. Este es un enfoque diferente, aunque también es un enfoque interesante.
[2] Para que el sistema se cierre tenemos que ignorar factores como el impacto de las estrategias de la minería en el tipo de cambio de Bitcoin. Éste será el tema central de la próxima entrada.
En esta serie sobre Bitcoin y la teoría de juegos, Arvind Narayanan ha argumentado que la estabilidad de Bitcoin es fundamentalmente una propuesta de teoría de juegos y he demostrado que durante años hemos tenido ángulos muertos en nuesta comprensión teórica de la estrategia minera. En este artículo analiza la discrepancia entre la teoría y la práctica. A pesar de que hay muchas debilidades teóricas en el mecanismo de consenso de Bitcoin, parece que ninguna de esas debilidades ha sido explotada.
Una manera contundente para rechazar esta discrepancia es negar por completo la capacidad de los modelos de la teoría de juegos para predecir la práctica. Por ejemplo, algunas personas argumentan que, dado que los mineros no saben teoría de juegos, el análisis de la teoría de juegos en su comportamiento no es significativo. Esta objeción se puede descartar fácilmente – los animales saben aún menos de la teoría del juego que los mineros, y sin embargo, su comportamiento es una de las aplicaciones clásicas de la teoría de juegos. Y la mayoría de los parejas de prisioneros que se enfrentan a un dilema nunca han oído el término dilema del prisionero antes. Por tanto, el conocimiento de la teoría de juegos por parte de las partes no es un requisito previo para la aplicación de la teoría de juegos.
Una objeción relacionada con esto es que desviarse de la estrategia por defecto es difícil, desde el punto de vista de los mineros. Después de todo, no es que el Bitcoin Core venga con estrategias desviadas construidas y que se puedan activar con un interruptor en la línea de comandos. ¿Qué puede hacer un minero? Aunque es superficialmente plausible, creo que esta objeción tiene como consecuencia la causa y el efecto completamente al revés, porque nadie se ha molestado en poner en práctica estrategias no predeterminadas porque no creía que en ellas habría beneficios. Si no fuera así, probablemente habría un ecosistema floreciente de parches – o reemplazos – a Bitcoind que ejecutarían estas estrategias desviadas, tal como podemos ver con los mods de los videojuegos.
Una objeción más sofisticada, y quizás la más frecuente, es que los mineros no tienen intereses en emplear estrategias no predeterminadas, ya que esto haría que la gente pierda la confianza en la estabilidad de Bitcoin, bajando el precio de los bitcoins. Y una caída en el tipo de cambio es mala para los mineros ya que devaluará su inversión en el hardware de minería.
Este es un argumento válido, pero las cosas se complican. Sabemos que los mineros pueden lanzar ataques de denegación de servicio contra sus competidores. ¿No hay ahí una preocupación similar sobre la estabilidad de Bitcoin y el tipo de cambio? Además, parece que a pesar de que está redactada como una objeción al razonamiento de juego teórico, en realidad este argumento se refiere a la teoría de juegos: basicamente dice que las estrategias no predeterminadas son un movimiento perdedor porque serán recibidas con una determinada respuesta de otros jugadores, es decir, los inversores que venden sus bitcoins.
Del mismo modo, consideremos el argumento de que los ataques al consenso no funcionarán porque los desarrolladores se darán cuenta y realizarán una actualización para eliminarlos. Éste es también un argumento de la teoría de juegos; el conjunto de los participantes se ha ampliado para incluir a los desarrolladores, y quizás también al resto de nodos Bitcoin, además de los mineros y los inversores (siendo un inversor cualquier persona que posee bitcoins).
Por lo que tenemos un tipo de argumento de la teoría de juegos – que los mineros podrían ganar más bitcoins cambiando su estrategia de minería – unido a otro tipo de argumento de la teoría de juegos, que amplía el espacio de estrategias para llegar a una conclusión diferente.
Debe quedar claro que aquí estamos hablando sobre dos tipos muy diferentes de estrategias. La estrategia de minería es ejecutada por software, que ocurre en una escala de tiempo de minutos y que se puede analizar como un sistema “cerrado” en el que el espacio de estrategias puede ser descrito formalmente y analizado matemáticamente. Por otra parte, los movimientos en el precio y las actualizaciones de software que implican decisiones humanas y que suelen ser mucho más lentas, y que por tanto son nefastas para modelarse con una precisión matemática.
En otras palabras, parece que estamos ante un juego anidado (nested game), es decir, un juego dentro de un juego. El juego interior es interpretado por agentes automatizados de acuerdo con la forma en que están programados y, por otro lado, el juego exterior que consta de operadores humanos en el que varían los agentes como consecuencia de lo que sucede en la cadena de bloques (blockchain), y que también realizan movimientos que no están disponibles para los agentes automatizados. Muchos movimientos en el juego interno suceden entre movimientos consecutivos en el juego exterior, y ésta es una de las razones por las que estamos obligados a analizar los dos niveles por separado.
Si empezamos a buscar esta estructura de juego anidada, podemos encontrarla en todas partes. Los mecanismos de malware y de detección de malware son un juego constante del gato y del ratón. En este juego, el malware debe tomar decisiones instantáneas, como dónde extenderse a continuación y si atacar o esperar. Pero tanto el malware como las herramientas anti-malware están bajo el control de sus respectivos operadores y de cómo ellos les hacen evolucionar en el tiempo en respuesta a los movimientos de los otros. De la misma forma, los paquetes se enrutan instantáneamente pero la política de enrutamiento evoluciona con el tiempo basándose en los patrones de tráfico.
La tesis central de Arvind Narayanan es que para que los modelos de teoría de juegos de estrategias de minería Bitcoin sean mejores modelos prácticos, tenemos que reconocer la existencia de esta estructura de dos niveles. Los sorprendentes resultados del artículo anterior pueden potencialmente explicarse mediante el análisis del juego anidado y concluir que en el fondo no es rentable para los mineros que se desvíen. Los juegos anidados parecen ser un método popular para analizar el comportamiento de los políticos que están bajo la influencia de los votantes. Pero no se ha utilizado hasta ahora para el análisis de Bitcoin.
Esta dirección de investigación es probable que produzca dividendos más allá de las criptomonedas. Los informáticos son los diseñadores del mecanismo, desde las subastas de anuncios hasta los protocolos de enrutamiento. Cualquiera de estas situaciones puede ser visto como un juego anidado ya que los creadores de software que juegan estos juegos regularmente modifican su estrategia en respuesta a las estrategias empleadas por los demás. La cuestión de qué elementos de la estrategia deben ser programadas en las máquinas y cuáles quedan al juicio humano es relevante para cada uno de esos escenarios.
En el próximo artículo Arvind Narayanan presentará un sencillo ejemplo ilustrativo de cómo un análisis de juego anidado de la estrategia minera lleva a una predicción interesante y no evidente. En concreto, analizará lo que sucede si una estrategia de fork ydoble gasto en el juego interior puede darse con una estrategia de juego exterior en la que los desarrolladores deciden matar a lacadena bifurcada a pesar de que es más larga.