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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions