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
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
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
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