You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ChangeLog: reformat version headers and update 3.5.0 release notes (erigontech#22044)
Changelog-only (no code touched; `make lint` N/A).
**Unified release-header format (all versions).** Every release header
is now `# Erigon vX.Y.Z — Codename — Date` (em-dash separators),
replacing `## [X.Y.Z] "Codename" – Date`. Removes the redundant `#
Changelog` title and the "Keep a Changelog" footer; 3.3.0 gets its
previously-missing "Rocky Romp" codename.
**3.5.0 finalized.**
- Release date **2026-06-26**.
- Adds the EL builder-window fix (erigontech#21990) under *Changed → Caplin
(Consensus Layer)*.
- Prune breaking change split into separate `--prune.mode=full` and
`--prune.mode=blocks` subsections; the revert instruction points to
`--prune.distance.blocks=18446744073709551615` (the keep-post-merge
sentinel).
- `debug_trace*` migration uses self-contained inline JSON; EIP-7843 is
described as the `SLOTNUM` opcode; plus minor wording/consistency fixes.
**3.6.0 stub.** Codename **Upstream Underbelly**, date TBD.
Follow-up: erigontech#22055 (human-readable alias for the prune-distance
sentinel).
Copy file name to clipboardExpand all lines: ChangeLog.md
+39-54Lines changed: 39 additions & 54 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,4 @@
1
-
# Changelog
2
-
3
-
## [3.6.0]
1
+
# Erigon v3.6.0 — Upstream Underbelly — TBD
4
2
5
3
### Breaking Changes
6
4
@@ -20,14 +18,14 @@ Aligns Erigon with the `eth_simulateV1` error code specification ([NethermindEth
20
18
21
19
---
22
20
23
-
## [3.5.0] "Tidal Tails" – TBD
21
+
#Erigon v3.5.0 — Tidal Tails — 2026-06-26
24
22
25
23
Erigon 3.5.0 is a major release headlined by **parallel block execution becoming the default** and **initial support for Ethereum's upcoming Glamsterdam hardfork**. It is a drop-in upgrade for 3.4.x users — no re-sync required; existing datadirs upgrade their prune configuration automatically (see Breaking Changes).
26
24
27
25
### Key Features
28
26
29
-
-**Parallel block execution, on by default.** Erigon now executes EVM transactions across multiple cores by default, using the Block-STM (software transactional memory) design pioneered by Aptos: transactions run optimistically in parallel and are re-validated against a multi-version state, re-executing only on conflict (#21591 by @mh0lt, closes #17630). Revert to the serial path with `EXEC3_PARALLEL=false` or `--exec.serial`.
30
-
-**Glamsterdam devnet support.** Initial implementation of Ethereum's next hardfork: Block-Level Access Lists (EIP-7928), enshrined Proposer-Builder Separation / "GLOAS" (EIP-7732) in Caplin, gas repricings (EIP-8037, EIP-7976, EIP-7981), larger contracts (EIP-7954), transfer logs (EIP-7708), and the `eth/71` Block Access List wire protocol (EIP-8159). **Devnet/testing only — not scheduled on mainnet or any public testnet.**
27
+
-**Parallel block execution, on by default.** Erigon now executes EVM transactions across multiple cores by default, using the Block-STM (software transactional memory) design pioneered by Aptos: transactions run optimistically in parallel and are re-validated against a multi-version state, re-executing only on conflict (#21591 by @mh0lt, closes #17630). Revert to serial with `EXEC3_PARALLEL=false` or `--exec.serial`.
28
+
-**Glamsterdam devnet support.** Initial implementation of Ethereum's next hardfork: Block-Level Access Lists (EIP-7928), enshrined Proposer-Builder Separation / "Gloas" (EIP-7732) in Caplin, gas repricings (EIP-8037, EIP-7976, EIP-7981), larger contracts (EIP-7954), transfer logs (EIP-7708), and the `eth/71` Block Access List wire protocol (EIP-8159). **Devnet/testing only — not scheduled on mainnet or any public testnet.**
31
29
-**`debug_executionWitness`.** Stateless execution-witness generation (EIP-7928/8025) with reth-compatible output, for zkEVM and stateless clients (#20205 by @antonis19, #21629 by @awskii).
32
30
-**More aggressive history pruning by default.**`--prune.mode=full` now follows the EIP-8252 reorg-retention window (~36 days / 262,144 blocks) — see Breaking Changes.
33
31
-**GraphQL API revival.** Broad resolver coverage restored — queries, logs, `call`, `sendRawTransaction`, `estimateGas`, `gasPrice`, storage, and EIP-4844 fields.
@@ -36,7 +34,7 @@ Erigon 3.5.0 is a major release headlined by **parallel block execution becoming
Full mode now retains state and block data for the last `262,144` blocks (~36.4 days), matching [EIP-8252](https://github.com/ethereum/EIPs/pull/11601)'s `REORG_RETENTION_WINDOW`— the inactivity-leak-bounded non-finality window across which an EL must be able to reconstruct state to handle any reorg without external sync. Previously full mode pruned only pre-merge block data ([EIP-4444](https://eips.ethereum.org/EIPS/eip-4444) history-expiry) and kept the last 100,000 blocks of state history.
37
+
Full mode now retains state and block data for the last `262,144` blocks (~36.4 days), matching [EIP-8252](https://github.com/ethereum/EIPs/pull/11601)'s `REORG_RETENTION_WINDOW`([#21342](https://github.com/erigontech/erigon/pull/21342)). Previously full mode pruned only pre-merge block data ([EIP-4444](https://eips.ethereum.org/EIPS/eip-4444) history-expiry) and kept the last 100,000 blocks of state history.
40
38
41
39
**What changed:**
42
40
@@ -45,17 +43,21 @@ Full mode now retains state and block data for the last `262,144` blocks (~36.4
45
43
| State history retention | last 100,000 blocks | last 262,144 blocks |
46
44
| Block data retention | pre-merge pruned, all post-merge kept (EIP-4444) | last 262,144 blocks |
47
45
48
-
`--prune.mode=blocks` keeps the same shape (all block data retained) but its `History` retention also bumps from 100,000 to 262,144 blocks. `--prune.mode=minimal` is unchanged — both `Blocks` and `History` retain the 100,000-block window, deliberately sub-EIP-8252 for disk-constrained operators. See [#21342](https://github.com/erigontech/erigon/pull/21342) for details.
46
+
**Migration:** existing datadirs upgrade automatically and silently. To keep the old "retain all post-merge block data" behavior, set `--prune.distance.blocks=18446744073709551615`.
47
+
48
+
Note: physical deletion of frozen snapshot files is not implemented yet (see [#21306](https://github.com/erigontech/erigon/issues/21306)), so existing on-disk historical blocks persist for now, though the new cutoff is already recorded at the config level.
49
49
50
-
**Migration:** existing datadirs upgrade automatically. The prune-config guard now accepts finite distance changes on `History`/`Blocks` in either direction, plus either-direction transitions between a finite Distance and the `KeepPostMergeBlocksPruneMode` chain-history-expiry sentinel on `Blocks` (so the upgrade is silent, and operators can revert with `--prune.distance.blocks=18446744073709551615` even after the auto-upgrade has rewritten the persisted value). Operators who want to keep the old "retain all post-merge block data" behavior can switch to `--prune.mode=blocks` or pass the override flag.
50
+
_In practice, this means only freshly synced `full` nodes will have a reduced disk footprint._
51
51
52
-
Note: physical deletion of frozen `.seg` files is gated by [#21306](https://github.com/erigontech/erigon/issues/21306); existing on-disk segments persist until that lands. The config-level transition is still recorded so the new cutoff takes effect once the deletion path exists.
52
+
#### `--prune.mode=blocks`: state history retention bumped to 262,144 blocks
53
+
54
+
`--prune.mode=blocks` keeps the same shape as before (all block data retained), but its state history retention also bumps from 100,000 to 262,144 blocks. `--prune.mode=minimal` is unchanged — both block and state history retain the 100,000-block window, deliberately sub-EIP-8252 for disk-constrained operators. See [#21342](https://github.com/erigontech/erigon/pull/21342) for details.
53
55
54
56
---
55
57
56
58
#### Single p2p listener: `--p2p.allowed-ports` removed, all eth versions multiplex on `--port`
57
59
58
-
Erigon now opens a single TCP listener on `--port` (default 30303) carrying every configured eth protocol version, instead of one listener per protocol on 30303/30304/30305. This fixes a discovery-DHT race that left inbound peers stuck at a fraction of `--maxpeers` for multi-protocol deployments — per-protocol Servers each signed an ENR under the same Node ID, and only the highest-`seq`one survived in the DHT, so peers dialed the wrong listener (#21335).
60
+
Erigon now opens a single TCP listener on `--port` (default 30303) carrying every configured eth protocol version, instead of one listener per protocol on 30303/30304/30305. This fixes a discovery-DHT race that left inbound peers stuck at a fraction of `--maxpeers` for multi-protocol deployments: per-protocol ENRs collided under one Node ID, so only one survived in the DHT and peers dialed the wrong listener (#21335).
59
61
60
62
**What changed:**
61
63
@@ -89,25 +91,12 @@ Aligns Erigon with the execution-apis specification ([ethereum/execution-apis#76
| Return data in trace |`disableReturnData` (default: included) |`enableReturnData` (default: excluded) |
91
93
92
-
The change is **twofold**:
93
-
1. The JSON key is renamed (`disable*` → `enable*`).
94
-
2. The default value is inverted: previously memory and return data were **included** by default (opt-out model); now they are **excluded** by default (opt-in model), matching the spec and Geth.
95
-
96
-
**Migration:**
97
-
98
-
```jsonc
99
-
// Before — disable memory explicitly
100
-
{ "disableMemory":true }
94
+
Both the key and its default changed: `disable*` → `enable*`, and memory and return data are now **excluded** unless explicitly enabled — matching the spec and Geth.
101
95
102
-
// After — enable memory explicitly
103
-
{ "enableMemory":true }
96
+
**Migration:** memory and return data are now excluded by default. To include them, add the new opt-in key (omit it to keep the default):
104
97
105
-
// Before — memory included by default (no flag needed)
@@ -130,10 +119,10 @@ The optional Silkworm C++ execution-backend integration and its `--silkworm.*` f
130
119
3.5.0 adds an initial implementation of Ethereum's next hardfork — **Glamsterdam** (consensus-layer "Gloas" + execution-layer "Amsterdam") — for devnet testing and validation. **It is not scheduled on mainnet or any public testnet**, and these code paths are inert on production networks until an activation time is configured.
131
120
132
121
-**EIP-7928 — Block-Level Access Lists (BAL):** records every account and storage slot a block touches, enabling deterministic parallel validation. Full builder, validator, and strict-validation support (#19627, #19656, #20602, #20776), plus the `eth_getBlockAccessList` RPC method (#19929) — by @mh0lt, @yperbasis, @Sahil-4555
133
-
-**EIP-7732 — Enshrined Proposer-Builder Separation (ePBS / "GLOAS"):** implemented in Caplin — execution-payload envelope, PTC, and builder payments (#18956) — with follow-up audit and fork-choice fixes (#21248, #21228) — by @domiwei
122
+
-**EIP-7732 — Enshrined Proposer-Builder Separation (ePBS / "Gloas"):** implemented in Caplin — execution-payload envelope, PTC, and builder payments (#18956) — with follow-up audit and fork-choice fixes (#21248, #21228) — by @domiwei
134
123
-**Gas repricings:** EIP-8037 State Creation Gas Cost Increase (#19596), EIP-7976 calldata floor cost (#20613), EIP-7981 access-list cost (#20671) — by @taratorio
135
124
-**EIP-7954 — Increase Maximum Contract Size** (#19624) — by @yperbasis
136
-
-**EIP-7843 — slot-number system contract**, wired into Caplin block production and `engine_forkchoiceUpdatedV4` (#20175) — by @yperbasis
125
+
-**EIP-7843 — slot-number opcode (`SLOTNUM`)**, wired into Caplin block production and `engine_forkchoiceUpdatedV4` (#20175) — by @yperbasis
137
126
-**Networking:**`eth/71` Block Access List exchange (EIP-8159, #20793, #20794, #20795) — by @mh0lt
138
127
139
128
### Added
@@ -149,7 +138,6 @@ The optional Silkworm C++ execution-backend integration and its `--silkworm.*` f
149
138
150
139
#### CLI & Operations
151
140
152
-
-`--snap.p2p-manifest` (experimental, opt-in): decentralized snapshot distribution over P2P — peers advertise their `chain.toml` manifest via ENR, instead of the centralized `preverified.toml` (#20526, #20615) — by @mh0lt
153
141
-`--exec.no-prune` (disable all DB pruning), `--exec.serial` (force single-threaded execution), and `--exec.*` executor-tuning flags (#20915, #20853, #20797) — by @mh0lt
154
142
-`seg du` (snapshot disk-usage analysis, #20104) and `seg rm-blocks` (remove latest block snapshots, #20554) — by @awskii, @sudeepdino008
155
143
@@ -178,7 +166,8 @@ The optional Silkworm C++ execution-backend integration and its `--silkworm.*` f
178
166
#### Caplin (Consensus Layer)
179
167
180
168
- Unified Engine API client for standalone mode (#20035) — by @mh0lt
181
-
- Fork-choice and ENR-stability fixes — recovery from a post-GLOAS fork-choice stall and a persistent node key for stable ENR across restarts (#21228, #21276) — by @domiwei
169
+
- Fork-choice and ENR-stability fixes — recovery from a post-Gloas fork-choice stall and a persistent node key for stable ENR across restarts (#21228, #21276) — by @domiwei
170
+
- Block production: give the EL builder a build window before stopping it, fixing near-empty proposed blocks (~0–2% gas) on otherwise-healthy validators (#21990) — by @lystopad
182
171
183
172
#### Storage & Performance
184
173
@@ -199,7 +188,7 @@ The optional Silkworm C++ execution-backend integration and its `--silkworm.*` f
199
188
200
189
---
201
190
202
-
## [3.4.4] "Splashing Saga" – 2026-06-18
191
+
#Erigon v3.4.4 — Splashing Saga — 2026-06-18
203
192
204
193
v3.4.4 is a bugfix release recommended for all users.
205
194
@@ -212,7 +201,7 @@ v3.4.4 is a bugfix release recommended for all users.
212
201
213
202
---
214
203
215
-
## [3.4.3] "Splashing Saga" – 2026-06-02
204
+
#Erigon v3.4.3 — Splashing Saga — 2026-06-02
216
205
217
206
v3.4.3 is a bugfix release recommended for all users.
218
207
@@ -241,7 +230,7 @@ v3.4.3 is a bugfix release recommended for all users.
241
230
242
231
---
243
232
244
-
## [3.4.2] "Splashing Saga" – 2026-05-22
233
+
#Erigon v3.4.2 — Splashing Saga — 2026-05-22
245
234
246
235
v3.4.2 is a bugfix release recommended for all users.
247
236
@@ -264,7 +253,7 @@ v3.4.2 is a bugfix release recommended for all users.
264
253
265
254
---
266
255
267
-
## [3.4.1] "Splashing Saga" – 2026-05-11
256
+
#Erigon v3.4.1 — Splashing Saga — 2026-05-11
268
257
269
258
**Bugfixes**
270
259
@@ -274,7 +263,7 @@ v3.4.2 is a bugfix release recommended for all users.
274
263
275
264
---
276
265
277
-
## [3.4.0] "Splashing Saga" – 2026-04-28
266
+
#Erigon v3.4.0 — Splashing Saga — 2026-04-28
278
267
279
268
Erigon 3.4.0 is a major update for node operators and validators, focused on stability, performance, and
280
269
efficiency at ChainTip. It is a drop-in upgrade for 3.3.x users — no data migration or re-sync required.
@@ -398,7 +387,7 @@ efficiency at ChainTip. It is a drop-in upgrade for 3.3.x users — no data migr
398
387
399
388
---
400
389
401
-
## [3.3.10] "Rocky Romp" – 2026-03-27
390
+
#Erigon v3.3.10 — Rocky Romp — 2026-03-27
402
391
403
392
This release schedules Fusaka on **Gnosis Chain mainnet** at **Tue 14 April 2026, 12:06:20 UTC** and
404
393
thus is **mandatory for all Gnosis users**. It is also recommended for all users in general.
@@ -417,7 +406,7 @@ thus is **mandatory for all Gnosis users**. It is also recommended for all users
417
406
418
407
---
419
408
420
-
## [3.3.9] "Rocky Romp" – 2026-03-09
409
+
#Erigon v3.3.9 — Rocky Romp — 2026-03-09
421
410
422
411
This release schedules Fusaka on Chiado on **Mon 16 March 2026, 09:33:00 UTC** and thus is mandatory
0 commit comments