* Reenvíe el título original: Explorando el puente canónico de Ethereum de Eclipse y el sistema de prueba
Eclipse se compone de tres capas:
El siguiente diagrama ilustra cómo interactúan estos módulos:
El resto de este artículo se centrará en el puente Ethereum de Eclipse, como se muestra en el diagrama. Blobstream transmitirá las certificaciones firmadas por el validador de Celestia para certificar a Ethereum que los datos de un lote de tragamonedas de Eclipse se publicaron correctamente. Esto permite que el puente de Eclipse verifique los datos proporcionados para las pruebas de fraude con las raíces de datos firmadas de Celestia. En el resto de esta sección, describiremos los procesos mediante los cuales:
El flujo cuando un usuario deposita en Eclipse a través del puente nativo de Ethereum se resume de la siguiente manera:
El siguiente diagrama muestra las interacciones entre Ethereum, Celestia y el ejecutor de SVM durante el flujo de depósito descrito anteriormente:
A continuación se resume el flujo para publicar lotes de ranuras de Eclipse en Celestia como blobs de datos:
El siguiente diagrama de Celestia explica cómo se almacena el compromiso de los datos dentro de un bloque de Celestia determinado en el encabezado del bloque:
Al igual que otras L2 que utilizan pruebas de fraude (Arbitrum, Fuel y muchas otras), los retiros de Eclipse requieren un período de impugnación durante el cual los verificadores pueden presentar pruebas de fraude en el caso de una transición de estado no válida:
En esta sección final, detallaremos el diseño del sistema a prueba de fraude de Eclipse, inspirado en Anatoly Yakovenko y John Adler. Por lo general, para cualquier prueba de fraude, un verificador debe:
En el caso de Eclipse, (1) Celestia merkliza blobs de lotes de bloques que publica el ejecutor de SVM de Eclipse, lo que permite pruebas de inclusión de transacciones a través de testigos de Merkle. Para (2), a diferencia de las L2 basadas en EVM, que publican una raíz de Merkle en el árbol de estado global, por razones de rendimiento, Eclipse no actualiza un árbol de estado global transacción por transacción, pero explicaremos cómo aseguramos la corrección de las entradas con más detalle a continuación. Finalmente, en el caso de (3), el verificador de Eclipse genera una prueba zk de la(s) salida(s) para una transacción determinada, a diferencia del enfoque de juego de verificación interactiva común en las L2 basadas en EVM.
Todas las transacciones de Eclipse se pueden representar como si se tomara una lista de cuentas de entrada, se ejecutara una transacción y se produjera una lista de cuentas de salida resultantes:
La observación crítica para nuestro diseño a prueba de fraude es que para la ejecución de transacciones, siempre se da el caso de que cualquier S_InputAccount debe haber sido el S_OutputAccount de alguna transacción anterior. Esto nos permite hacer referencia a la última transacción de la cadena que produjo una cuenta de entrada determinada en lugar de proporcionar un testigo de Merkle a un árbol de estado global. Como resultado de nuestro diseño, introducimos tipos adicionales de acusaciones de fraude, como una referencia a que la transacción anterior no es válida o que la cuenta de entrada ya está siendo "gastada" por alguna transacción posterior. Describimos este proceso con más detalle a continuación:
Además, los lotes de datos de transacciones publicados en Celestia tienen sus compromisos transmitidos al contrato de Ethereum. Los compromisos consisten en:
Como se explicó anteriormente, hay varias formas en que se puede encontrar que un lote es incorrecto:
Si se determina que algún lote de compromiso es incorrecto, el contrato de puente de Eclipse revertirá el puente al del último compromiso de lote demostrablemente correcto. Tenga en cuenta que las transacciones nunca se eliminan de la cadena, incluso en caso de fraude, por lo que solo es necesario volver a calcular el compromiso.
Este artículo tenía como objetivo brindar una guía de alto nivel sobre el puente de confianza minimizada de Eclipse en Ethereum y explicar algunos detalles sobre nuestro diseño a prueba de fraude. Dada la naturaleza modular de nuestra L2 y la incipiente de nuestra pila tecnológica, continuaremos publicando artículos y documentación sobre varios aspectos de Eclipse en las próximas semanas.
Para participar en Eclipse Testnet, siga nuestras instrucciones aquí. Puede ponerse en contacto con nosotros en Twitter o Discord con consultas específicas sobre nuestra red de pruebas, puente o preguntas técnicas.
[1]: El nodo que calcula los resultados de las transacciones de SVM y aplica la salida final al nuevo estado de Eclipse
[2]: Un operador que pasa eventos on-chain entre Ethereum y Eclipse
[3]: Tenga en cuenta que el ejecutor, no el secuenciador, publica esto. Si se incluyera en los datos publicados por el secuenciador, agregaría la complicación de que el secuenciador podría omitir un recuento, lo que haría imposible que el ejecutor hiciera su trabajo correctamente. Esto podría compensarse con el diseño a prueba de fraude, pero añadiría complejidad adicional. Una segunda ventaja de que solo el ejecutor publique el recuento es que facilita permitir que las anulaciones de transacciones se registren en Celestia, si se desea.
[4]: Las cuentas SVM se pueden representar con un hash único. La única forma en que se modifica este hash es a través de una transacción.
[5]: Para hacer esto sin una cantidad excesiva de hashing, ejecutaremos un seguimiento en cada programa ejecutado para ver a qué partes de cada sysvar utilizado se accede realmente. Esto es posible, pero requerirá modificar el intérprete BPF de Solana.
[6]: Esto incluye los datos de las transacciones intentadas que no se ejecutaron.
* Reenvíe el título original: Explorando el puente canónico de Ethereum de Eclipse y el sistema de prueba
Eclipse se compone de tres capas:
El siguiente diagrama ilustra cómo interactúan estos módulos:
El resto de este artículo se centrará en el puente Ethereum de Eclipse, como se muestra en el diagrama. Blobstream transmitirá las certificaciones firmadas por el validador de Celestia para certificar a Ethereum que los datos de un lote de tragamonedas de Eclipse se publicaron correctamente. Esto permite que el puente de Eclipse verifique los datos proporcionados para las pruebas de fraude con las raíces de datos firmadas de Celestia. En el resto de esta sección, describiremos los procesos mediante los cuales:
El flujo cuando un usuario deposita en Eclipse a través del puente nativo de Ethereum se resume de la siguiente manera:
El siguiente diagrama muestra las interacciones entre Ethereum, Celestia y el ejecutor de SVM durante el flujo de depósito descrito anteriormente:
A continuación se resume el flujo para publicar lotes de ranuras de Eclipse en Celestia como blobs de datos:
El siguiente diagrama de Celestia explica cómo se almacena el compromiso de los datos dentro de un bloque de Celestia determinado en el encabezado del bloque:
Al igual que otras L2 que utilizan pruebas de fraude (Arbitrum, Fuel y muchas otras), los retiros de Eclipse requieren un período de impugnación durante el cual los verificadores pueden presentar pruebas de fraude en el caso de una transición de estado no válida:
En esta sección final, detallaremos el diseño del sistema a prueba de fraude de Eclipse, inspirado en Anatoly Yakovenko y John Adler. Por lo general, para cualquier prueba de fraude, un verificador debe:
En el caso de Eclipse, (1) Celestia merkliza blobs de lotes de bloques que publica el ejecutor de SVM de Eclipse, lo que permite pruebas de inclusión de transacciones a través de testigos de Merkle. Para (2), a diferencia de las L2 basadas en EVM, que publican una raíz de Merkle en el árbol de estado global, por razones de rendimiento, Eclipse no actualiza un árbol de estado global transacción por transacción, pero explicaremos cómo aseguramos la corrección de las entradas con más detalle a continuación. Finalmente, en el caso de (3), el verificador de Eclipse genera una prueba zk de la(s) salida(s) para una transacción determinada, a diferencia del enfoque de juego de verificación interactiva común en las L2 basadas en EVM.
Todas las transacciones de Eclipse se pueden representar como si se tomara una lista de cuentas de entrada, se ejecutara una transacción y se produjera una lista de cuentas de salida resultantes:
La observación crítica para nuestro diseño a prueba de fraude es que para la ejecución de transacciones, siempre se da el caso de que cualquier S_InputAccount debe haber sido el S_OutputAccount de alguna transacción anterior. Esto nos permite hacer referencia a la última transacción de la cadena que produjo una cuenta de entrada determinada en lugar de proporcionar un testigo de Merkle a un árbol de estado global. Como resultado de nuestro diseño, introducimos tipos adicionales de acusaciones de fraude, como una referencia a que la transacción anterior no es válida o que la cuenta de entrada ya está siendo "gastada" por alguna transacción posterior. Describimos este proceso con más detalle a continuación:
Además, los lotes de datos de transacciones publicados en Celestia tienen sus compromisos transmitidos al contrato de Ethereum. Los compromisos consisten en:
Como se explicó anteriormente, hay varias formas en que se puede encontrar que un lote es incorrecto:
Si se determina que algún lote de compromiso es incorrecto, el contrato de puente de Eclipse revertirá el puente al del último compromiso de lote demostrablemente correcto. Tenga en cuenta que las transacciones nunca se eliminan de la cadena, incluso en caso de fraude, por lo que solo es necesario volver a calcular el compromiso.
Este artículo tenía como objetivo brindar una guía de alto nivel sobre el puente de confianza minimizada de Eclipse en Ethereum y explicar algunos detalles sobre nuestro diseño a prueba de fraude. Dada la naturaleza modular de nuestra L2 y la incipiente de nuestra pila tecnológica, continuaremos publicando artículos y documentación sobre varios aspectos de Eclipse en las próximas semanas.
Para participar en Eclipse Testnet, siga nuestras instrucciones aquí. Puede ponerse en contacto con nosotros en Twitter o Discord con consultas específicas sobre nuestra red de pruebas, puente o preguntas técnicas.
[1]: El nodo que calcula los resultados de las transacciones de SVM y aplica la salida final al nuevo estado de Eclipse
[2]: Un operador que pasa eventos on-chain entre Ethereum y Eclipse
[3]: Tenga en cuenta que el ejecutor, no el secuenciador, publica esto. Si se incluyera en los datos publicados por el secuenciador, agregaría la complicación de que el secuenciador podría omitir un recuento, lo que haría imposible que el ejecutor hiciera su trabajo correctamente. Esto podría compensarse con el diseño a prueba de fraude, pero añadiría complejidad adicional. Una segunda ventaja de que solo el ejecutor publique el recuento es que facilita permitir que las anulaciones de transacciones se registren en Celestia, si se desea.
[4]: Las cuentas SVM se pueden representar con un hash único. La única forma en que se modifica este hash es a través de una transacción.
[5]: Para hacer esto sin una cantidad excesiva de hashing, ejecutaremos un seguimiento en cada programa ejecutado para ver a qué partes de cada sysvar utilizado se accede realmente. Esto es posible, pero requerirá modificar el intérprete BPF de Solana.
[6]: Esto incluye los datos de las transacciones intentadas que no se ejecutaron.