Files
evm/plugin
zeekayandHanzo Dev cce6217b68 feat(evm): opt-in sub-second block cadence + fail-closed parallel backend selection
TASK 1 — sub-second block rate. TargetBlockRate is uint64 SECONDS and header.Time is Unix seconds;
the sole cadence chokepoint was vm.go minNextBuildTime = time.Unix(header.Time+TargetBlockRate, 0)
(whole-second). New opt-in config MinBlockBuildInterval (JSON min-block-build-interval, default 0 =
disabled) decouples ONLY the block-BUILD cadence from the (unchanged, second-granular) fee window:
when set, minNextBuildTime/nextBuildTime pace off sub-second wall-clock. header.Time stays Unix
seconds (a consensus-critical geth field); two sub-second blocks may share a second-granular
header.Time (EVM-spec-legal, non-decreasing). Unset ⇒ mainnet BYTE-IDENTICAL. The proposervm above
supplies sub-second ordering via UnixMilli (node v1.36.19).

TASK 2 — parallel EVM backend fail-closed. The per-tx cevm/revm executors returned (nil,nil) stubs
and the old guard SILENTLY fell through to the Go EVM — an operator selecting revm/cevm unknowingly
ran geth. New CheckTxResult errors the block instead of silently degrading; SetBackend rejects
unregistered backends; RegisterExecutor documents the consensus-safety invariant (an executor MUST
commit to the canonical StateDB — the Go BlockSTMExecutor does not, so it stays unregistered → no
fork). revm/cevm remain build-tag-gated stubs; NONE is or can silently become the default execution
path (the parallel==serial determinism gate is unmet). Go serial EVM stays default.

Cryptographer-reviewed (adversarial): SAFE TO PUBLISH — default-unset = mainnet byte-identical and
no-silent-nondeterministic-execution both verified from code; fee math under same-second blocks has
no base-fee collapse, no consensus split, no overflow. One MEDIUM (evm_setBackend stub-halt) applies
ONLY to -tags revm/cevm GPU-accel builds (inert for the mainnet pure-Go image) — fast-follow: don't
register non-executable stubs. Tests green (pacing, fail-closed selection, config).

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-16 11:25:10 -07:00
..
2026-05-20 16:24:51 -07:00
2026-05-20 16:24:51 -07:00