github ethereum-optimism/optimism kona-host/v1.7.0

4 hours ago

Overview

Important

This is a major release of kona-host containing a crash fix, fault-proof soundness fixes, derivation alignment with op-node, and interop groundwork. It is a required upgrade for all chains that run kona-client fault proofs.

Note: Lagoon (interop) is not yet live in production. Changes to those code paths in this release are preparation for future functionality and do not affect operators today.

What's Changed

Fault proof soundness

  • Span-batch decoding now matches op-node exactly. kona accepted non-minimal uvarint encodings that op-node rejects, rejected 10-byte overflow varints that op-node accepts, and consumed a leading 0x00 transaction type prefix instead of preserving it. A byzantine batcher could use either gap to make kona and op-node derive different chains from the same L1 data. Applies from Delta onward (#22126, #21808)
  • Fixed a truncated span-batch bitlist decode that could produce a different L2 chain from op-node (#21753)
  • brotli-decompressor is now floored at 5.0.1. Version 5.0.0 decoded corrupt brotli channel data successfully, where op-node and libbrotlidec reject it (#21505)
  • Span-batch overlapped blocks are now validated against the safe chain in Holocene, matching op-node (#22215)
  • Deposit (0x7E) transactions are now rejected when presented as a bare RLP body without their EIP-2718 type byte (#22778)
  • The system config lookup and the pipeline reset walk-back are keyed by L2 block hash instead of block number, matching op-node's behaviour on reorgs (#22465, #22467)
  • User transactions are rejected in a fork-activation block for all forks from Jovian onward, matching op-geth (#21326)
  • Karst no longer reserves upgrade gas in every block after activation. Mode, Metal, Zora and OP Mainnet keep the historical behaviour through the keep_karst_upgrade_gas option, and their Karst gas compatibility configs are corrected (#21441, #21674)
  • Deposit transactions are no longer subject to the EIP-7825 transaction gas cap that Osaka introduces at Karst (#22372)
  • Guard against a panic when an MPT extension node prefix is longer than the remaining path (#19728)

Host reliability

  • kona-host no longer exits with SIGSEGV while it deserializes beacon blobs. A 1.3 MB stack frame exhausted the 2 MiB Tokio worker stack (#22517)
  • Online preimage fetching is hardened: an explicit HTTP(S) transport, native certificate roots for WSS, capped exponential backoff, and full error chains in the logs (#22604)
  • kona-host reports precompile status through an explicit result instead of a bare error (#21640)

Proof execution

  • kona-client skips interop consolidation when Lagoon is inactive on every chain the proof covers. On OP Sepolia this removes roughly 6.2 million MIPS steps from a proof. This changes the state transition, so it requires the new absolute prestate (#22730)
  • The driver decodes only the L1-info deposit when it computes L2BlockInfo, instead of decoding every transaction in the block (#21737)
  • The FPVM precompile provider now runs out of gas gracefully instead of panicking on overspend, and spends all gas on a halt, matching op-reth (#21582, #21634)
  • Replay warnings for stale span batches and missing L1 origins now carry structured context, so real derivation problems stand out (#22623)

Interop (not yet in production)

  • Chains with no interop configuration now default to a self-only dependency set. Previously the proof fell back to a dependency set supplied by the host, so it trusted unverified host data (#22408)
  • Lagoon upgrade gas is reserved independently of the dependency set. This removes a 150,000 gas disagreement with op-node from the first block after activation (#22216)
  • RollupConfig::block_number_from_timestamp now applies the L2 genesis offset. Without it an interop run against a migrated chain such as OP Mainnet retried a failing eth_getProof for ever (#22732)
  • The interop message validity rules are consolidated in one place, and the message expiry check no longer has a uint64 underflow case (#22565, #22609)
  • Several corrections to Superchain Deposit Module post-exec execution, refunds and receipts, which take effect when Lagoon activates (#21359, #21434, #21502, #21723, #22098, #22220, #22374, #22399)

Other

  • reth updated to v2.3.0 and then to a post-v2.4.0 build, carrying revm 38 through 41 into the executor (#21348, #21766)

Full Changelog: kona-host/v1.6.0...kona-host/v1.7.0

🚢 Docker Image:

Don't miss a new optimism release

NewReleases is sending notifications on new releases.