Los usuarios de Bitcoin solo deben necesitar BTC en Bitcoin para forzar una retirada de sus BTC de BOB a Bitcoin. Estamos trabajando en una solución híbrida: utilizando Ethereum como DA por defecto y permitiendo a los usuarios incluir transacciones en BOB a través de una transacción especial en Bitcoin. Estamos emocionados de compartir nuestro trabajo en progreso en esta publicación del blog.
Demasiado largo; no lo leí
Una de las propiedades fundamentales de las L2s es que su estado debe progresar incluso cuando el el secuenciador está desconectado. L2s logran esto leyendo y escribiendo su estado desde una capa de Disponibilidad de Datos (DA) que se puede actualizar de forma independiente a la L2 estando en línea. De esta manera, los usuarios pueden forzar la inclusión de sus transacciones incluso cuando el secuenciador está fuera de línea o el secuenciador no acepta sus transacciones directamente.
Para el puente BitVM de BOB, esto plantea un problema interesante. Actualmente, BOB utiliza blobs Ethereum EIP-4844 como su capa DA. Los usuarios en Ethereum pueden activar fácilmente retiros de vuelta a Bitcoin a través del puente BitVM. Sin embargo, requiere que los usuarios tengan ETH en Ethereum.
Esto no es lo suficientemente bueno para nosotros: los usuarios de Bitcoin solo deberían necesitar BTC en Bitcoin para forzar un retiro de su BTC de BOB de vuelta a Bitcoin. Estamos trabajando en una solución híbrida: por defecto a Ethereum como DA mientras permitimos a los usuarios forzar transacciones incluidas en BOB a través de una transacción especial en Bitcoin. Estamos emocionados de compartir nuestro trabajo en progreso en esta publicación de blog.
El proceso de derivaciónes bastante importante para L2s: todo el estado L2 de BOB debe construirse a partir de L1 y la capa DA. Permite a L2s disfrutar de la misma resistencia a la censura que la capa DA, en nuestro caso, Ethereum.
Simplificado, en rollups (específicamente cadenas OP Stack), tenemos dos tipos de datos en el L1:
Si queremos Bitcoin como una capa DA, ¿por qué no cambiar completamente a usar Bitcoin como una capa DA? La respuesta es principalmentecosto. Bitcoin tiene muy poco almacenamiento disponible (aproximadamente 4MB cada 10 minutos), por lo tanto, el costo de almacenamiento es alto.
Sin embargo, en nuestro caso, BOB aún puede usar Ethereum como su capa DA "principal" donde publica todos sus datos de transacciones, pero agregar Bitcoin como una capa de respaldo altamente resistente a la censura si Ethereum DA no está disponible. Básicamente, Ethereum se convierte en la capa DA optimista mientras que Bitcoin se convierte en el costoso pero resistente a fallos último recurso.
La solución básica es agregar Bitcoin a BOB como parte del canal de derivación, de modo que BOB (y específicamente el "op-nodo") procese las entradas en este orden:
Vamos a adentrarnos en una posible solución para codificar las transacciones de retiro forzado de Bitcoin en el canal de derivación de BOB. Ten en cuenta que esto aún está en investigación, por lo que podrían haber cambios.
Necesitaremos tres partes para crear una transacción de retiro forzado:
Una pila OPtransacción de depósitotiene la siguiente estructura:
Una transacción de retiro forzado requiere incluir la transacción de retiro codificada en el campo de datos de la transacción de depósito. Esto se hace creando la transacción en BOB que activa el retiro de BOB a Bitcoin y funcionaría exactamente igual que si la transacción fuera enviada desde Ethereum.
Luego podemos almacenar una versión (comprimida) de la transacción de retiro forzado en Bitcoin que incluye todos los datos mencionados anteriormente.
Como los datos para la transacción de retiro forzado son más grandes de lo que normalmente se debe almacenar en una salida OP_RETURN, es probable que usemos unTaprootsalida para almacenar los datos.
Si bien es fácil identificar una transacción de depósito (que puede incluir un retiro) en Ethereum debido a que se envía al contrato OptimismPortal de BOB, no es tan fácil identificar una transacción de retiro forzado en Bitcoin.
Serialización de datos: la transacción de retiro forzoso se serializa utilizando scripts Taproot dentro de una estructura "sobre". Estos son noops en la red de Bitcoin y se utilizan, por ejemplo, para los Ordinales también. Ajustamos la estructura para que se ajuste a nuestras necesidades.
No establecido
OP_FALSE OP_IF
OP_PUSH "bob"
OP_1
OP_PUSH "transacción"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromiso/Revelación de Dos Fases:
Como con los Ordinales, los usuarios tendrán que enviar dos transacciones a Bitcoin:
Este es el problema más abierto hasta ahora, con dos opciones actualmente bajo consideración:
¡También estamos experimentando con más ideas, así que estad atentos para más actualizaciones!
Cualquiera puede determinar el estado de GATE solo con tener que verificar los datos en Bitcoin y Ethereum:
Consistencia de datos: Si bien es importante garantizar la consistencia de datos entre las cadenas de Ethereum y Bitcoin, la mera presencia de datos de transacciones en ambas cadenas no garantiza su validez. Las transacciones deben representar transiciones de estado válidas de acuerdo con la función de transición de estado del rollup para considerarse legítimas. La solución requiere implementar lógica de validación dentro del op-node (u otras implementaciones de capas de consenso) que verifique primero si una transacción resulta en un cambio de estado válido antes de aceptarla.
Pruebas de Fraude y Validez: El sistema de prueba de fraude tanto para BitVM como para Ethereum debe mejorarse para manejar datos de ambas cadenas, lo que podría hacer que la resolución de disputas sea más compleja. Para abordar esto, debemos tener en cuenta con precisión las posibles transacciones de Bitcoin y Ethereum como parte del puente de BitVM y el acuerdo de BOB en Ethereum.
Aumento del almacenamiento: Además, los nodos BOB en la red enfrentan requisitos de almacenamiento y ancho de banda aumentados ya que necesitan procesar y almacenar datos de Bitcoin y Ethereum. Sin embargo, podríamos mitigar esto al requerir que las transacciones de BOB realizadas en Bitcoin deban incluirse en bloques de Ethereum con una referencia a los últimos bloques de Bitcoin. De esta manera, los nodos solo necesitan sincronizar bloques recientes de Bitcoin.
Estamos emocionados de empujar el límite de los rollups híbridos que combinan la seguridad de Bitcoin con la innovación de Ethereum. En este problema concreto, nos interesa combinar la resistencia a la censura de las transacciones de Bitcoin con la pila de rollups de BOB. Actualizaremos esta publicación del blog con más información a medida que progresemos.
Los usuarios de Bitcoin solo deben necesitar BTC en Bitcoin para forzar una retirada de sus BTC de BOB a Bitcoin. Estamos trabajando en una solución híbrida: utilizando Ethereum como DA por defecto y permitiendo a los usuarios incluir transacciones en BOB a través de una transacción especial en Bitcoin. Estamos emocionados de compartir nuestro trabajo en progreso en esta publicación del blog.
Demasiado largo; no lo leí
Una de las propiedades fundamentales de las L2s es que su estado debe progresar incluso cuando el el secuenciador está desconectado. L2s logran esto leyendo y escribiendo su estado desde una capa de Disponibilidad de Datos (DA) que se puede actualizar de forma independiente a la L2 estando en línea. De esta manera, los usuarios pueden forzar la inclusión de sus transacciones incluso cuando el secuenciador está fuera de línea o el secuenciador no acepta sus transacciones directamente.
Para el puente BitVM de BOB, esto plantea un problema interesante. Actualmente, BOB utiliza blobs Ethereum EIP-4844 como su capa DA. Los usuarios en Ethereum pueden activar fácilmente retiros de vuelta a Bitcoin a través del puente BitVM. Sin embargo, requiere que los usuarios tengan ETH en Ethereum.
Esto no es lo suficientemente bueno para nosotros: los usuarios de Bitcoin solo deberían necesitar BTC en Bitcoin para forzar un retiro de su BTC de BOB de vuelta a Bitcoin. Estamos trabajando en una solución híbrida: por defecto a Ethereum como DA mientras permitimos a los usuarios forzar transacciones incluidas en BOB a través de una transacción especial en Bitcoin. Estamos emocionados de compartir nuestro trabajo en progreso en esta publicación de blog.
El proceso de derivaciónes bastante importante para L2s: todo el estado L2 de BOB debe construirse a partir de L1 y la capa DA. Permite a L2s disfrutar de la misma resistencia a la censura que la capa DA, en nuestro caso, Ethereum.
Simplificado, en rollups (específicamente cadenas OP Stack), tenemos dos tipos de datos en el L1:
Si queremos Bitcoin como una capa DA, ¿por qué no cambiar completamente a usar Bitcoin como una capa DA? La respuesta es principalmentecosto. Bitcoin tiene muy poco almacenamiento disponible (aproximadamente 4MB cada 10 minutos), por lo tanto, el costo de almacenamiento es alto.
Sin embargo, en nuestro caso, BOB aún puede usar Ethereum como su capa DA "principal" donde publica todos sus datos de transacciones, pero agregar Bitcoin como una capa de respaldo altamente resistente a la censura si Ethereum DA no está disponible. Básicamente, Ethereum se convierte en la capa DA optimista mientras que Bitcoin se convierte en el costoso pero resistente a fallos último recurso.
La solución básica es agregar Bitcoin a BOB como parte del canal de derivación, de modo que BOB (y específicamente el "op-nodo") procese las entradas en este orden:
Vamos a adentrarnos en una posible solución para codificar las transacciones de retiro forzado de Bitcoin en el canal de derivación de BOB. Ten en cuenta que esto aún está en investigación, por lo que podrían haber cambios.
Necesitaremos tres partes para crear una transacción de retiro forzado:
Una pila OPtransacción de depósitotiene la siguiente estructura:
Una transacción de retiro forzado requiere incluir la transacción de retiro codificada en el campo de datos de la transacción de depósito. Esto se hace creando la transacción en BOB que activa el retiro de BOB a Bitcoin y funcionaría exactamente igual que si la transacción fuera enviada desde Ethereum.
Luego podemos almacenar una versión (comprimida) de la transacción de retiro forzado en Bitcoin que incluye todos los datos mencionados anteriormente.
Como los datos para la transacción de retiro forzado son más grandes de lo que normalmente se debe almacenar en una salida OP_RETURN, es probable que usemos unTaprootsalida para almacenar los datos.
Si bien es fácil identificar una transacción de depósito (que puede incluir un retiro) en Ethereum debido a que se envía al contrato OptimismPortal de BOB, no es tan fácil identificar una transacción de retiro forzado en Bitcoin.
Serialización de datos: la transacción de retiro forzoso se serializa utilizando scripts Taproot dentro de una estructura "sobre". Estos son noops en la red de Bitcoin y se utilizan, por ejemplo, para los Ordinales también. Ajustamos la estructura para que se ajuste a nuestras necesidades.
No establecido
OP_FALSE OP_IF
OP_PUSH "bob"
OP_1
OP_PUSH "transacción"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromiso/Revelación de Dos Fases:
Como con los Ordinales, los usuarios tendrán que enviar dos transacciones a Bitcoin:
Este es el problema más abierto hasta ahora, con dos opciones actualmente bajo consideración:
¡También estamos experimentando con más ideas, así que estad atentos para más actualizaciones!
Cualquiera puede determinar el estado de GATE solo con tener que verificar los datos en Bitcoin y Ethereum:
Consistencia de datos: Si bien es importante garantizar la consistencia de datos entre las cadenas de Ethereum y Bitcoin, la mera presencia de datos de transacciones en ambas cadenas no garantiza su validez. Las transacciones deben representar transiciones de estado válidas de acuerdo con la función de transición de estado del rollup para considerarse legítimas. La solución requiere implementar lógica de validación dentro del op-node (u otras implementaciones de capas de consenso) que verifique primero si una transacción resulta en un cambio de estado válido antes de aceptarla.
Pruebas de Fraude y Validez: El sistema de prueba de fraude tanto para BitVM como para Ethereum debe mejorarse para manejar datos de ambas cadenas, lo que podría hacer que la resolución de disputas sea más compleja. Para abordar esto, debemos tener en cuenta con precisión las posibles transacciones de Bitcoin y Ethereum como parte del puente de BitVM y el acuerdo de BOB en Ethereum.
Aumento del almacenamiento: Además, los nodos BOB en la red enfrentan requisitos de almacenamiento y ancho de banda aumentados ya que necesitan procesar y almacenar datos de Bitcoin y Ethereum. Sin embargo, podríamos mitigar esto al requerir que las transacciones de BOB realizadas en Bitcoin deban incluirse en bloques de Ethereum con una referencia a los últimos bloques de Bitcoin. De esta manera, los nodos solo necesitan sincronizar bloques recientes de Bitcoin.
Estamos emocionados de empujar el límite de los rollups híbridos que combinan la seguridad de Bitcoin con la innovación de Ethereum. En este problema concreto, nos interesa combinar la resistencia a la censura de las transacciones de Bitcoin con la pila de rollups de BOB. Actualizaremos esta publicación del blog con más información a medida que progresemos.