Skip to content

Commit 2cd9dc2

Browse files
docs: add v0.4.0 upgrade guide (#220)
* docs: add v0.4.0 upgrade guide * docs: add Storage V2 section to v0.4.0 upgrade guide * docs: consolidate upgrade guides into single v0.4.0 migration doc Split changelog content from migration guide per review feedback. Move new features and bug fixes to CHANGELOG.md, slim the upgrade guide to config-only migration steps. Remove v0.3.0 upgrade guide as v0.4.0 now covers upgrades from all previous versions. * changlog changes --------- Co-authored-by: tac0turtle <marko@baricevic.me>
1 parent 86fba66 commit 2cd9dc2

3 files changed

Lines changed: 143 additions & 230 deletions

File tree

CHANGELOG.md

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
> **Note:** v0.3.0 was never released (only `v0.3.0-beta` shipped). Changes originally staged under v0.3.0 are rolled into v0.4.0 below so the upgrade path is v0.2.x → v0.4.0.
11+
1012
### Added
1113

12-
- `EV_TRACE_LEVEL` env var to control OTLP span export verbosity independently from `RUST_LOG` stdout log level ([#156](https://github.com/evstack/ev-reth/issues/156))
14+
- `ev-deployer` CLI (`bin/ev-deployer`) for generating genesis alloc entries with embedded contract bytecodes ([#167](https://github.com/evstack/ev-reth/pull/167))
1315
- `ev-dev` binary (`bin/ev-dev`): one-command local development chain with pre-funded Hardhat accounts, similar to Anvil or Hardhat Node
1416
- Transaction sponsor service (`bin/sponsor-service`) for signing EvNode transactions on behalf of users via JSON-RPC proxy ([#141](https://github.com/evstack/ev-reth/pull/141))
17+
- Granular tracing instrumentation spans across payload building, transaction validation, and EVM execution
18+
- `EV_TRACE_LEVEL` env var to control OTLP span export verbosity independently from `RUST_LOG` stdout log level ([#156](https://github.com/evstack/ev-reth/issues/156))
19+
- EvNode transaction type (0x76) with atomic batch calls and fee-payer sponsorship ([#103](https://github.com/evstack/ev-reth/pull/103))
20+
- Viem client library (`@evstack/evnode-viem`) for building, signing, and sponsoring EvNode transactions ([#112](https://github.com/evstack/ev-reth/pull/112))
21+
- End-to-end tests for the EvNode client ([#118](https://github.com/evstack/ev-reth/pull/118))
22+
- Tini init process in Docker images for proper signal handling ([#115](https://github.com/evstack/ev-reth/pull/115))
1523

1624
### Changed
1725

26+
- Upgraded Reth from v1.8.4 to v2.0.0 with Osaka/EOF hardfork support, Storage V2, revm 36.0.0, and alloy-evm 0.30.0 ([#106](https://github.com/evstack/ev-reth/pull/106), [#207](https://github.com/evstack/ev-reth/pull/207))
27+
- `reth-primitives` imports migrated to `alloy_consensus` and `reth_ethereum_primitives` (upstream crate removed)
28+
- Txpool fallback (pulling pending transactions when Engine API attributes are empty) restricted to `--dev` mode only
29+
- Migrated build system from Makefile to Justfile
30+
- Disabled default features on several reth crates to unblock SP1 proving work ([#111](https://github.com/evstack/ev-reth/pull/111))
1831
- Removed unused `thiserror` dependency from `ev-precompiles` crate
1932

2033
### Fixed
2134

35+
- Payload builder now uses `decode_2718_exact` instead of `network_decode` for Engine API payloads, fixing silent drops of valid type 0x76 and EIP-1559/EIP-2930 transactions ([#219](https://github.com/evstack/ev-reth/pull/219))
2236
- Payload builder now pulls pending transactions from the txpool in `--dev` mode, fixing `cast send` and other RPC-submitted transactions not being included in blocks
2337
- Txpool now uses sponsor balance for pending/queued ordering in sponsored EvNode transactions, and validates executor balance separately for call value transfers ([#141](https://github.com/evstack/ev-reth/pull/141))
24-
25-
## [0.3.0] - 2026-02-23
26-
27-
### Added
28-
29-
- EvNode transaction type (0x76) with atomic batch calls and fee-payer sponsorship ([#103](https://github.com/evstack/ev-reth/pull/103))
30-
- Viem client library (`@evstack/evnode-viem`) for building, signing, and sponsoring EvNode transactions ([#112](https://github.com/evstack/ev-reth/pull/112))
31-
- End-to-end tests for the EvNode client ([#118](https://github.com/evstack/ev-reth/pull/118))
32-
- Tini init process in Docker images for proper signal handling ([#115](https://github.com/evstack/ev-reth/pull/115))
33-
34-
### Fixed
35-
3638
- Permissioned EVM deploy allowlist validation when gas is explicitly specified ([#122](https://github.com/evstack/ev-reth/pull/122))
37-
38-
### Changed
39-
40-
- Upgraded Reth from v1.8.4 to v1.11.0 with Osaka hardfork and EOF support ([#106](https://github.com/evstack/ev-reth/pull/106))
41-
- Disabled default features on several reth crates to unblock SP1 proving work ([#111](https://github.com/evstack/ev-reth/pull/111))
39+
- Additional test coverage for deploy allowlist edge cases across all transaction types
4240

4341
## [0.2.2] - 2026-01-22
4442

docs/UPGRADE-v0.3.0.md

Lines changed: 0 additions & 212 deletions
This file was deleted.

docs/UPGRADE-v0.4.0.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Upgrade Guide: v0.4.0
2+
3+
This guide covers the configuration changes required to upgrade ev-reth to v0.4.0. For a full list of changes, see the [CHANGELOG](../CHANGELOG.md).
4+
5+
> **Note:** v0.3.0 was never released. Operators running a v0.3.0-beta build should follow "Upgrading from v0.2.x" below.
6+
7+
## Upgrading from v0.2.x
8+
9+
No configuration changes required. Rebuild and deploy the new binary.
10+
11+
**What changes automatically:**
12+
13+
- Reth v2.0.0 engine (same config, new internals)
14+
- New nodes use Storage V2 by default. Existing V1 data directories continue working as-is
15+
- Txpool fallback (pulling pending transactions when Engine API attributes are empty) is now only enabled in `--dev` mode
16+
- EIP-2718 payload decode fix takes effect immediately
17+
18+
**Build system:** If you have scripts referencing `make`, update them to use `just`.
19+
20+
**Storage V2 notes:**
21+
22+
- V1 and V2 are not interchangeable. Once a node starts with V2, it cannot go back
23+
- No automatic migration. Switching to V2 requires a full resync
24+
- V1 is deprecated upstream. Plan your migration before support is removed
25+
- If using MDBX backup scripts (e.g. `mdbx_copy`), V2 nodes also use RocksDB for indices, so backup tooling may need updating
26+
27+
**Custom code:** If you import from `reth-primitives`, update imports to `alloy_consensus` or `reth_ethereum_primitives` (the crate was removed upstream).
28+
29+
### Osaka / EOF hardfork
30+
31+
The Osaka hardfork (EVM Object Format, EOFv1) is available but not activated by default. If your chainspec does not already set `osakaTime`, the chain stays on Cancun rules and no action is required.
32+
33+
To schedule activation, add `osakaTime` to your chainspec `config` section with a future Unix timestamp (use `0` on new testnets to activate from genesis):
34+
35+
```json
36+
{
37+
"config": {
38+
"osakaTime": 1893456000
39+
}
40+
}
41+
```
42+
43+
Osaka introduces EOFv1 contracts and related EIPs. See the [v0.2.0 upgrade guide](UPGRADE-v0.2.0.md) for the original `osakaTime` rollout notes and the [Ethereum EOF meta EIP (EIP-7692)](https://eips.ethereum.org/EIPS/eip-7692) for the full list of included changes.
44+
45+
## Upgrading from v0.1.x
46+
47+
First follow [UPGRADE-v0.2.0.md](UPGRADE-v0.2.0.md) and [UPGRADE-v0.2.2.md](UPGRADE-v0.2.2.md) to reach v0.2.x, then apply "Upgrading from v0.2.x" above. Those guides cover the required `osakaTime`, base fee redirect, native token minting precompile, contract size limit, deploy allowlist, and EIP-1559 parameter chainspec changes.
48+
49+
## Complete Chainspec Reference
50+
51+
All `config.evolve` fields available in v0.4.0:
52+
53+
| Field | Type | Default | Since | Description |
54+
|-------|------|---------|-------|-------------|
55+
| `baseFeeSink` | `address` | -- | v0.2.0 | Receives redirected base fees |
56+
| `baseFeeRedirectActivationHeight` | `u64` | `0` | v0.2.0 | Block height when redirect activates |
57+
| `mintAdmin` | `address` | -- | v0.2.0 | Admin for mint/burn precompile |
58+
| `mintPrecompileActivationHeight` | `u64` | `0` | v0.2.0 | Block height when precompile activates |
59+
| `contractSizeLimit` | `usize` | `24576` | v0.2.0 | Max contract code size in bytes |
60+
| `contractSizeLimitActivationHeight` | `u64` | `0` | v0.2.0 | Block height when custom limit activates |
61+
| `deployAllowlist` | `address[]` | `[]` | v0.2.2 | Addresses allowed to deploy contracts (max 1024) |
62+
| `deployAllowlistActivationHeight` | `u64` | `0` | v0.2.2 | Block height when allowlist activates |
63+
| `baseFeeMaxChangeDenominator` | `u64` | `8` | v0.2.2 | Max base fee change per block |
64+
| `baseFeeElasticityMultiplier` | `u64` | `2` | v0.2.2 | Gas target multiplier |
65+
| `initialBaseFeePerGas` | `u64` | `1000000000` | v0.2.2 | Initial base fee in wei |
66+
67+
Top-level `config` fields:
68+
69+
| Field | Type | Default | Since | Description |
70+
|-------|------|---------|-------|-------------|
71+
| `osakaTime` | `u64` | -- | v0.2.0 | Unix timestamp to activate Osaka/EOF hardfork |
72+
73+
## Complete Chainspec Example
74+
75+
```json
76+
{
77+
"config": {
78+
"chainId": 12345,
79+
"homesteadBlock": 0,
80+
"eip150Block": 0,
81+
"eip155Block": 0,
82+
"eip158Block": 0,
83+
"byzantiumBlock": 0,
84+
"constantinopleBlock": 0,
85+
"petersburgBlock": 0,
86+
"istanbulBlock": 0,
87+
"berlinBlock": 0,
88+
"londonBlock": 0,
89+
"parisBlock": 0,
90+
"shanghaiTime": 0,
91+
"cancunTime": 0,
92+
"osakaTime": 1893456000,
93+
"terminalTotalDifficulty": 0,
94+
"terminalTotalDifficultyPassed": true,
95+
"evolve": {
96+
"baseFeeSink": "0x00000000000000000000000000000000000000fe",
97+
"baseFeeRedirectActivationHeight": 0,
98+
"baseFeeMaxChangeDenominator": 5000,
99+
"baseFeeElasticityMultiplier": 10,
100+
"initialBaseFeePerGas": 100000000000000000,
101+
"mintAdmin": "0x000000000000000000000000000000000000Ad00",
102+
"mintPrecompileActivationHeight": 0,
103+
"contractSizeLimit": 131072,
104+
"contractSizeLimitActivationHeight": 0,
105+
"deployAllowlist": [
106+
"0xYourDeployerAddress"
107+
],
108+
"deployAllowlistActivationHeight": 0
109+
}
110+
},
111+
"difficulty": "0x1",
112+
"gasLimit": "0x2faf080",
113+
"baseFeePerGas": "0x16345785d8a0000",
114+
"alloc": {}
115+
}
116+
```
117+
118+
## Related Documentation
119+
120+
- [EIP-1559 Configuration](eip1559-configuration.md) -- tuning base fee parameters
121+
- [Permissioned EVM Guide](guide/permissioned-evm.md) -- deploy allowlist details
122+
- [Fee System Guide](guide/fee-systems.md) -- base fee redirect and FeeVault
123+
- [ADR 003: Typed Transactions](adr/ADR-0003-typed-transactions-sponsorship.md) -- EvNode 0x76 spec
124+
125+
## Questions?
126+
127+
For issues or questions about the upgrade, please open an issue at <https://github.com/evstack/ev-reth/issues>

0 commit comments

Comments
 (0)