Required upgrade for all Lisk Node operators ahead of Karst
Important
This release is required ahead of the Karst hardfork activation (Sepolia: June 17, 2026; Mainnet: July 8, 2026, pending governance). It bumps op-node to v1.19.0 and op-reth to v2.3.0, drops op-geth from the Lisk Node images, and brings substantial snap-sync and snapshot-script improvements.
Upstream releases:
Caution
op-geth is no longer shipped by Lisk Node. The geth/ build, the CLIENT environment variable, and the op-geth paths in docker-compose.yml, the .env* files, dockerfile-lisk-sepolia.patch, the CI matrix, and the README have been removed. op-reth is the only supported execution client going forward. Operators still running op-geth must migrate before Karst — see the upstream notice: https://docs.optimism.io/notices/op-geth-deprecation. Docker users no longer need to set CLIENT=reth; docker compose up --build --detach builds op-reth by default.
Warning
Default change in op-node v1.19.0. --syncmode.offset-el-safe now defaults to a 12-hour offset — safe/finalized heads now lag the synced tip by ~12 hours during execution-layer sync. If you need the previous behavior, set --syncmode.offset-el-safe=0 explicitly before upgrading.
Highlights
Lisk Node
- op-geth support removed. Deleted
geth/Dockerfile,geth/geth-entrypoint,geth/download-apply-snapshot.sh; removed the geth matrix entry from CI; hardcodedreth/Dockerfileindocker-compose.yml; droppedCLIENTfrom.env; cleaned theOP_GETH_*variables from.env.mainnet/.env.sepolia; trimmed thegeth/Dockerfilehunk fromdockerfile-lisk-sepolia.patch; rewrote the README to drop op-geth-specific sections. - Snap sync wiring (
reth-entrypoint):- New
OP_RETH_BOOTNODESenvironment variable, wired through as--bootnodes. Mirrors the previousOP_GETH_BOOTNODESmechanism. - When
OP_RETH_BOOTNODESis set,--disable-discoveryis dropped automatically, since reth's bootnodes only take effect via the discovery protocol (discv4/discv5/DNS). .env.*snap-sync notes refreshed: drop the stale "experimental" framing (snap sync is now the recommended default upstream); keep the peer-connectivity caveat.
- New
- Snapshot bootstrap script improvements (
reth/download-apply-snapshot.sh):- Checksum probe. Probes both
<snapshot>.SHA256and<snapshot>.sha256(some publishers, e.g. Gelato, serve lowercase); fails fast (exit 13) if neither resolves, so we no longer burn a full snapshot download we can't verify. SNAPSHOT_TYPEonly enforced during auto-resolve. WhenSNAPSHOT_URLis set explicitly (e.g. a Gelato URL),SNAPSHOT_TYPEis unused and skipped. Auto-resolution againstsnapshots.lisk.comstill requiresSNAPSHOT_TYPE=datadir.SNAPSHOT_URLsafe underset -u(defaulted to empty before the unset check, so the script no longer aborts on first run with no URL set)..tarsnapshots documented alongside.tar.gzand.tar.lz4(already supported by the dispatch added in v0.4.18).
- Checksum probe. Probes both
.env.sepoliabootnode placeholders fixed. Replaced the emptyOP_RETH_BOOTNODES=line with a format pointer + TODO, so uncommenting it no longer sets the var to an empty string and trips the entrypoint's set-but-empty edge case.- Documentation refresh. Dedicated Snap sync section; Gelato listed as an alternative snapshot source under both Docker and Source flows; manual
.tar.lz4import recipe (tar -I lz4 -xf); external links updated (docs.optimism.io,reth.rs, Gelato private-RPCs); JWT note broadened to cover op-reth; assorted README corrections.
OP Stack
- op-node bumps to v1.19.0 across v1.18.1, v1.18.2, and v1.19.0:
- Karst readiness (v1.19.0): required to validate post-activation blocks.
- Breaking default (v1.19.0):
--syncmode.offset-el-safedefaults to 12h. See Action required above. - SuperAuthority safe/finalized head redesigned as a tri-state; cross-safe head caching with canonicality re-validation.
- EL-sync robustness: consolidation no longer stalls on
NotFounderrors; broaderNotFoundtolerance during finalized lookups. - Post-exec span batch support; dependency-set loading from superchain-registry; interop filter client added to op-service.
- v1.18.x maintenance:
maxSafeLagstall fix in op-node/op-batcher; resilience to L1 reorgs beyond the cross-safe head during interop; super-authority finalized-head caching.
- op-reth bumps to v2.3.0 across v2.2.3, v2.2.4, v2.2.5, and v2.3.0:
- Karst readiness (v2.3.0): required to validate post-activation blocks.
- Engine fixes: prevent sync-target spin after deep unwind; fix
sync_targetclamping pastbest_blockinadvance_sync. - v2.2.5 picks up a critical FCU backfill-target fix from upstream reth; adds the
interop_RPC namespace; exposes per-call committed transactions in payload handling. op_proofsCLI subcommand corrected forRoInconsistentusage.
OP Stack Changeset
op-geth
Removed in this release. Operators still running op-geth must migrate to op-reth before Karst.
Full Changelog: v0.4.18...v0.4.19