La mayoría sigue sin ser suficiente - Tallar, Nicolás (2023)
Las criptomonedas son activos digitales que son mantenidos por la colaboración entre los participantes de una red, denominados nodos. Bitcoin es el principal exponente de esta tecnología en cuanto a adopción y referencia como paradigma de ser un activo digital. Su principal atractivo, y en general de las criptomonedas, es que no está controlada por una entidad central, sino que es un sistema distribuido. La base de la seguridad de esta descentralización son los protocolos ejecutados por miles de nodos para consensuar la historia transaccional. El almacenamiento de los datos se sustenta en la blockchain, una estructura de datos distribuida que se valida por todos los nodos de la red y construida por algunos de estos, los mineros. Los mineros compiten entre sí mediante un puzzlecomputacional para añadir transacciones a la blockchain, recibiendo a cambio de su participación una recompensa económica. A partir de la blockchain se puede derivar el ledger, el libro de cuentas indicando qué transacciones se realizaron y cuánto de la criptomoneda tiene cada usuario. Al tratarse de una red de máquinas, cada nodo puede poseer una visión distinta del ledger, pero mediante protocolos comparten y unifican la información de manera de tender a una misma visión del sistema. Una de las hipótesis que se realizan respecto de estos protocolos descentralizados es que incentivan un comportamiento cooperativo entre los mineros: que su mejor estrategia es compartir inmediatamente toda información nueva que produzcan ellos mismos u obtengan de otros nodos. Sin embargo, aparecieron en la literatura algunos trabajos cuestionando que esta suposición sea verdadera para el caso de Bitcoin y presentaron distintas estrategias de comportamiento más económicamente atractivas que un comportamiento cooperativo. La primera estrategia desarrollada y la más investigada al momento es el selfish mining. A diferencia de la estrategia cooperativa, ésta se basa en administrar con astucia la información disponible de la blockchain, reteniendo gran parte para ser su único conocedor, y así tener ventaja en la competencia por añadirle transacciones. Los trabajos mencionados se centran en analizar de forma teórica esta estrategia de minado y otras variantes. En esta tesis, nos centramos en el análisis del ataque de selfish mining pero, a diferencia de los trabajos de la literatura, lo hacemos desde el punto de vista operacional: utilizamos una herramienta de simulación que permite acercanos al comportamiento real de Bitcoin para evaluar este ataque. La herramienta de simulación fue desarrollada usando SimGrid, lo que nos permite estudiar escenarios de gran escala y tener la seguridad de estar utilizando una herramienta con una fuerte adopción en la comunidad de simulación. Para nuestra experimentación, comenzamos estudiando escenarios controlados de baja escala, cuyos resultados fueron utilizados para verificar el comportamiento del atacante y el resto de los nodos. Luego, gracias a la escalabilidad de SimGrid, realizamos simulaciones a gran escala cercanas a Bitcoin: utilizamos topologías de 10000 nodos respetando el tamaño y las propiedades de su red actual. La primera de las conclusiones a las que llegamos es que, en los experimentos de topologías chicas, los resultados obtenidos en la práctica fueron efectivamente los esperados de acuerdo a la literatura. Por otro lado, para los experimentos a gran escala se observó que realizar el ataque es más rentable que no hacerlo, pero no pudimos concluir si es tan rentable como lo predicho teóricamente, ya que no existen actualmente herramientas para realizar dichas predicciones en sistemas similares al real. Como alternativa, se presentó un estimador de la rentabilidad del atacante en base a propiedades del grafo surgido a partir de las conexiones entre nodos. Transversalmente, exploramos el funcionamiento del ataque realizando un análisis del uso de los recursos de todos los mineros de la red. Esto puso en evidencia una fuente adicional de ineficiencia del sistema cuando el ataque está activo.