go-ethereum/eth
Daniel Liu 3a505d50b0
fix(eth): initialize engine with finalized chain config, fix #2138 (#2180)
Reorder initialization in eth.New so the effective chain config is resolved and persisted via core.SetupGenesisBlock before creating the consensus engine.

Background:
- On first sync from genesis, LoadChainConfig could return a stored/incomplete config (notably with XDPoS.V2 unset in legacy testnet setups).
- Creating XDPoS before finalizing genesis config could trigger mainnet V2 fallback and log/behavior mismatches around SwitchBlock.

What changed:
- Replace early LoadChainConfig usage with SetupGenesisBlock in eth.New.
- Keep ConfigCompatError semantics consistent with core/blockchain initialization: fail only on non-compat errors.
- Initialize consensus engine after finalized chainConfig is available.

Result:
- Consensus engine now starts with finalized network config on first boot.
- Avoids incorrect V2 fallback parameters (e.g. wrong SwitchBlock) during initial testnet sync.

Tests:
- Added regression tests in eth/backend_test.go to cover legacy missing-V2 repair and SetupGenesisBlock idempotency.
2026-03-17 13:21:17 +05:30
..
bft all: fix goimports (#1560) 2025-09-24 07:51:10 +08:00
downloader docs(core,eth): fix typos #29024 #29036 (#2161) 2026-03-17 11:15:29 +05:30
ethconfig refactor(miner): polish miner configuration #19480 (#2135) 2026-03-10 18:51:36 +05:30
fetcher refactor(all): cleanup the APIs for initializing genesis #25473 #26747 (#2017) 2026-02-07 00:18:39 +05:30
filters refactor(all): move genesis initialization to blockchain #25523 (#2018) 2026-02-10 16:56:34 +05:30
gasestimator refactor(all): rework EVM constructor #30745 (#2065) 2026-02-17 14:35:18 +05:30
gasprice refactor(all): move genesis initialization to blockchain #25523 (#2018) 2026-02-10 16:56:34 +05:30
hooks fix(consensus): fix config object not reference to same one and concurrency issues and refactor access pattern (#2146) 2026-03-12 12:12:49 -07:00
tracers fix(eth): add index to callTracer log #33629 (#2044) 2026-02-28 17:01:13 +04:00
util all: replace Div/Mul with Rsh/Lsh if possible #29911 (#1966) 2026-01-29 11:31:58 +05:30
api.go refactor(eth): remove duplicated chain config source #19344 (#2177) 2026-03-17 12:02:42 +05:30
api_admin.go eth: split api.go into namespace based files #27263 (#1601) 2025-10-30 21:27:14 +05:30
api_backend.go refactor(core/txpool): remove locals-tracking from pools #30559 (#2176) 2026-03-17 12:24:20 +05:30
api_debug.go refactor(eth): remove duplicated chain config source #19344 (#2177) 2026-03-17 12:02:42 +05:30
api_debug_test.go perf: improve state reader with error handling and committed flag #27428 (#1166) 2026-02-03 20:55:53 +05:30
api_miner.go docs(core,eth): fix typos #29024 #29036 (#2161) 2026-03-17 11:15:29 +05:30
backend.go fix(eth): initialize engine with finalized chain config, fix #2138 (#2180) 2026-03-17 13:21:17 +05:30
backend_test.go fix(eth): initialize engine with finalized chain config, fix #2138 (#2180) 2026-03-17 13:21:17 +05:30
bloombits.go core, eth, params: make indexer configurable (#17188) 2025-03-10 15:41:53 +08:00
handler.go refactor(core/txpool): remove locals-tracking from pools #30559 (#2176) 2026-03-17 12:24:20 +05:30
handler_test.go refactor(all): move genesis initialization to blockchain #25523 (#2018) 2026-02-10 16:56:34 +05:30
helper_test.go refactor(core/txpool): remove locals-tracking from pools #30559 (#2176) 2026-03-17 12:24:20 +05:30
metrics.go metrics, cmd/XDC: change init-process of metrics (#30814) 2024-12-13 14:00:14 +08:00
peer.go all: use github.com/deckarep/golang-set/v2 (generic set) (#26159) 2025-01-24 16:54:11 +08:00
protocol.go refactor(core/txpool): remove locals-tracking from pools #30559 (#2176) 2026-03-17 12:24:20 +05:30
protocol_test.go refactor(core/txpool): remove locals-tracking from pools #30559 (#2176) 2026-03-17 12:24:20 +05:30
state_accessor.go refactor(core): remove unnecessary parameters #30776 (#2068) 2026-02-20 13:51:30 +05:30
sync.go refactor(txpool,eth,miner): use pending filter struct #29026 (#2160) 2026-03-11 08:58:07 +05:30
sync_test.go all: change chain head markers from block to header #26777 (#1846) 2025-12-16 07:36:51 +04:00