En el artículo anterior, “La estructura de los componentes de Arbitrum interpretada por el ex embajador técnico de Arbitrum (Parte 1)”, presentamos las funciones de los componentes clave de Arbitrum, incluido el secuenciador, el validador, el contrato de la bandeja de entrada del secuenciador, el bloque acumulativo y la función de Pruebas de fraude no interactivas. En el artículo de hoy, nos centraremos en explicar los componentes relacionados con el paso de mensajes entre cadenas y la entrada de transacciones anticensura en los componentes centrales de Arbitrum.
Texto principal: en artículos anteriores, mencionamos que el contrato Sequencer Inbox está diseñado específicamente para recibir lotes de datos de transacciones publicados por el secuenciador en la Capa 1. Al mismo tiempo, señalamos que la Bandeja de entrada del secuenciador también se conoce como “caja rápida” y, en cambio, existe la “caja lenta” o Bandeja de entrada retrasada (denominada Bandeja de entrada). A continuación, proporcionaremos una interpretación detallada de los componentes relacionados con el paso de mensajes entre cadenas, incluida la Bandeja de entrada retrasada.
Las transacciones entre cadenas se pueden dividir en transacciones de L1 a L2 (depósito) y transacciones de L2 a L1 (retiro). Es importante tener en cuenta que los términos "depósito" y "retiro" aquí no necesariamente implican la transferencia de activos entre cadenas; pueden referirse al paso de mensajes sin transferir activos directamente. Por lo tanto, estos términos simplemente representan las dos direcciones de acciones relacionadas entre cadenas.
En comparación con las transacciones L2 puras, las transacciones entre cadenas implican el intercambio de información entre dos sistemas diferentes, L1 y L2, lo que hace que el proceso sea más complejo.
Además, cuando hablamos de acciones entre cadenas, generalmente se refiere al cruce entre dos redes completamente no relacionadas utilizando un puente entre cadenas en un modelo federado. La seguridad de tales operaciones entre cadenas depende del operador del puente entre cadenas e históricamente, los incidentes de robo han sido frecuentes en puentes entre cadenas basados en testigos.
Por otro lado, las acciones entre cadenas entre Rollup y la red principal de ETH son fundamentalmente diferentes de los procesos entre cadenas antes mencionados. Esto se debe a que el estado de la Capa2 está determinado por los datos registrados en la Capa1. Siempre que utilice el puente de cadenas cruzadas Rollup oficial, es estructuralmente seguro en sus operaciones.
Esto resalta la esencia de Rollup, que, desde la perspectiva del usuario, aparece como una cadena independiente, pero en realidad, la llamada "Capa2" es solo una ventana de visualización rápida que Rollup abre a los usuarios, y su verdadera estructura en forma de cadena. todavía está grabado en Layer1. Por lo tanto, podemos considerar L2 como media cadena o "una cadena creada en la Capa1".
Tenga en cuenta que las transacciones entre cadenas son asincrónicas y no atómicas. A diferencia de las transacciones en una sola cadena, completar una transacción y confirmar el resultado después de una transacción en una cadena no es posible en las transacciones entre cadenas. Tampoco hay garantía de que algo específico suceda en el otro lado en un momento determinado. Por lo tanto, las transacciones entre cadenas pueden fallar debido a algunos problemas menores, pero con el uso de técnicas adecuadas, como tickets reintentables, no ocurrirán problemas difíciles como el bloqueo de fondos.
Los tickets reintentables son herramientas fundamentales utilizadas en el puente oficial de Arbitrum durante los depósitos, aplicables tanto a depósitos ETH como ERC20. El ciclo de vida consta de tres pasos:
Además, en cuanto al proceso de retiro en el puente oficial de Arbitrum, aunque existe cierta similitud simétrica en el proceso respecto a los depósitos, no existe el concepto de boletos reintentables. Esto se puede entender desde la perspectiva del propio protocolo Rollup, y se pueden destacar algunas diferencias:
El encadenamiento cruzado de activos ERC-20 es complejo. Podemos pensar en varias cuestiones:
No vamos a responder a todas estas preguntas porque son demasiado complejas para desarrollarlas. Estas preguntas solo se utilizan para ilustrar la complejidad de la cadena cruzada ERC20.
Actualmente, muchas soluciones de escalado utilizan soluciones de lista blanca y lista manual para evitar diversos problemas complejos y condiciones de contorno.
Arbitrum utiliza el sistema Gateway para resolver la mayoría de los problemas de adherencia de la cadena cruzada ERC20. Tiene las siguientes características:
Tomemos como ejemplo la cadena cruzada WETH relativamente simple para ilustrar la necesidad de personalizar la puerta de enlace.
WETH es un equivalente ERC20 de ETH. Como moneda principal, Ether no puede implementar funciones complejas en muchas dApps, por lo que se necesita un equivalente ERC20. Transfiera algo de ETH al contrato WETH, quedarán bloqueados en el contrato y se generará la misma cantidad de WETH.
De la misma manera, WETH también se puede quemar y ETH se puede retirar. Obviamente, la proporción entre WETH circulante y ETH bloqueado es siempre 1:1.
Si ahora cruzamos directamente la cadena WETH a L2, encontraremos algunos problemas extraños:
Obviamente esto viola los principios de diseño de WETH. Por lo tanto, cuando WETH tiene una cadena cruzada, ya sea un depósito o un retiro, primero debe desenvolverse en ETH, luego cruzarse al otro lado y luego envolverse en WETH. Este es el papel de WETH Gateway.
Lo mismo ocurre con otros tokens con lógica más compleja, que requieren una puerta de enlace más compleja y cuidadosamente diseñada para funcionar correctamente en un entorno entre cadenas. El Gateway personalizado de Arbitrum hereda la lógica de comunicación entre cadenas del Gateway normal y permite a los desarrolladores personalizar el comportamiento entre cadenas relacionado con la lógica del token, que puede satisfacer la mayoría de las necesidades.
La contraparte de la bandeja de entrada rápida, conocida como Bandeja de entrada del secuenciador, es la bandeja de entrada lenta (denominada en su totalidad Bandeja de entrada retrasada). ¿Por qué diferenciar entre rápido y lento? Esto se debe a que la bandeja de entrada rápida está dedicada a recibir lotes de transacciones L2 publicadas por el secuenciador, y cualquier transacción no preprocesada por el secuenciador dentro de la red L2 no debe aparecer en el contrato de la bandeja de entrada rápida.
La primera función de la bandeja de entrada lenta es manejar el proceso de depósito de L1 a L2. Los usuarios inician depósitos a través de la bandeja de entrada lenta y, una vez que el secuenciador observa esto, refleja en L2. Finalmente, el secuenciador incluye este registro de depósito en la secuencia de transacciones L2 y lo envía al contrato de bandeja de entrada rápida (Bandeja de entrada del secuenciador).
En este escenario, no es apropiado que los usuarios envíen transacciones de depósito directamente a la bandeja de entrada rápida (Bandeja de entrada del secuenciador) porque las transacciones enviadas a la bandeja de entrada rápida pueden alterar el orden normal de las transacciones en la Capa 2, afectando así el funcionamiento del secuenciador.
La segunda función de la bandeja de entrada lenta es resistente a la censura. Las transacciones enviadas directamente al contrato de bandeja de entrada lenta generalmente se agregan a la bandeja de entrada rápida en 10 minutos mediante el secuenciador. Sin embargo, si el secuenciador ignora maliciosamente su solicitud, la bandeja de entrada lenta tiene una función de inclusión forzada:
Si una transacción se envía a la Bandeja de entrada retrasada y, después de 24 horas, el secuenciador no la incorpora a la secuencia de transacciones, los usuarios pueden activar manualmente la función de inclusión forzada en la Capa1. Esta acción obliga a que las transacciones ignoradas por el secuenciador se agreguen por la fuerza a la bandeja de entrada rápida (Bandeja de entrada del secuenciador). Posteriormente, serán detectados por todos los nodos de Arbitrum One y se incluirán forzosamente en la secuencia de transacciones de Layer2.
Acabamos de mencionar que los datos en la bandeja de entrada rápida representan la entidad de datos históricos de L2. Por lo tanto, en casos de censura maliciosa, el uso de la bandeja de entrada lenta permite que las instrucciones de transacción eventualmente se incluyan en el libro mayor L2, cubriendo escenarios como retiros forzados para escapar de la Capa 2.
A partir de esto, se puede ver que para cualquier dirección y nivel de transacciones, el secuenciador en última instancia no puede censurarlo permanentemente.
Varias funciones principales de la bandeja de entrada lenta (Bandeja de entrada):
Sin embargo, es importante tener en cuenta que la función de inclusión forzada en realidad se encuentra en el contrato de la bandeja de entrada rápida. Para facilitar la comprensión, lo explicamos junto con la bandeja de entrada lenta.
Outbox solo está relacionado con retiros y puede entenderse como un sistema de registro y gestión de comportamientos de retiro:
A continuación tomaremos ETH como ejemplo para explicar completamente el proceso de depósito y retiro. La única diferencia entre ERC20 y ETH es que el primero usa Gateway. No lo explicaremos en detalle.
El usuario llama a la función depositETH() de la caja lenta.
Esta función seguirá llamando a 'bridge.enqueueDelayedMessage()', Registre el mensaje en el contrato puente y envíe ETH al contrato puente. Todos los fondos de depósito de ETH se guardan en el contrato puente, que equivale a una dirección de depósito.
El secuenciador monitorea los mensajes de depósito en el cuadro lento y refleja la operación de depósito en la base de datos L2. Los usuarios pueden ver los activos que han depositado en la red L2.
El secuenciador incluye el registro de depósito en el lote de transacciones y lo envía al contrato de caja rápida en L1.
El usuario llama a la función retiroEth () del contrato ArbSys en L2 y el número correspondiente de ET se quema en L2.
El secuenciador envía la solicitud de retiro a la casilla express.
El nodo Validador crea un nuevo bloque acumulativo basado en la secuencia de transacciones en el cuadro rápido, que contendrá las transacciones de retiro anteriores.
Después de que el bloque acumulativo pasa por el período de desafío que también se confirma, el usuario puede llamar a la función Outbox.execute Transaction() en L1 para demostrar que los parámetros están dados por el contrato ArbSys mencionado anteriormente.
Una vez que se confirme que el contrato de la Bandeja de salida es correcto, la cantidad correspondiente de ETH en el puente se desbloqueará y se enviará al usuario.
Al utilizar el puente oficial Optimistic Rollup para retirar efectivo, habrá un problema de espera hasta el período de desafío. Podemos utilizar un puente de cadena cruzada privado de terceros para eliminar este problema:
La función force Inclusion() se utiliza para resistir la censura del secuenciador. Cualquier transacción local L2, transacción L1 a L2 y transacción L2 a L1 se puede implementar usando esta función. La censura maliciosa del secuenciador afecta gravemente la experiencia de la transacción. En la mayoría de los casos, optaremos por retirar dinero y dejar L2. Por lo tanto, a continuación se utiliza el retiro forzado como ejemplo para presentar el uso de forceInclusion.
Volviendo a los pasos de retiro de ETH, solo los pasos 1 y 2 implican censura del secuenciador, por lo que solo es necesario cambiar estos dos pasos:
Los usuarios finales pueden retirar dinero en la Bandeja de salida y el resto de los pasos son los mismos que los retiros normales.
Además, también hay tutoriales detallados sobre el uso de Arb SDK en arbitrum-tutorials para guiar a los usuarios sobre cómo realizar transacciones locales L2 y transacciones L2 a L1 a través de la función forceInclusion().
En el artículo anterior, “La estructura de los componentes de Arbitrum interpretada por el ex embajador técnico de Arbitrum (Parte 1)”, presentamos las funciones de los componentes clave de Arbitrum, incluido el secuenciador, el validador, el contrato de la bandeja de entrada del secuenciador, el bloque acumulativo y la función de Pruebas de fraude no interactivas. En el artículo de hoy, nos centraremos en explicar los componentes relacionados con el paso de mensajes entre cadenas y la entrada de transacciones anticensura en los componentes centrales de Arbitrum.
Texto principal: en artículos anteriores, mencionamos que el contrato Sequencer Inbox está diseñado específicamente para recibir lotes de datos de transacciones publicados por el secuenciador en la Capa 1. Al mismo tiempo, señalamos que la Bandeja de entrada del secuenciador también se conoce como “caja rápida” y, en cambio, existe la “caja lenta” o Bandeja de entrada retrasada (denominada Bandeja de entrada). A continuación, proporcionaremos una interpretación detallada de los componentes relacionados con el paso de mensajes entre cadenas, incluida la Bandeja de entrada retrasada.
Las transacciones entre cadenas se pueden dividir en transacciones de L1 a L2 (depósito) y transacciones de L2 a L1 (retiro). Es importante tener en cuenta que los términos "depósito" y "retiro" aquí no necesariamente implican la transferencia de activos entre cadenas; pueden referirse al paso de mensajes sin transferir activos directamente. Por lo tanto, estos términos simplemente representan las dos direcciones de acciones relacionadas entre cadenas.
En comparación con las transacciones L2 puras, las transacciones entre cadenas implican el intercambio de información entre dos sistemas diferentes, L1 y L2, lo que hace que el proceso sea más complejo.
Además, cuando hablamos de acciones entre cadenas, generalmente se refiere al cruce entre dos redes completamente no relacionadas utilizando un puente entre cadenas en un modelo federado. La seguridad de tales operaciones entre cadenas depende del operador del puente entre cadenas e históricamente, los incidentes de robo han sido frecuentes en puentes entre cadenas basados en testigos.
Por otro lado, las acciones entre cadenas entre Rollup y la red principal de ETH son fundamentalmente diferentes de los procesos entre cadenas antes mencionados. Esto se debe a que el estado de la Capa2 está determinado por los datos registrados en la Capa1. Siempre que utilice el puente de cadenas cruzadas Rollup oficial, es estructuralmente seguro en sus operaciones.
Esto resalta la esencia de Rollup, que, desde la perspectiva del usuario, aparece como una cadena independiente, pero en realidad, la llamada "Capa2" es solo una ventana de visualización rápida que Rollup abre a los usuarios, y su verdadera estructura en forma de cadena. todavía está grabado en Layer1. Por lo tanto, podemos considerar L2 como media cadena o "una cadena creada en la Capa1".
Tenga en cuenta que las transacciones entre cadenas son asincrónicas y no atómicas. A diferencia de las transacciones en una sola cadena, completar una transacción y confirmar el resultado después de una transacción en una cadena no es posible en las transacciones entre cadenas. Tampoco hay garantía de que algo específico suceda en el otro lado en un momento determinado. Por lo tanto, las transacciones entre cadenas pueden fallar debido a algunos problemas menores, pero con el uso de técnicas adecuadas, como tickets reintentables, no ocurrirán problemas difíciles como el bloqueo de fondos.
Los tickets reintentables son herramientas fundamentales utilizadas en el puente oficial de Arbitrum durante los depósitos, aplicables tanto a depósitos ETH como ERC20. El ciclo de vida consta de tres pasos:
Además, en cuanto al proceso de retiro en el puente oficial de Arbitrum, aunque existe cierta similitud simétrica en el proceso respecto a los depósitos, no existe el concepto de boletos reintentables. Esto se puede entender desde la perspectiva del propio protocolo Rollup, y se pueden destacar algunas diferencias:
El encadenamiento cruzado de activos ERC-20 es complejo. Podemos pensar en varias cuestiones:
No vamos a responder a todas estas preguntas porque son demasiado complejas para desarrollarlas. Estas preguntas solo se utilizan para ilustrar la complejidad de la cadena cruzada ERC20.
Actualmente, muchas soluciones de escalado utilizan soluciones de lista blanca y lista manual para evitar diversos problemas complejos y condiciones de contorno.
Arbitrum utiliza el sistema Gateway para resolver la mayoría de los problemas de adherencia de la cadena cruzada ERC20. Tiene las siguientes características:
Tomemos como ejemplo la cadena cruzada WETH relativamente simple para ilustrar la necesidad de personalizar la puerta de enlace.
WETH es un equivalente ERC20 de ETH. Como moneda principal, Ether no puede implementar funciones complejas en muchas dApps, por lo que se necesita un equivalente ERC20. Transfiera algo de ETH al contrato WETH, quedarán bloqueados en el contrato y se generará la misma cantidad de WETH.
De la misma manera, WETH también se puede quemar y ETH se puede retirar. Obviamente, la proporción entre WETH circulante y ETH bloqueado es siempre 1:1.
Si ahora cruzamos directamente la cadena WETH a L2, encontraremos algunos problemas extraños:
Obviamente esto viola los principios de diseño de WETH. Por lo tanto, cuando WETH tiene una cadena cruzada, ya sea un depósito o un retiro, primero debe desenvolverse en ETH, luego cruzarse al otro lado y luego envolverse en WETH. Este es el papel de WETH Gateway.
Lo mismo ocurre con otros tokens con lógica más compleja, que requieren una puerta de enlace más compleja y cuidadosamente diseñada para funcionar correctamente en un entorno entre cadenas. El Gateway personalizado de Arbitrum hereda la lógica de comunicación entre cadenas del Gateway normal y permite a los desarrolladores personalizar el comportamiento entre cadenas relacionado con la lógica del token, que puede satisfacer la mayoría de las necesidades.
La contraparte de la bandeja de entrada rápida, conocida como Bandeja de entrada del secuenciador, es la bandeja de entrada lenta (denominada en su totalidad Bandeja de entrada retrasada). ¿Por qué diferenciar entre rápido y lento? Esto se debe a que la bandeja de entrada rápida está dedicada a recibir lotes de transacciones L2 publicadas por el secuenciador, y cualquier transacción no preprocesada por el secuenciador dentro de la red L2 no debe aparecer en el contrato de la bandeja de entrada rápida.
La primera función de la bandeja de entrada lenta es manejar el proceso de depósito de L1 a L2. Los usuarios inician depósitos a través de la bandeja de entrada lenta y, una vez que el secuenciador observa esto, refleja en L2. Finalmente, el secuenciador incluye este registro de depósito en la secuencia de transacciones L2 y lo envía al contrato de bandeja de entrada rápida (Bandeja de entrada del secuenciador).
En este escenario, no es apropiado que los usuarios envíen transacciones de depósito directamente a la bandeja de entrada rápida (Bandeja de entrada del secuenciador) porque las transacciones enviadas a la bandeja de entrada rápida pueden alterar el orden normal de las transacciones en la Capa 2, afectando así el funcionamiento del secuenciador.
La segunda función de la bandeja de entrada lenta es resistente a la censura. Las transacciones enviadas directamente al contrato de bandeja de entrada lenta generalmente se agregan a la bandeja de entrada rápida en 10 minutos mediante el secuenciador. Sin embargo, si el secuenciador ignora maliciosamente su solicitud, la bandeja de entrada lenta tiene una función de inclusión forzada:
Si una transacción se envía a la Bandeja de entrada retrasada y, después de 24 horas, el secuenciador no la incorpora a la secuencia de transacciones, los usuarios pueden activar manualmente la función de inclusión forzada en la Capa1. Esta acción obliga a que las transacciones ignoradas por el secuenciador se agreguen por la fuerza a la bandeja de entrada rápida (Bandeja de entrada del secuenciador). Posteriormente, serán detectados por todos los nodos de Arbitrum One y se incluirán forzosamente en la secuencia de transacciones de Layer2.
Acabamos de mencionar que los datos en la bandeja de entrada rápida representan la entidad de datos históricos de L2. Por lo tanto, en casos de censura maliciosa, el uso de la bandeja de entrada lenta permite que las instrucciones de transacción eventualmente se incluyan en el libro mayor L2, cubriendo escenarios como retiros forzados para escapar de la Capa 2.
A partir de esto, se puede ver que para cualquier dirección y nivel de transacciones, el secuenciador en última instancia no puede censurarlo permanentemente.
Varias funciones principales de la bandeja de entrada lenta (Bandeja de entrada):
Sin embargo, es importante tener en cuenta que la función de inclusión forzada en realidad se encuentra en el contrato de la bandeja de entrada rápida. Para facilitar la comprensión, lo explicamos junto con la bandeja de entrada lenta.
Outbox solo está relacionado con retiros y puede entenderse como un sistema de registro y gestión de comportamientos de retiro:
A continuación tomaremos ETH como ejemplo para explicar completamente el proceso de depósito y retiro. La única diferencia entre ERC20 y ETH es que el primero usa Gateway. No lo explicaremos en detalle.
El usuario llama a la función depositETH() de la caja lenta.
Esta función seguirá llamando a 'bridge.enqueueDelayedMessage()', Registre el mensaje en el contrato puente y envíe ETH al contrato puente. Todos los fondos de depósito de ETH se guardan en el contrato puente, que equivale a una dirección de depósito.
El secuenciador monitorea los mensajes de depósito en el cuadro lento y refleja la operación de depósito en la base de datos L2. Los usuarios pueden ver los activos que han depositado en la red L2.
El secuenciador incluye el registro de depósito en el lote de transacciones y lo envía al contrato de caja rápida en L1.
El usuario llama a la función retiroEth () del contrato ArbSys en L2 y el número correspondiente de ET se quema en L2.
El secuenciador envía la solicitud de retiro a la casilla express.
El nodo Validador crea un nuevo bloque acumulativo basado en la secuencia de transacciones en el cuadro rápido, que contendrá las transacciones de retiro anteriores.
Después de que el bloque acumulativo pasa por el período de desafío que también se confirma, el usuario puede llamar a la función Outbox.execute Transaction() en L1 para demostrar que los parámetros están dados por el contrato ArbSys mencionado anteriormente.
Una vez que se confirme que el contrato de la Bandeja de salida es correcto, la cantidad correspondiente de ETH en el puente se desbloqueará y se enviará al usuario.
Al utilizar el puente oficial Optimistic Rollup para retirar efectivo, habrá un problema de espera hasta el período de desafío. Podemos utilizar un puente de cadena cruzada privado de terceros para eliminar este problema:
La función force Inclusion() se utiliza para resistir la censura del secuenciador. Cualquier transacción local L2, transacción L1 a L2 y transacción L2 a L1 se puede implementar usando esta función. La censura maliciosa del secuenciador afecta gravemente la experiencia de la transacción. En la mayoría de los casos, optaremos por retirar dinero y dejar L2. Por lo tanto, a continuación se utiliza el retiro forzado como ejemplo para presentar el uso de forceInclusion.
Volviendo a los pasos de retiro de ETH, solo los pasos 1 y 2 implican censura del secuenciador, por lo que solo es necesario cambiar estos dos pasos:
Los usuarios finales pueden retirar dinero en la Bandeja de salida y el resto de los pasos son los mismos que los retiros normales.
Además, también hay tutoriales detallados sobre el uso de Arb SDK en arbitrum-tutorials para guiar a los usuarios sobre cómo realizar transacciones locales L2 y transacciones L2 a L1 a través de la función forceInclusion().