tl;dr

  • Dark Forest es un juego descentralizado MMO de estrategia en tiempo real en la cadena de bloques Gnosis.
  • El juego utiliza zk-SNARKs para que un jugador demuestre criptográficamente que ha realizado un movimiento válido sin revelar qué movimiento ha hecho.
  • Dark Forest es un juego descentralizado e interoperable, lo que significa que cualquiera puede añadir características adicionales para ampliar la jugabilidad y la experiencia de usuario. Esto, entre otras cosas, hace que Dark Forest sea uno de los juegos más innovadores implementados en una cadena de bloques.

Tiempo de lectura: 8 minutos

Introducción

Dark Forest es un juego MMO (massively multiplayer online) completamente descentralizado de estrategia en tiempo real (y al que es divertido jugar) que consiste en capturar planetas explorando el universo. Se inspira en la novela homónima de Liu Cixin, The Dark Forest, que es el segundo libro de la trilogía “El problema de los tres cuerpos”.

Dark Forest es un juego de código abierto en el que todas las interacciones se validan en la cadena de bloques Gnosis (previamente conocida como xDAI). Fue el primer juego que utilizó zk-SNARKs como mecanismo para crear la niebla de guerra. El objetivo competitivo del juego es el de conseguir la mayor cantidad de puntos posibles, pero cada jugador puede crear su propia aventura y jugar de la forma que más le apetezca.

Eventualmente, el universo de Dark Forest será persistente, pero las primeras ediciones del juego (todavía en su versión beta) han sido a lo largo de unos tiempos acotados. La siguiente imagen muestra un conjunto de planetas durante una batalla entre dos usuarios.

 Figura 1. Visión parcial del escenario de una batalla P2P planeada con antelación.

La niebla de guerra en Dark Forest

Niebla de guerra criptográfica

La niebla de guerra en Dark Forest es la porción del mapa que no es visible para un jugador. Cuando nos creamos una nueva cuenta, sólo se nos revela una pequeña porción del mapa (ver figura 2); el resto (la parte gris en la imagen) que no podemos ver es lo que se denomina la niebla de guerra. A lo largo del juego, un jugador irá explorando nuevas partes del mapa que podrá revelar mediante minado con su CPU (de forma similar a cómo lo hacen los mineros en las cadenas de bloques con prueba de trabajo). Cómo de rápido podrá un jugador revelar las nuevas partes del universo dependerá de la potencia de su CPU.

Dark Forest es un juego de información asimétrica (o información escondida), como el Age of Empires, Starcraft o el póker, y fue el primero de este tipo creado de forma descentralizada. Cabe mencionar que antes de Dark Forest ya había algunos juegos que utilizaban métodos de compromiso-revelación que mantenían la información privada temporalmente hasta que finalmente se publicaba. En los juegos de información asimétrica no conocemos todo el escenario ni tenemos información de la situación de otros jugadores. Por el contrario, en los juegos de información simétrica, como es el caso, por ejemplo, del ajedrez, ambos jugadores disponen, en todo momento, de la misma información para tomar sus decisiones.

En los juegos de información asimétrica, uno no sabe qué hacen sus oponentes, ni dónde están, ni qué construyen. Lo bueno es que ellos tampoco saben lo que hacemos. En un videojuego típico (centralizado), los jugadores no pueden ver lo que hay detrás de la niebla de guerra, pero los servidores del juego o los personajes no-jugador (NPC, por sus siglas en inglés), probablemente sí puedan. Dark Forest utiliza los zk-SNARKs para que ningún jugador ni ordenador sepa qué hay debajo de la niebla de guerra hasta que se revela a través de los mecanismos adecuados. Dark Forest fue el primero en utilizar zk-SNARKs para hacer un juego de información secreta persistente (es decir, no bajo un esquema de compromiso-revelación) y que, a su vez, esta información pudiera utilizarse de forma consistente con el resto del estado del juego.

 Figura 2. La niebla de guerra es el área de color gris, que se podrá revelar con minado.

Estado privado

