Implemente un devnet OP Stack

Configuración de dependencia

Configuración del entorno e instalación de Golang

Primero, instale dependencias para el software Celestia y para Apila OP.

Repositorio de clones

A continuación, clone el repositorio:

bash

cd $HOME
git clone https://github.com/celestiaorg/optimism
cd optimism

Consulte la versión para ver la versión estable o la versión ascendente:

v1.2.0-OP_v1.7.0-CN_v0.12.4rebase-arribabash

git checkout tags/v1.2.0-OP_v1.7.0-CN_v0.12.4
git submodule update --init --recursive

Construir devnet

Construir definiciones de TypeScript para dependencias TS:

bash

Establecer variables de entorno para iniciar la red:

bash

Iniciar devnet

Inicie la red ejecutando:

bash

Esto inicia la capa 1 (ETH), la capa 2 (op-geth), capa de disponibilidad de datos (Celestia), el secuenciador (op-node), remitente de lotes (op-batcher), servicio de compromiso estatal (op-proposer).

Ver los registros del devnet

Si desea ver los registros del devnet, ejecute el siguiente comando desde la raíz del directorio Optimism:

bash

Opcional: Consejos de docker

Encuentra una transacción

Ahora, verificaremos una transacción reciente en el L1 con:

bash

La salida de un bloque que contiene una transacción se verá así:

consola

Copie el hash de la transacción de transactions: <transaction-hash> y establecerlo como una variable:

bash

Lea los datos de la llamada de transacción

Ahora lea los datos de la llamada de transacción en el L1:

bash

La salida se verá similar a la siguiente:

consola

PUNTA

Está buscando una transacción de bateador en la dirección 0xFf00000000000000000000000000000000000901.

Primero, elimine el prefijo 0xce. Ahora, establece el input como el INPUT variable y codificarlo como base64:

bash

PUNTA

Recuerda eliminar el 0xce prefijo!

Encuentra los datos sobre Celestia

Clonar el go-da repositorio:

bash

Ahora, de go-da/proto/da correr:

bash

¡Su resultado se verá similar al siguiente!

consola

Mecanismo de retroceso Ethereum en OP Stack

El Mecanismo de retroceso de Ethereum permite que los rollups "caigan" a Ethereum u otra cadena EVM en caso de tiempo de inactividad o errores al enviar datos a Celestia.

Implementación de fallback

El mecanismo de retroceso de Ethereum se implementa en el celestiaorg/optimismo versión v1.1.0.

El op-batcher/batcher/driver.go y op-node/rollup/derive/calldata_source.go los archivos son parte del mecanismo de devolución de Ethereum en el op-batcher y op-node respectivamente.

En driver.go, el calldataTxCandidate la función es responsable de la ruta de escritura del retroceso de Ethereum. Esta función crea y envía una transacción a la dirección de la bandeja de entrada por lotes con los datos dados. Utiliza el subyacente txmgr para manejar el envío de transacciones y la gestión de precios del gas.

Si los datos de la transacción se pueden publicar como un blob a Celestia, reemplaza el calldata con un identificador de blob y envía la transacción con estos datos. Si no se puede publicar en Celestia, vuelve a Ethereum sin ningún cambio en la transacción.

El identificador de blob comienza con el prefijo especial 0xce, que se eligió como mnemotécnico para Celestia, e indica que los datos restantes deben interpretarse como un Block Height (8 bytes) y Blob Commitment (32 bytes) codificados por little-endian. La combinación de estos se puede usar más tarde para recuperar los calldata originales de Celestia.

Prefijo

8 bytes

32 bytes

0xce

Altura del Bloque

Compromiso de Blob

ir

En calldata_source.go, el DataFromEVMTransactions la función define la ruta de lectura del retroceso de Ethereum. Esta función filtra todas las transacciones y devuelve los calldata de las transacciones que se envían a la dirección de la bandeja de entrada del lote desde la dirección del remitente del lote.

Si la calldata coincide con el prefijo de versión 0xce, se decodifica como un identificador de blob, el calldata original se recupera de Celestia y se devuelve para su derivación. Si la calldata no coincide con el prefijo, toda la calldata se devuelve para su derivación.

ir

Estas dos funciones trabajan juntas para garantizar que el mecanismo de retroceso de Ethereum funcione correctamente, lo que permite que el despliegue continúe funcionando incluso durante los períodos de inactividad en Celestia.

Probando el fallback

La prueba del mecanismo de retroceso de Ethereum se puede hacer con el go-da herramienta. La activación de una transacción de blob simultánea causará el op-batcher transacción de Blob a fallar, con un incorrect account sequence error, que desencadena una devolución a Ethereum.

Para activar la transacción, envíe este comando desde el mismo go/proto/da directorio:

bash

Alternativamente, puede apagar el local-celestia-devnet y vea que los registros de devnet de OP Stack muestran que el rollup ha vuelto al L1, en este caso Ethereum, para publicar datos.

Lotes de span

Los lotes de span se pueden habilitar configurando OP_BATCHER_BATCH_TYPE: 1 en tu docker-compose.yml archivo.

Tenga en cuenta que esto requiere que se configure el tiempo de activación de Delta. Para su devnet, debe establecer "l2GenesisDeltaTimeOffset": "0x0", en devnetL1-template.json. Esto permitirá lotes de tramo y se puede probar mediante el engrasado docker compose logs -f | grep batch_type que debe incluir batch_type=SpanBatch y batch_type=1.

Last updated