Skip to content

op-node:v1.16.1 fails to start due to missing L1 chain config file #404

@gologo13

Description

@gologo13

Summary

When using op-node:v1.16.1 with optimism-package (commit 7bef190d7c0b9f619438ed08b17bd5e5f51e72ff), the op-node service fails to start with the error:

failed to setup: unable to create the rollup node config: failed to read chain spec: open : no such file or directory

Environment

  • optimism-package version: 7bef190d7c0b9f619438ed08b17bd5e5f51e72ff
  • op-node version: v1.16.1
  • op-deployer version: v0.5.0-rc.2
  • Kurtosis version: Latest

Steps to Reproduce

  1. Configure network-config.yaml with op-node:v1.16.1:

    chains:
      op-rollup-l2:
        participants:
          sequencer-1:
            cl:
              image: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.16.1"
  2. Run the devnet:

    kurtosis run --enclave op-devnet "github.com/ethpandaops/optimism-package@7bef190d7c0b9f619438ed08b17bd5e5f51e72ff" --args-file network-config.yaml
  3. Observe that op-node fails to start during the CL launch phase.

Here is network-config.yaml.
Note that I'm currently facing this issue - ethereum-optimism/optimism#18222 regarding op-deployer and op-contracts.
So, the local artifacts are specified in op_contract_deployer_params.l1_artifacts_locator/l2_artifacts_locator.

Expected Behavior

The op-node service should start successfully and connect to the L2 execution layer.

Actual Behavior

The op-node container fails immediately with:

t=2025-11-08T08:27:50+0000 lvl=crit msg="Application failed" message="failed to setup: unable to create the rollup node config: failed to read chain spec: open : no such file or directory"

Root Cause Analysis

Starting with op-node:v1.16.1, the binary requires an explicit L1 chain configuration file to be provided via the --rollup.l1-chain-config flag. This is necessary for the node to read the L1 b

lob schedule configuration.

However, the current optimism-package Starlark code (specifically src/cl/op-node/launcher.star) does not:

  1. Include the --rollup.l1-chain-config flag in the op-node command
  2. Copy the L1 chainspec file (chainspec.json from el_cl_genesis_data) into the op-deployer-configs files artifact
  3. Set the l1ChainConfigPath field in the generated rollup-12345.json file

When op-node tries to read the chain spec, it attempts to open an empty path (""), resulting in the "no such file or directory" error.

Evidence

  1. op-node flags.go (from op-node source):

    L1ChainConfig = &cli.PathFlag{
        Name:     "rollup.l1-chain-config",
        Usage:    "Path to .json file with the chain configuration for the L1...",
    }
  2. op-node service.go (from op-node source, line 330):

    return nil, fmt.Errorf("failed to read chain spec: %w", err)
  3. optimism-package launcher.star (line 168):
    The op-node command construction does not include --rollup.l1-chain-config.

  4. Generated rollup-12345.json:
    The file does not contain chainSpecPath or l1ChainConfigPath fields.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions