github LiskHQ/lisk-node v0.4.19

6 hours ago

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; hardcoded reth/Dockerfile in docker-compose.yml; dropped CLIENT from .env; cleaned the OP_GETH_* variables from .env.mainnet/.env.sepolia; trimmed the geth/Dockerfile hunk from dockerfile-lisk-sepolia.patch; rewrote the README to drop op-geth-specific sections.
  • Snap sync wiring (reth-entrypoint):
    • New OP_RETH_BOOTNODES environment variable, wired through as --bootnodes. Mirrors the previous OP_GETH_BOOTNODES mechanism.
    • When OP_RETH_BOOTNODES is set, --disable-discovery is 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.
  • Snapshot bootstrap script improvements (reth/download-apply-snapshot.sh):
    • Checksum probe. Probes both <snapshot>.SHA256 and <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_TYPE only enforced during auto-resolve. When SNAPSHOT_URL is set explicitly (e.g. a Gelato URL), SNAPSHOT_TYPE is unused and skipped. Auto-resolution against snapshots.lisk.com still requires SNAPSHOT_TYPE=datadir.
    • SNAPSHOT_URL safe under set -u (defaulted to empty before the unset check, so the script no longer aborts on first run with no URL set).
    • .tar snapshots documented alongside .tar.gz and .tar.lz4 (already supported by the dispatch added in v0.4.18).
  • .env.sepolia bootnode placeholders fixed. Replaced the empty OP_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.lz4 import 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-safe defaults 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 NotFound errors; broader NotFound tolerance 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: maxSafeLag stall 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_target clamping past best_block in advance_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_proofs CLI subcommand corrected for RoInconsistent usage.

OP Stack Changeset

op-node
v1.19.0
Changelog

op-reth
v2.3.0
Changelog

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

Don't miss a new lisk-node release

NewReleases is sending notifications on new releases.