Summary
This is the 1.0.0 milestone for morph-reth. It realigns the client onto upstream
Reth, adds first-class support for the centralized-sequencer execution-layer flow,
and lands a wave of Morph-geth RPC-compatibility, audit, and consensus-correctness
fixes hardened against Morph mainnet and Hoodi testnet.
Highlights
- Unfork onto upstream Reth v2.2.0 (#98) — morph-reth now tracks
paradigmxyz/reth v2.2.0directly instead of a hard fork, with retroactive
state-root trust so historical Morph blocks continue to validate. This greatly
reduces the maintenance surface for pulling future upstream Reth releases. - Centralized-sequencer EL support (#124) — adds the V2 Engine API surface,
reorg handling, andnext_l1_msg_indexhardening required to run morph-reth as
the execution layer behind the centralized sequencer. - Morph-geth RPC compatibility (#114, #115, #117) — Morph transaction and
receipt serialization is aligned with morph-geth, and L1-message RPC responses
now emit the expected placeholders (nonce/v/r/s,gasPrice=0x0) so
existing geth-oriented tooling keeps working unchanged. - Transaction-pool admission gates (#120) — the txpool now enforces
Morph-specific admission rules, rejecting transactions that violate Morph
constraints before they enter the pool. - Standalone
morph-statetestrunner (#113) — a dedicated binary for running
Ethereum/Morph state tests, easing conformance and regression testing.
Security & Audit
- MorphTx audit findings + follow-ups (#134, #116) — addressed the issues
raised in the MorphTx audit and subsequent follow-up review. - Dependency advisory fix (#119) — bumped
tarto 0.4.46 to resolve
GHSA-3pv8-6f4r-ffg2.
Correctness Fixes
fix(consensus): future block timestamps are now treated as transient rather
than permanent failures (#133).fix(engine-api): finalized tags are preserved during safe imports (#130).fix(revm): L1 fee fallback encoding is now tx-type exact (#131).fix(node): a zero withdraw-trie root is treated as unspecified (#127).
Operational
- Improved Grafana dashboard signal quality (#110).
- Workspace Rust version lowered to 1.93 for broader toolchain compatibility (#129),
plus assorted CI/dependency bumps.
All Changes
- fix x86 build (#137)
- chore: bump version to 1.0.0 (#135)
- fix: address MorphTx audit findings (#134)
- fix(consensus): mark future timestamps as transient (#133)
- chore(ci): bump actions/checkout from 6 to 7 (#136)
- fix(engine-api): preserve finalized tags during safe imports (#130)
- fix(revm): make L1 fee fallback encoding tx-type exact (#131)
- chore(engine-api): remove per-block debug timing logs (#132)
- fix(node): treat zero withdraw trie root as unspecified (#127)
- chore: lower workspace Rust version to 1.93 (#129)
- chore(ci): bump actions/github-script from 8 to 9 (#126)
- feat: centralized-sequencer EL support (V2 engine API + reorg + next_l1_msg_index hardening) (#124)
- fix(txpool): enforce Morph transaction admission gates (#120)
- chore(deps): bump tar to 0.4.46 to fix GHSA-3pv8-6f4r-ffg2 (#119)
- fix(primitives): emit gasPrice=0x0 placeholder for L1 message RPC (#117)
- chore(ci): bump actions/download-artifact from 4 to 8 (#118)
- fix: address audit follow-ups (#116)
- fix(primitives): emit nonce/v/r/s placeholders for L1 message RPC (#115)
- fix(rpc): align Morph transaction and receipt serialization with morph-geth (#114)
- feat(bin): add standalone morph-statetest runner (#113)
- chore(ci): bump docker/setup-buildx-action from 3 to 4 (#111)
- Improve Grafana dashboard signal quality (#110)
- chore(ci): bump actions/checkout from 4 to 6 (#109)
- feat: unfork reth to paradigmxyz/reth v2.2.0 with retroactive state-root trust (#98)
- chore(ci): bump actions/upload-artifact from 4 to 7 (#108)
Binaries
| System | Architecture | Binary |
|---|---|---|
| x86_64 | morph-reth-1.0.0-x86_64-linux.tar.gz | |
| aarch64 | morph-reth-1.0.0-aarch64-linux.tar.gz | |
| Docker | ghcr.io/morph-l2/morph-reth:v1.0.0 |