Presentación de Creepts: The First Cartesi DApp – Cartesi

La primera aplicación descentralizada alimentada por Cartesi

Creepts es el primer juego descentralizado de torneos de defensa de torres del mundo. Está construido sobre la solución Cartesi Layer 2 para blockchains, que está disponible como una pila de software de código abierto que se encuentra en desarrollo activo. Actualmente, Creepts se puede jugar en el testnet Rinkeby Ethereum.

La pantalla de bienvenida del juego Creepts.

En Creepts, los jugadores compiten entre sí para ver quién puede reclamar el puntaje más alto en un mapa de juego de Tower Defense en tiempo real con todas las funciones y basado en el navegador. Los jugadores se unen a un torneo al comprometer sus puntuaciones más altas y movimientos del juego en la cadena de bloques, a un costo insignificante. Los contratos inteligentes del juego luego deciden quién es el ganador del torneo.

La pila de tecnología Cartesi presenta varios componentes de software dentro y fuera de la cadena, que proporcionan al juego Creepts su soporte para torneos descentralizados y resistentes a trampas. Cartesi permite a todos los jugadores de Creepts reproducir automáticamente el juego de la puntuación de cualquier otro jugador, fuera de la cadena. Si alguien intenta hacer trampa al informar una puntuación inflada, algún otro jugador en el torneo usará automáticamente Cartesi para obtener la puntuación real en función de los movimientos del juego cometidos por el tramposo. El jugador honesto desafiará automáticamente y derrotará públicamente al tramposo usando los contratos inteligentes de Cartesi, causando su descalificación.

Cartesi no solo proporciona a los Creepts resistencia a las trampas, sino que también hace posible que un juego complejo como Creepts se ejecute en la cadena de bloques. Una sesión de juego Creepts implica el cálculo de miles de millones de instrucciones del programa, y ​​ese tipo de carga de trabajo es varios órdenes de magnitud mayor de lo que puede manejar una cadena de bloques pública. Al aprovechar Cartesi, Creepts puede ejecutar su lógica de juego completamente fuera de la cadena mientras conserva las fuertes garantías de seguridad y la descentralización de la cadena de bloques subyacente. Y, para lograr eso, los desarrolladores de juegos no tuvieron que diseñar el software Creepts para que se ejecute en un entorno de máquina virtual restringido. Las Cartesi Machines de Capa 2 pueden ejecutar software desarrollado en cualquier idioma o con cualquier biblioteca de software, siempre que la pila completa se compile en RISC-V y Linux.

Creepts es un juego de acción descentralizado, gráfico, en tiempo real y basado en navegador que finalmente es coordinado por . Para jugar, el jugador debe apuntar su navegador web a un cliente Creepts. Los jugadores pueden descargar y ejecutar su propia copia local del cliente Creepts, que viene con un servidor web que proporciona el juego al navegador web del jugador. El cliente Creepts luego interactúa con los contratos Cartesi en la cadena de bloques en nombre del jugador. En el futuro, los jugadores podrán jugar Creepts apuntando sus navegadores a un Cliente Creepts remoto de confianza, sin necesidad de descargar e instalar nada ellos mismos.

La pantalla de selección del torneo Creepts.

Después de que el jugador apunta su navegador web a un Cliente Creepts, se le muestran los diversos torneos que están disponibles para unirse. Al seleccionar un torneo, el jugador puede jugar el mapa del juego de defensa de la torre Creepts de ese torneo sin comprometerse realmente a una competencia multijugador. El juego se ejecuta completamente en el lado del cliente, en el navegador del jugador, ya que el juego está escrito en Typecript. El juego de defensa de la torre es para un solo jugador, por lo que el jugador puede jugar el mismo mapa del juego durante el tiempo que quiera. Pueden jugar a su propio ritmo, y pueden regresar y seleccionar un torneo diferente para jugar tantas veces como quieran.

Una configuración de torre, esperando la próxima ola de enemigos.

Cada vez que un jugador termina de jugar un mapa del torneo Creepts, el Nodo Cartesi del jugador (que es parte del Cliente Creepts) luego confirma automáticamente (envía), a , un hash seguro de su juego, que es un archivo de registro que enumera todos el juego mueve que han hecho. Si bien los jugadores mantienen en secreto sus planes de juego exactos, su hash de juego comprometido los vinculará indirectamente a una puntuación real específica en el juego que se puede verificar de forma independiente. Esto se debe a que Creepts es determinista: cualquier parte puede reproducir los movimientos del juego que figuran en un archivo de registro del juego y reproducir una puntuación de ese archivo de registro.

Defensa contra una ola de enemigos.

Si ningún jugador se une a un torneo dado, entonces ningún jugador lo gana. Si solo un jugador se une a un torneo, ese jugador lo gana por defecto. Si dos o más jugadores se unen al mismo torneo, las máquinas del jugador, que ejecutan el sistema de resolución de disputas Cartesi, verificarán automáticamente los puntajes de cada uno para determinar el ganador del torneo.

Después de jugar un mapa del juego del torneo, el jugador termina de interactuar con el torneo como jugador del juego. Todo lo que sigue es negociado automáticamente por el nodo Cartesi local del jugador. El jugador solo esperará a que los corchetes del torneo se resuelvan con el tiempo a medida que el sistema Cartesi trabaje para determinar el ganador.

El torneo seleccionado, mientras se resuelve automáticamente.

Después de que el torneo se cierra por compromisos de juego, todos los jugadores revelarán gradualmente sus registros de juego reales y enviarán un reclamo de puntaje final no verificado a la cadena de bloques. Los jugadores que no pueden cargar sus registros de juego para la cadena de bloques, por cualquier razón, son eliminados.

¡Ganamos el torneo, en cadena!

Después de un tiempo, la fase de revelación del juego terminará, y el jugador esperará mientras los Nodos Cartesi, que se ejecutan en la máquina local de cada jugador de manera totalmente descentralizada, verifican los puntajes reales de cada uno. Los tramposos que informaron puntajes inflados a la cadena de bloques se eliminan automáticamente.

Cuando un jugador termina de jugar el juego en uno de los mapas de Tower Defense del juego, conoce su propia puntuación en ese mapa y la secuencia completa de movimientos que realizó para lograr esa puntuación en ese mapa, que se conoce como un registro de juego de Creepts. El motor de juego Creepts, escrito en mecanografiado, se ejecuta dentro de una máquina Cartesi determinista, por lo que siempre produce el mismo puntaje dado el mismo registro de comandos de jugador sobre un mapa de juego dado.

Dado que no hay un servidor autorizado en ningún lugar que esté reproduciendo automáticamente los registros de juego de los jugadores para reproducir sus puntajes, todo lo que el código en cadena del juego tiene acceso es a lo que los jugadores informan como su propio puntaje, así como a los archivos de registro del juego de todos los jugadores que se envían automáticamente a Ethereum por el componente Cartesi Logger. La parte que va a verificar si el registro de juego de un jugador realmente produce el puntaje que afirman que es otro jugador que está compitiendo directamente contra ellos en un grupo de instancia de torneo. En otras palabras, otra parte interesada en ese cálculo de Capa 2.

Para verificar el reclamo de puntaje de otro jugador, su nodo Cartesi descarga el registro del juego del otro jugador de la cadena de bloques y lo reproduce dentro de una máquina Cartesi, que es un emulador de máquina RISC-V determinista que ejecuta un sistema operativo Linux, que a su vez ejecuta el motor de juego Creepts escrito en mecanografiado (sin la interfaz gráfica). Si la máquina Cartesi obtiene una puntuación diferente a la informada por el otro jugador (es decir, el otro jugador está mintiendo acerca de ese registro del juego que tiene como resultado la puntuación que ha informado), su nodo Cartesi enviará una disputa a un contrato inteligente en cadena, comenzando un juego interactivo de verificación que está mediado por los contratos inteligentes de Cartesi. Se garantiza matemáticamente que su nodo Cartesi ganará esa disputa en su nombre, ya que el contrato inteligente sabe cómo evaluar correctamente las diversas pruebas criptográficas sobre cómo se supone que el cálculo determinista de la puntuación del juego a partir de un registro de juego dado evoluciona con el tiempo. Como estás diciendo la verdad y tu oponente no lo está, refutarás su puntaje reclamado y ganarás.

Tenga en cuenta que cuando los jugadores coinciden con la misma instancia del torneo, todos revelan sus hashes de registro del juego y reclaman puntajes simultáneamente. ¡La estructura de corchetes del torneo es únicamente para la fase de verificación de puntaje! Es por eso que los corchetes del torneo se resuelven automáticamente: la fase de verificación se resuelve completamente con la aplicación DApp que se ejecuta sobre Cartesi. El DApp emparejará a los jugadores entre paréntesis entre paréntesis para que verifiquen los puntajes del otro, y si no hay disputas, la cadena de bloques asumirá que el jugador con el puntaje más alto reportado es el ganador, y pasará a emparejar al ganador con otro ganador en el después del grupo de verificación, o declarar un ganador del torneo, si todos los demás jugadores ya han sido verificados.

Ilustración de una instancia de torneo Creepts de muestra que se resuelve sola.

La figura anterior ilustra cómo una red de jugadores Creepts que participan en la misma instancia de torneo puede determinar el ganador en varias rondas con como máximo verificaciones de registro (N) realizadas por registro de juego, donde N es el número total de jugadores en un torneo. En la figura, el jugador C es un tramposo cuyo puntaje real es inferior al de todos los demás jugadores, aunque informa que es 999,999. Después de la primera ronda de los partidos del Juego de Verificación, el Jugador C avanza sobre el Jugador D debido a que este último se desconecta y no defiende su puntaje, que en realidad es más alto que el puntaje real del Jugador C. Mientras tanto, los jugadores honestos A y B reproducen los puntajes reportados correctamente, lo que permite al Jugador A avanzar por mérito. Durante la segunda ronda, el jugador A verifica que el jugador C haya informado un puntaje inflado, lo que descalifica al jugador C y permite que la cadena de bloques finalmente corona al jugador A como el ganador.

Tenga en cuenta que Cartesi permitirá que una versión futura de Creepts no requiera que los jugadores permanezcan en línea para reproducir los puntajes de otros jugadores y defender sus propias victorias. Cartesi se extenderá con proveedores de delegación de disputas que permitirán a los jugadores olvidar por completo que existen disputas de cómputo.

Cartesi libera el desarrollo de Layer 2 de entornos de programación restrictivos. La lógica del juego Creepts que determina los puntajes de los jugadores se implementa en Typecript y se ejecuta en un sistema operativo Linux. A los componentes de Cartesi no les importa cuál es el software utilizado para escribir la DApp Creepts. Lo único que le importa es que los Creepts puedan ejecutarse dentro del emulador de máquina Cartesi RISC-V para producir registros de juego verificables y discutibles y puntajes de jugadores para los contratos del torneo.

Cartesi también permite que Creepts sea el primer juego multijugador basado en que es capaz de evitar matemáticamente que se explote uno de los vectores de trampa más impactantes en mundos virtuales descentralizados y competitivos, que es la inyección de contenido arbitrario en el estado del juego persistente. Los creepts pueden hacerlo mientras aceptan lógica de juego arbitraria fuera de la cadena (Capa 2), escrita para un sistema operativo Linux, incurriendo en costos computacionales masivamente reducidos para los componentes de la Capa 1 de la DApp.

Creepts no es exactamente un juego en línea multijugador masivo (aunque el juego tiene capacidad para un número arbitrario de jugadores al generar tantos torneos como sea necesario), pero debido a su naturaleza , es nativo de uno de los aspectos centrales de la mayoría del multijugador masivo juegos en línea, que es compatible con economías virtuales de estado persistente. Por ejemplo, los torneos Creepts pueden extenderse para emitir y pagar una ficha CREEPTS a los ganadores, o para distribuir artículos únicos que pueden equiparse y que cambian el juego, o incluso premios en ETH o CTSI. En cualquier caso, Creepts muestra la prevención matemática de modificaciones arbitrarias al estado del juego, que es un problema abierto en la investigación de soporte descentralizado de MMO. Ese es un hito extremadamente importante en la forma de apoyar los complejos juegos de que desean generar economías virtuales funcionales.

Creepts es el primer DApp que muestra el poder de Cartesi, y ya es el primero de su tipo entre el universo de aplicaciones. Y es solo el comienzo de Cartesi para los juegos basados ​​en , y para todos los demás DApps que necesitan un cálculo verificable fuera de la cadena. Estamos ansiosos por ver las aplicaciones innovadoras que los desarrolladores construirán sobre Cartesi, aprovechando la conveniencia adicional y la potencia de cálculo que proporciona.

Puede enviar sus preguntas técnicas sobre el juego Creepts, la implementación de Creepts o el sistema Cartesi como respuestas a este artículo de Medium o nuestro canal Discord, y haremos todo lo posible para responderlas. Continuamente publicaremos varias formas de documentación que ofrecen información técnica sobre la evolución del paquete de software Cartesi.