Si se quiere construir un juego con estado privado, por definición, éste no se puede transmitir siempre a la cadena de bloques. Lo que se hace es transmitir un compromiso (el hash) de tu estado privado junto con una prueba de conocimiento cero conforme el hash corresponde a un estado privado acorde a las reglas del juego. Cuando se quiere hacer una transición del estado en el juego (y modificar el estado de la cadena de bloques), se transmite el hash del nuevo estado privado, junto con una prueba de conocimiento cero indicando así que la transición entre ambos es válida.

En Dark Forest, un jugador no transmite las coordenadas del planeta que conquista al contrato inteligente base, sino que transmite el hash de esas coordenadas junto con una prueba de conocimiento cero que confirma que el hash es válido (es decir, que se conoce la pre-imagen de ese hash). Esto mantiene la localización de los planetas secreta. Pongamos que un jugador quiere hacer un movimiento de fuerzas militares entre dos planetas. Este deberá transmitir a la cadena de bloques el hash de las coordenadas de origen, el hash de las coordenadas de destino, el hash del número de fuerzas militares que se quiere movilizar, además de una prueba de conocimiento cero demostrando que conoce las coordenadas de los planetas que están detrás de los hashes y la distancia entre ambos planetas, lo que demuestra que constituye un movimiento válido dentro del juego.

Debido a que los hashes son muy difíciles de invertir, inspeccionar el contrato inteligente de Dark Forest no te revelará ninguna de las localizaciones de los otros jugadores. La única manera de encontrar a otros jugadores es mediante una búsqueda de fuerza bruta; es decir, calculando el hash de regiones del universo en busca de coordenadas que correspondan con un hash ya publicado anteriormente.

De forma similar a la dificultad de minado en las cadenas de bloques con prueba de trabajo, encontraremos un planeta cuando el hash de unas coordenadas empiece por cierto número de ceros (definidos en el contrato inteligente del juego), lo que permite a los desarrolladores estimar las probabilidades de encontrar estos planetas.

Interoperabilidad y despliegue de contratos inteligentes

Una de las ideas más innovadoras que aporta Dark Forest es el concepto de interoperabilidad. Los contratos inteligentes que despliegan los creadores del juego se convierten en la capa base de las normas del juego: se puede explorar el universo, conquistar planetas, encontrar artefactos, etc. Lo interesante de la interoperabilidad (y gracias a que el juego es totalmente descentralizado) es que cualquiera puede crear contratos inteligentes nuevos que interactúen con los contratos bases existentes, de tal forma que aplique a todos los jugadores sin que estos (ni los desarrolladores) puedan evitarlo. Debido a la naturaleza de los contratos inteligentes, los nuevos contratos deberán cumplir siempre con las normas de los contratos base ya existentes.

Pongamos un ejemplo sencillo de cómo aplicaría esto. En un juego de laberinto, en el que hay que encontrar un tesoro, dos jugadores se mueven por él, pero el contrato inteligente base dice que no pueden coincidir en el mismo punto a la vez. Podríamos escribir un contrato inteligente en el que creáramos un tercer jugador nuevo que persiguiera a nuestro oponente y que tuviera el objetivo de bloquearle el paso. Esta nueva situación no provocaría el fin del juego, ni podríamos robarle nada a nuestro oponente, pero puede explotar la regla de “dos jugadores no pueden coincidir en el mismo punto a la vez” y bloquearle el paso. En ese momento, podríamos enviarle un mensaje a nuestro oponente reclamando el tesoro. Es decir, la interoperabilidad permite estas situaciones raras e impredecibles.

Gracias a la interoperabilidad de un juego descentralizado como Dark Forest, cualquier usuario puede añadir nuevas herramientas, algo totalmente imposible en videojuegos tradicionales. Por ejemplo, un jugador puede rediseñar la interfaz del juego a su gusto. O, más interesante, como hemos mencionado arriba, cualquiera puede desplegar nuevos contratos inteligentes que interactúen con los contratos inteligentes base, los cuales implementan unas normas que todos deben cumplir (qué objetos pueden moverse, desde dónde, qué velocidad máxima de movimiento se puede alcanzar en el universo, etc.). Este concepto es lo que se ha denominado “física digital”.

