Custom op-node forks on these chains cannot run kona-node; drop the
orphaned --kona.yml compose files and registry entries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop --kona compose profiles for base, fraxtal, zircuit, xlayer, and superseed
where kona-node v1.6.1 stalls or hash-mismatches on custom rollups. Add
worldchain-mainnet-op-reth-pruned-trace--kona for the planned geth→reth+kona swap.
Co-authored-by: Cursor <cursoragent@cursor.com>
Generate --kona compose profiles for base, mode, zircuit, fraxtal, zora,
metal, hashkeychain, superseed, swell, bnb, manta-pacific, blast, and xlayer
so production nodes can migrate off stock op-node before DRPC deprioritizes it.
Each kona variant shares the same EL data volume as its op-node sibling.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist OP_NODE_SYNCMODE=consensus-layer and OP_NODE_L2_SKIP_SYNC_START_CHECK=true
so op-node drives the EL via engine API (no EL P2P peers on katana mainnet).
Co-authored-by: Cursor <cursoragent@cursor.com>
Add generated op/reth/worldchain-mainnet-op-reth-pruned-trace.yml and
register it in compose_registry.json for Superchain EL migration off op-geth.
Co-authored-by: Cursor <cursoragent@cursor.com>
Read chain_id, genesis_url, seeds, and app.toml json-rpc/evm tunables from
environment (set by the generator from context.yml). Fix seed wiring to use
ct_merge_seeds instead of ct_set_persistent_peers.
Docker 28.5.x fails container create when a volume subpath targets a
path that exists as a file in the image. Copy VERSION from the conf
volume mount instead of subpath-mounting onto /opt/l2_deploy/bin/VERSION.
Co-authored-by: Cursor <cursoragent@cursor.com>
Without this build arg reth.Dockerfile builds upstream reth and cargo fails
on asm-keccak/jemalloc features missing from the alethia-reth fork.
Co-authored-by: Cursor <cursoragent@cursor.com>
stop.sh and start.sh previously relied on ambient COMPOSE_FILE, so
backup fencing left orchestration unable to stop or restart the target
node. Pass -f base.yml and the node yml explicitly and fail loudly.
Co-authored-by: Cursor <cursoragent@cursor.com>
select_newest_remote_backup_from_list was sorting an empty process
substitution instead of the piped list-backups.sh output.
Co-authored-by: Cursor <cursoragent@cursor.com>
backup-node.sh now stops services, fences COMPOSE_FILE during backup, and
restores via EXIT trap; consumers skip <1MB .tar.zst artifacts so purged-
volume junk cannot shadow real backups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip static-file offload when projected /slowdisk free space after restore
would fall below SLOWDISK_FLOOR_GB (default 150 GB); warn after extract if
the floor is breached. Restore never aborts — falls back to primary extract.
Co-authored-by: Cursor <cursoragent@cursor.com>
The aldaba_light binary writes sync and p2p logs only to rotating files
under /opt/l2_deploy/light/log/; wrap entry.sh so tail -n0 -F streams new
lines to stdout while preserving file logging and tini PID-1 semantics.
Co-authored-by: Cursor <cursoragent@cursor.com>
Set ADVERTISE_NODE_IP=${IP} and ADVERTISE_NODE_PORT to the salted host
port; map client_port:19000 so inbound cubenet peering is dialable.
Co-authored-by: Cursor <cursoragent@cursor.com>
When multicurl fails to reach the reference RPC (timeout/unreachable),
clean up the temp file, retry up to MAX_RETRIES, then exit with
'unverified (reference unreachable)' instead of falling through as success.
Also add Robinhood mainnet official RPC to reference-rpc-endpoint.json.
Co-authored-by: Cursor <cursoragent@cursor.com>
babylond v4.3.0 prompts for a BLS key password on every start when
bls_key.json exists unless start gets --no-bls-password; without it RPC
replicas crash-loop with "failed to get BLS password: EOF".
Co-authored-by: Cursor <cursoragent@cursor.com>
Switch to bitcoin/bitcoin:31.0 with txindex and tuned RPC flags, drop the
esplora indexer sidecar, and add bitcoin-protocol health probes so fleet
status and wait-for-online work for bitcoin-family nodes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pre-FROM ARG VERSION is not visible inside build stages; compose passes
VERSION as a build arg but git checkout expanded empty without a stage-level
re-declaration.
Co-authored-by: Cursor <cursoragent@cursor.com>
The golang:alpine go-builder stage runs git clone/checkout but never
installed git, causing compose build to fail with exit 127 on rpc-de-32.
Co-authored-by: Cursor <cursoragent@cursor.com>
op-reth reads OP-stack fork schedule from genesis.json; without
isthmusTime/jovianTime it rejects post-Jovian payloads (MinBaseFeeNotAllowedBeforeJovian).
Nitro crash-looped with "unsupported chain ID 4663" because baseConfig
only had chain.id. Add info-json with on-chain rollup addresses and
chain-config from genesis serializedChainConfig (BoLD v3.x, no validator-utils).
Co-authored-by: Cursor <cursoragent@cursor.com>
Orbit rollup on Ethereum/Sepolia with per-chain baseConfig assets (testnet
info-json from official config; mainnet genesis-json-file bootstrap).
Co-authored-by: Cursor <cursoragent@cursor.com>
Downgrade from 2.9.0 to fix mainnet crash-loop on block 81541799
(sender not an eoa) after us-40 purge.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reduce stages.transaction_lookup.chunk_size from 5M to 500k in reth.toml
to prevent multi-hour pipeline stalls during large checkpoint windows on
op-reth-pruned-trace (rpc-de-32).
Mirror vanilla reth.yml's client_command_dbopts ({{ '- --full' if db_type in
['pruned','minimal'] else '' }}): the arc execution client now omits --full for the
archive variant (full history) and keeps it for pruned/minimal. Previously --full was
hardcoded so both variants ran identical pruned-sync flags.
- EL client renamed arc -> reth (it IS a reth fork); template arc.yml -> reth.arc.yml
so find_template picks it as the arc-network reth override. Path is now
arc/reth/arc-testnet-reth-{pruned,archive}-trace.yml (was arc/arc/arc-testnet-arc-full).
- profiles: full -> pruned[trace] + archive[trace] (there is no 'full' node type).
- removed the {{short_name}}-snapshots init container (arc-snapshots download, ~84 GB) and
the consensus-init depends_on that pointed at it. Chain data is seeded OUT-OF-BAND, never
via a compose service. Services: arc-testnet (EL) / arc-testnet-node (malachite CL) +
consensus-init / sockets-init.
- git rm orphaned arc/arc/arc-testnet-arc-full.yml.
kona's NodeMode enum (crates/node/service/src/service/mode.rs) has only
Validator/Sequencer and parses via FromStr against the PascalCase display
strings. There is no 'verifier' mode, so the old value failed to parse and
kona-node crash-looped on startup. Validator is also kona's default.
Source change is env/op/kona.env (global default for all op-stack kona nodes),
so this regenerates KONA_NODE_MODE across all 38 op/*/...--kona compose files.
Add PRECONFIRMATION_SERVER_JWT_SECRET and --preconfirmation.jwtSecret=/jwtsecret
to archive hoodi driver services so taiko-client v2.4.0 can start the
preconfirmation block server when PRECONFIRMATION_SERVER_PORT is enabled.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update EL (op-reth) and CL (op-node) image defaults in all seven
base-mainnet compose profiles. Also aligns OP_NODE_RPC_PORT with
env/op/node.env (9545) on regen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rename SHASTA_INBOX to INBOX (v2.4.0 reads --inbox from INBOX env var
and no longer honors PACAYA_INBOX/SHASTA_INBOX). Remove unused PACAYA_INBOX.
Co-authored-by: Cursor <cursoragent@cursor.com>
In xlayer/op-node:v0.1.5.1, the =true path triggers an infinite
'Found highest L2 block with canonical L1 origin. Skip further sanity check
and jump to the safe head' loop that prevents block derivation entirely.
Setting =false restores normal startup: op-node advances through the check
and begins deriving blocks. No newer op-node image exists (v0.1.5.1 is latest).
Affects all xlayer-mainnet op-node variants (geth, reth) as they share
the same op-node consensus layer.
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>