rpcChainVM protocol unchanged (42) — node compatibility preserved. Pairs with
the genesis-injection fix (0bd9927a2) for evm module tag v1.104.1.
Co-authored-by: Hanzo Dev <[email protected]>
On lux-mainnet 2026-06-02 every newly-created L2 EVM chain (hanzo, zoo,
spc, pars) panicked at chain create with:
panic in eth.New: unable to commit genesis block to statedb:
triedb parent [0x56e81f17171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421] layer missing
Root cause: the operator does not specify state-scheme in chain config, so
vm.ethConfig.StateScheme = "" enters eth.New. backend.go then calls
customrawdb.ParseStateSchemeExt("", chainDb) which delegates to
geth/rawdb.ParseStateScheme — upstream returns PathScheme as the implicit
default for any database with no stored scheme (every fresh L2). That
silently re-enables path mode even though vm.go's preflight at the top
of Initialize hard-refuses it. Genesis commit then runs through pathdb's
Update with parentRoot=EmptyRootHash and dies the moment the layer tree
is consulted.
Fix: extract the scheme normalisation into resolveStateScheme() and lock
the empty-string default to HashScheme here, before backend.go can inherit
geth's path-by-default. Path explicit is still refused as before, so this
is purely an operator-default fix.
Adds:
- plugin/evm/vm_statescheme_test.go: TestResolveStateScheme covering all
four input cases (empty→hash, hash passthrough, path refused, custom
passthrough).
- core/genesis_pathdb_test.go: TestGenesisCommit_PathDB_{FreshDB,
SetupGenesisBlock_FreshDB} document the upstream pathdb genesis-commit
invariant on a fresh in-memory DB so future drift here is caught
immediately.
Also bumps compatibility.json to register v0.18.4-v0.18.18 with the
existing RPC chain VM protocol (42); restores TestCompatibility (which
was failing on main since v0.18.4 because the table was never updated).
Version: v0.18.17 -> v0.18.18.
When tests use SnapshotNoBuild: true with SnapshotLimit > 0, snapshot
layers are initialized but not built for new blocks. Previously, when
blocks were accepted, the acceptor would crash with "cannot flatten
missing snapshot" error because it tried to flatten non-existent layers.
This fix adds:
- HasBlockLayer(blockHash) method to snapshot.Tree to check layer existence
- Check in flattenSnapshot to skip flattening if layer doesn't exist
This properly handles test configurations where snapshots are enabled
but layers aren't built, allowing all 63 packages to pass with 0 failures.
* bump avago to v1.12.0
* close database on shutdown
* update release notes
* rename verdb
* close only if standalone db
* bump avago branch version
* bump avago
* bump versions
---------
Signed-off-by: Ceyhun Onur <[email protected]>
* add mocks for precompile tests
* Update compatibility
* Bump AvalancheGo dep to v1.10.9
* Bump ANR dep to be compatible with ago v1.10.9
* revert ConfigurationBlockContext changes
* Bump avalanchego to v1.10.0-fuji-rc.2
* Add comptibility version
* Bump avalanchego dep to v1.10.0 and update version to v0.5.0
* Fix interface changes from avalanchego
* Update compatibility in README
* start v0.4.12 release cycle
* add setup action to lint ci for proper go version
* Bump version in plugin/evm/version.go
* Remove go version pin
* Revert "Remove go version pin"
This reverts commit e651bebbdcb51afab1291374ff5c20c4a14f20c5.
* bump golangci-lint-acion to @v3
* bump golangci lint
* try 1.48
* golangci-lint v1.51 and goimports leveldb file
* migrate linting changes from coreth
* goimports and fix diagram comments
* Fix bad goimports changes
---------
Co-authored-by: Darioush Jalali <[email protected]>
* Start coreth migration
* Bump version to v0.4.11 and avalanchego dep
* goimports core/blockchain.go
* Update compatibility.json
* Update compatibility in README
* Bump avalanchego dep to v1.9.10
* Bump avalanchego to v1.9.5-rc.0
* go mod tidy simulator
* Bump avalanchego v1.9.5-rc.1
* Bump avalanchego
* bump avalanchego and bump sevm version
* go mod tidy simulator
* Add rpcchainvm protocol version to compatibility.json