Por ejemplo, existe un contrato inteligente ligado a Dark Forest que permite a los jugadores vender planetas que han encontrado o dar una recompensa a cambio de los planetas que encuentren otros jugadores. Esto crea un mercado de información externo: el hecho que tener información sea un activo de primera clase permite una dinámica social muy interesante y diferentes estrategias.

En esta web podemos ver la lista de plug-ins disponibles para instalar (¡el código de estos plugins no ha sido auditado!) que nos ayudan o añaden funcionalidad al juego. Por ejemplo, el plug-in “Gift Planet” permite transferir de forma instantánea un planeta de un jugador a otro. Esto trae grandes implicaciones de carácter estratégico al juego. En la imagen inferior podemos ver un plugin que nos permite ver la actividad de un jugador con el contrato inteligente, pudiendo así determinar a qué horas suele dormir y poder atacar sus planetas. Para combatir esto, se han formado equipos con jugadores que viven en diferentes husos horarios.

Figura 3. Plug-in que permite ver cuándo un jugador ha interactuado con los contratos inteligentes del juego, pudiendo así saber sus horas de inactividad para poder planear un ataque.

Zk-SNARKs

En el artículo sobre Etherscan, destacábamos que podemos ver todo lo que pasa en las cadenas de bloques públicas, haciéndonos eco de la transparencia de éstas. La mayoría de los juegos en las cadenas de bloques públicas nos permiten ver qué están haciendo todos los jugadores y todos sus datos, así que no existe el factor sorpresa, por lo que muchos de ellos se basan en la compraventa de NFT, la “reproducción” de nuevos NFTs para su posterior venta, su “cultivo”, etc. Es decir, algo repetitivo, que suele aburrir rápidamente y que acaba convirtiéndose en un ejercicio por ganar dinero sin diversión (DeFi con una interfaz de juego). Pero, ¿cómo es entonces posible no ver qué están haciendo todos los jugadores en Dark Forest? La respuesta es zk-SNARKs (zero knowledge succint non-interactive argument of knowledge), mediante los cuales los jugadores pueden mantener el estado secreto a la vez que presentan acciones válidas verificables.

Figura 4. Estado privado en un sistema descentralizado con pruebas de conocimiento cero.

zk-SNARK es una herramienta criptográfica muy potente que se puede usar para verificar computaciones de datos secretos. Por ejemplo, una prueba de conocimiento cero en un juego como el ajedrez probaría que: “muevo mi caballo desde la posición secreta A a la posición secreta B. Aunque no te diré ni dónde está A ni dónde está B, esta prueba demuestra que el movimiento desde A hasta B se ha realizado correctamente (ni siquiera se dará información en qué dirección se mueve) en forma de L (movimiento del caballo en ajedrez)”.

Este vídeo explica de forma simple las pruebas de conocimiento cero y zk-SNARKs. En este otro vídeo podemos ver una explicación de las matemáticas (explicado de forma relativamente sencilla) que hay detrás de zk-SNARK.

 

¿Cómo empezar a jugar?

Algunas fuentes para empezar a familiarizarse con el juego son: la wiki de Dark Forest, el blog de Dark Forest, una serie de vídeos tutoriales de Jordan Spencer, uno de los miembros más prolíficos de la comunidad, o una guía para principiantes.

En marzo de este año, después de finalizar la última ronda de juego, se crearon los Dark Forest lobbies. Esto permite a cualquier jugador iniciar un universo configurable con decenas de parámetros y poder jugar libremente con quién quiera cuándo quiera.

Figura 5. Página principal de la web en la que podemos crear nuestro propio universo.

En mayo, dfdao lanzó Dark Forest Arena (el primer juego de estilo MOBA en una cadena de bloques). Se trata de un lobby con un objetivo específico: capturar y reclamar un planeta concreto. Dark Forest Arena se ha desplegado en la cadena Gnosis Optimistic (una L2 de Gnosis con optimistic rollups) pudiendo así reducir significativamente los costes para los jugadores (el precio del gas es de 0.000000001 gwei) y aumentando la velocidad de confirmación de las transacciones. Estos tutoriales de Dark Forest Arena nos dan las primeras nociones de cómo empezar a jugar.

 

Referencias