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
-
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"
-
Run the devnet:
kurtosis run --enclave op-devnet "github.com/ethpandaops/optimism-package@7bef190d7c0b9f619438ed08b17bd5e5f51e72ff" --args-file network-config.yaml
-
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:
- Include the
--rollup.l1-chain-config flag in the op-node command
- Copy the L1 chainspec file (
chainspec.json from el_cl_genesis_data) into the op-deployer-configs files artifact
- 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
-
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...",
}
-
op-node service.go (from op-node source, line 330):
return nil, fmt.Errorf("failed to read chain spec: %w", err)
-
optimism-package launcher.star (line 168):
The op-node command construction does not include --rollup.l1-chain-config.
-
Generated rollup-12345.json:
The file does not contain chainSpecPath or l1ChainConfigPath fields.
Summary
When using
op-node:v1.16.1withoptimism-package(commit7bef190d7c0b9f619438ed08b17bd5e5f51e72ff), the op-node service fails to start with the error:Environment
7bef190d7c0b9f619438ed08b17bd5e5f51e72ffv1.16.1v0.5.0-rc.2Steps to Reproduce
Configure
network-config.yamlwithop-node:v1.16.1:Run the devnet:
kurtosis run --enclave op-devnet "github.com/ethpandaops/optimism-package@7bef190d7c0b9f619438ed08b17bd5e5f51e72ff" --args-file network-config.yamlObserve that
op-nodefails 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-nodeservice should start successfully and connect to the L2 execution layer.Actual Behavior
The
op-nodecontainer fails immediately with: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-configflag. This is necessary for the node to read the L1 blob schedule configuration.
However, the current
optimism-packageStarlark code (specificallysrc/cl/op-node/launcher.star) does not:--rollup.l1-chain-configflag in theop-nodecommandchainspec.jsonfromel_cl_genesis_data) into theop-deployer-configsfiles artifactl1ChainConfigPathfield in the generatedrollup-12345.jsonfileWhen
op-nodetries to read the chain spec, it attempts to open an empty path (""), resulting in the "no such file or directory" error.Evidence
op-node flags.go (from op-node source):
op-node service.go (from op-node source, line 330):
optimism-package launcher.star (line 168):
The
op-nodecommand construction does not include--rollup.l1-chain-config.Generated rollup-12345.json:
The file does not contain
chainSpecPathorl1ChainConfigPathfields.