Una mirada profunda al controvertido juego y su papel en la detección de fallos en el primer sistema a prueba de errores de la pila OP.
No es coincidencia que uno de los componentes más interesantes del Sistema a Prueba de Fallos (FPS) de OP Stack sea su juego controvertido. El artículo anterior sobre FPS describió cómo la modularidad del stack de OP desacopla el programa a prueba de fallos (FPP) de la máquina virtual a prueba de fallos (FPVM), permitiendo el siguiente nivel de composabilidad y actualizaciones paralelas eficientes de los dos componentes. No es exagerado decir que esto también es el caso con los juegos controvertidos.
Este artículo explora el papel de los juegos de disputas en la detección de fallas descentralizada en el ecosistema de supercadena, cómo construir juegos de disputas a prueba de errores sobre acuerdos de disputas, y la posibilidad de que dichos juegos surjan debido a la escalabilidad de los acuerdos de disputas.
Los juegos de disputa son los fundamentos básicos de los acuerdos de disputa. Simula una máquina de estados simple y, para cualquier pieza de información cuya validez esté en disputa, se inicializa con una promesa de 32 bytes. Esta información contiene una función para resolver la verdad o falsedad de esta promesa, cuya definición queda a cargo de la implementación del primitivo. La primera implementación de juego controvertido de la pila OP, Juego de Defensa de Fallas
, no fue licenciado porque su función de resolución fue determinada por los resultados de un programa a prueba de errores ejecutado encima de una máquina virtual simulada.
Búsquedas Juegos Curioso en Dos Propiedades de Cadenas:
El juego de la controversia en sí mismo se basa en dos atributos básicos:
En acuerdos de disputas, se pueden crear, gestionar y actualizar diferentes tipos de juegos de disputas a través de DisputeGameFactory. Esto abre la puerta a características innovadoras como sistemas de prueba agregados y protocolos extendidos para acomodar asuntos controvertidos fuera del estado del protocolo de capa 2, como FaultDefenteGame, que se centra en la verificación binaria en cadena.
Es un juego de disputa específico del género, y el primero en construirse en el acuerdo de disputa de la pila OP. En este juego, el jugador divide la trayectoria de ejecución de un lado a otro hasta que se alcanza cada paso. Después de que la dicotomía logra una promesa de estado en cada instrucción de seguimiento,Juego de Defensa de Fallas
utiliza una máquina virtual genérica para ejecutar un paso de instrucción único en la cadena. La función de transición de estado de la MV (llamémosla T) puede ser cualquier función, siempre y cuando siga la forma T (s, i) - > s',dónde s= el estado preacordado,i= estado de transición de entrada,s= estado posterior .
Para nuestra primera implementación completa de una VM genérica en un juego de dos, implementamos un único contexto de hilo MIPS sobre EVM para ejecutar una sola instrucción en la traza de ejecución generadapor
Cannon
y programa op.
Declara la posición que existe en el árbol binario. Esta posición indica a qué instrucción se refiere la afirmación.Posición es un índice generalizado, que se puede definir como 2^ {depth} + índice_en_profundidad.
Las acciones del jugador están limitadas en el tiempo. Este juego no requiere licencia y cualquiera puede unirse. Cada lado comienza con 3,5 días de juego, para un total de 7 días de tiempo de juego. Si creas un nuevo camino o haces una declaración donde ya has recibido una declaración, es un reloj de ajedrez de nivel bisabuelo.
Los jugadores se dividen en dos hasta que el estado de la declaración sea solo una instrucción de máquina virtual. Luego ejecutan esa instrucción en cadena para verificar o falsificar la declaración. Las acciones pueden ser ataque (desafiar la declaración principal) o defensa (estar de acuerdo con la declaración principal). Siempre que los jugadores estén de acuerdo con el hash de las declaraciones que han observado (lo que significa que ambas partes están en el mismo estado bajo un comando dado) pero no estén de acuerdo con el resultado final que intentan impulsar basado en el acuerdo relativo de la declaración observada, la declaración subyacente se utiliza para defenderse.
En el nodo hoja del árbol de ubicación, cada declaración envía el estado en solo una instrucción de VM. El único paso restante es ejecutar instrucciones de VM para demostrar o refutar la afirmación principal.
Si el paso de comando confirma el estado posterior esperado, entonces la afirmación no se cumple. Si hay un estado de liberación inesperado o un código de salida, la reclamación principal será refutada.
Este tipo de juego probablemente se resolverá después de que todos los relojes de ajedrez indicados se hayan agotado, con un período mínimo de 3.5 días.Cada declaración en el juego es la raíz de su propio subjuego (Sub Game).El subjuego es un DAG con una profundidad de 1. Todos los subjuegos que apuntan a la raíz (que a su vez son raíces de subjuegos) son sus contadores, y el subjuego solo puede resolverse si todos sus subjuegos hijos también se han resuelto. La raíz del subjuego solo puede considerarse contraatacada si uno o más de los subjuegos de la raíz del subjuego se resuelven y no son contrarrestados, y este atributo continúa permeando la declaración raíz del juego.
La presencia de jugadores honestos (tan pronto como todas sus acciones hayan sido agotadas) siempre provoca que el juego se resuelva sin problemas en su vista de trayectoria, independientemente de si la declaración subyacente es honesta o deshonesta. Una declaración deshonesta siempre puede ser contrarrestada por cualquier parte, aunque siempre hay solo una declaración correcta que se puede hacer, ya que no se permiten hash de declaraciones repetidas en el mismo lugar en el mismo subjuego.
0:00
1×
Para cualquier interesado, también hay una herramienta de visualización para FaultDefenteGame, que apunta al seguimiento de ejecución simulado con solo 16 instrucciones de longitud.
Esta simulación utiliza una VM separada con un contexto diferente al hilo MIPS, llamada AlphabetVM, que solo devuelve la siguiente letra en el alfabeto cuando se proporciona una letra dada como entrada.
Si estás interesado en explorar las reglas del juego con un backend más ligero, aquí tienes cómo jugar:
Clonar el monorepo de Optimism, instalar dependencias y crear la distribución de la red de desarrollo /cannon/op-program binarios.
Dependencias requeridas:
Fundición
git clone git@github.com: ethereum-optimism/optimism.git & &\\ cd optimism & &\\ pnpm i & &\\ (cd packages/contracts-bedrock & & forge install) & &\\ Make up cannon-prestate & &\\ Make up devnet-allocs
Ejecutar el juego del alfabeto:
CD OP-CHALLENCHER & & MAKE ALPHABET
Ejecuta el front-end visual de forma local e introduce la dirección del agente FaultDefenteGame desplegado en la red de desarrollo local anterior.
En un juego de dos, todos los mecanismos anteriores trabajan juntos para crear un sistema que recompensa el comportamiento honesto y contrarresta efectivamente las afirmaciones deshonestas.
Hay tantas formas de construir juegos controvertidos que logren los mismos objetivos. Esperamos que cuando el FPS de OP Stack se implemente en OP Goerli, los constructores en nuestro ecosistema se diviertan y sean creativos al construir sus propios juegos controvertidos. Cada juego controvertido creado puede desempeñar un papel en la descentralización social de OP Stack y proporcionar a los participantes del ecosistema opciones sobre cómo resolver disputas sobre cualquier declaración dada sobre cierta información.
Una mirada profunda al controvertido juego y su papel en la detección de fallos en el primer sistema a prueba de errores de la pila OP.
No es coincidencia que uno de los componentes más interesantes del Sistema a Prueba de Fallos (FPS) de OP Stack sea su juego controvertido. El artículo anterior sobre FPS describió cómo la modularidad del stack de OP desacopla el programa a prueba de fallos (FPP) de la máquina virtual a prueba de fallos (FPVM), permitiendo el siguiente nivel de composabilidad y actualizaciones paralelas eficientes de los dos componentes. No es exagerado decir que esto también es el caso con los juegos controvertidos.
Este artículo explora el papel de los juegos de disputas en la detección de fallas descentralizada en el ecosistema de supercadena, cómo construir juegos de disputas a prueba de errores sobre acuerdos de disputas, y la posibilidad de que dichos juegos surjan debido a la escalabilidad de los acuerdos de disputas.
Los juegos de disputa son los fundamentos básicos de los acuerdos de disputa. Simula una máquina de estados simple y, para cualquier pieza de información cuya validez esté en disputa, se inicializa con una promesa de 32 bytes. Esta información contiene una función para resolver la verdad o falsedad de esta promesa, cuya definición queda a cargo de la implementación del primitivo. La primera implementación de juego controvertido de la pila OP, Juego de Defensa de Fallas
, no fue licenciado porque su función de resolución fue determinada por los resultados de un programa a prueba de errores ejecutado encima de una máquina virtual simulada.
Búsquedas Juegos Curioso en Dos Propiedades de Cadenas:
El juego de la controversia en sí mismo se basa en dos atributos básicos:
En acuerdos de disputas, se pueden crear, gestionar y actualizar diferentes tipos de juegos de disputas a través de DisputeGameFactory. Esto abre la puerta a características innovadoras como sistemas de prueba agregados y protocolos extendidos para acomodar asuntos controvertidos fuera del estado del protocolo de capa 2, como FaultDefenteGame, que se centra en la verificación binaria en cadena.
Es un juego de disputa específico del género, y el primero en construirse en el acuerdo de disputa de la pila OP. En este juego, el jugador divide la trayectoria de ejecución de un lado a otro hasta que se alcanza cada paso. Después de que la dicotomía logra una promesa de estado en cada instrucción de seguimiento,Juego de Defensa de Fallas
utiliza una máquina virtual genérica para ejecutar un paso de instrucción único en la cadena. La función de transición de estado de la MV (llamémosla T) puede ser cualquier función, siempre y cuando siga la forma T (s, i) - > s',dónde s= el estado preacordado,i= estado de transición de entrada,s= estado posterior .
Para nuestra primera implementación completa de una VM genérica en un juego de dos, implementamos un único contexto de hilo MIPS sobre EVM para ejecutar una sola instrucción en la traza de ejecución generadapor
Cannon
y programa op.
Declara la posición que existe en el árbol binario. Esta posición indica a qué instrucción se refiere la afirmación.Posición es un índice generalizado, que se puede definir como 2^ {depth} + índice_en_profundidad.
Las acciones del jugador están limitadas en el tiempo. Este juego no requiere licencia y cualquiera puede unirse. Cada lado comienza con 3,5 días de juego, para un total de 7 días de tiempo de juego. Si creas un nuevo camino o haces una declaración donde ya has recibido una declaración, es un reloj de ajedrez de nivel bisabuelo.
Los jugadores se dividen en dos hasta que el estado de la declaración sea solo una instrucción de máquina virtual. Luego ejecutan esa instrucción en cadena para verificar o falsificar la declaración. Las acciones pueden ser ataque (desafiar la declaración principal) o defensa (estar de acuerdo con la declaración principal). Siempre que los jugadores estén de acuerdo con el hash de las declaraciones que han observado (lo que significa que ambas partes están en el mismo estado bajo un comando dado) pero no estén de acuerdo con el resultado final que intentan impulsar basado en el acuerdo relativo de la declaración observada, la declaración subyacente se utiliza para defenderse.
En el nodo hoja del árbol de ubicación, cada declaración envía el estado en solo una instrucción de VM. El único paso restante es ejecutar instrucciones de VM para demostrar o refutar la afirmación principal.
Si el paso de comando confirma el estado posterior esperado, entonces la afirmación no se cumple. Si hay un estado de liberación inesperado o un código de salida, la reclamación principal será refutada.
Este tipo de juego probablemente se resolverá después de que todos los relojes de ajedrez indicados se hayan agotado, con un período mínimo de 3.5 días.Cada declaración en el juego es la raíz de su propio subjuego (Sub Game).El subjuego es un DAG con una profundidad de 1. Todos los subjuegos que apuntan a la raíz (que a su vez son raíces de subjuegos) son sus contadores, y el subjuego solo puede resolverse si todos sus subjuegos hijos también se han resuelto. La raíz del subjuego solo puede considerarse contraatacada si uno o más de los subjuegos de la raíz del subjuego se resuelven y no son contrarrestados, y este atributo continúa permeando la declaración raíz del juego.
La presencia de jugadores honestos (tan pronto como todas sus acciones hayan sido agotadas) siempre provoca que el juego se resuelva sin problemas en su vista de trayectoria, independientemente de si la declaración subyacente es honesta o deshonesta. Una declaración deshonesta siempre puede ser contrarrestada por cualquier parte, aunque siempre hay solo una declaración correcta que se puede hacer, ya que no se permiten hash de declaraciones repetidas en el mismo lugar en el mismo subjuego.
0:00
1×
Para cualquier interesado, también hay una herramienta de visualización para FaultDefenteGame, que apunta al seguimiento de ejecución simulado con solo 16 instrucciones de longitud.
Esta simulación utiliza una VM separada con un contexto diferente al hilo MIPS, llamada AlphabetVM, que solo devuelve la siguiente letra en el alfabeto cuando se proporciona una letra dada como entrada.
Si estás interesado en explorar las reglas del juego con un backend más ligero, aquí tienes cómo jugar:
Clonar el monorepo de Optimism, instalar dependencias y crear la distribución de la red de desarrollo /cannon/op-program binarios.
Dependencias requeridas:
Fundición
git clone git@github.com: ethereum-optimism/optimism.git & &\\ cd optimism & &\\ pnpm i & &\\ (cd packages/contracts-bedrock & & forge install) & &\\ Make up cannon-prestate & &\\ Make up devnet-allocs
Ejecutar el juego del alfabeto:
CD OP-CHALLENCHER & & MAKE ALPHABET
Ejecuta el front-end visual de forma local e introduce la dirección del agente FaultDefenteGame desplegado en la red de desarrollo local anterior.
En un juego de dos, todos los mecanismos anteriores trabajan juntos para crear un sistema que recompensa el comportamiento honesto y contrarresta efectivamente las afirmaciones deshonestas.
Hay tantas formas de construir juegos controvertidos que logren los mismos objetivos. Esperamos que cuando el FPS de OP Stack se implemente en OP Goerli, los constructores en nuestro ecosistema se diviertan y sean creativos al construir sus propios juegos controvertidos. Cada juego controvertido creado puede desempeñar un papel en la descentralización social de OP Stack y proporcionar a los participantes del ecosistema opciones sobre cómo resolver disputas sobre cualquier declaración dada sobre cierta información.