Reth v0.2.0-beta.1
🎉 Reth goes out of Alpha and enters Beta 🎉
Summary
Reth v0.2.0-beta.1 marks the beginning of our Beta release cycle. Reth is Cancun-ready, syncs from genesis, keeps up with the tip, performs extremely well under heavy RPC load for both point and range queries, and has improved validator performance.
This release includes:
- Static Files and ETL for better separation of mutable/immutable data and faster initial sync
- Initial sync time reduced by 4-5 hours, getting close to the sub-48h mark
- Access speed to historical data increased by up to 10%-100%
- Disk usage for historical data reduced by up to 10%
- Ability to offload the historical static files to a separate read-only drive and serve it to multiple nodes
- Database schema improvements
- Switch to Roaring Bitmaps encoding for historical access indices resulted in almost 50% disk space reduction (10% of total database size) and improved querying speed
- Nicer database interface (better table names, removal of redundant wrappers)
- Rework of the networking interface has speeded up Reth's responsiveness to I/O and made it more DoS resistant
- Resource leak fixes, such as a memory leak in our Transaction Pool
⚠️ Caution ⚠️
Breaking changes
This release includes breaking changes that are not compatible with the nodes synced on alpha versions. Alpha versions will be released with only critical fixes. All users are recommended to upgrade to the Beta release.
Beta update requires a resync from scratch:
- Stop your Reth node.
- Drop the database: reth db drop.
- Update your Reth binary to the latest v0.2.0-beta.1 version.
- Start the node using the same command you used on alpha versions.
OP-Reth users
Reth Beta is not compatible with Optimism yet. We expect op-reth to work on Beta in the next v0.2.0-beta.2 release. Until that, it's recommended for the op-reth users to stay on the alpha version.
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class | Priority |
---|---|
Payload Builders | High |
Non-Payload Builders | High |
See Update Priorities for more information about this table.
All Changes
- primitives/chain: dev chain support cancun upgrade (#7033)
- feat(rpc): Add 4844 checks to
ethCallBundle
(#7078) - fix: add timeouts to the hive CI (#7092)
- chore: more Vec over BytesMut (#7084)
- fix(storage): backport read-only FS database support (#7091)
- feat(storage): bump mdbx to 0.12.9 (#7090)
- fix(bin, node-core): commit genesis header into static files after db (#7089)
- chore: mount all datadirs in docker-compose.yml (#7088)
- fix(rpc): less clones in logs filter (#7060)
- fix(rpc): cache transaction hash when filtering over receipt logs (#7074)
- chore(deps): weekly
cargo update
(#7080) - chore: inspector stack from evm-inspectors (#7076)
- grafana/overview: add RPC QPS dashboard (#7025)
- fix: remove redundant checking for if peer is banned (#7069)
- Remove tx pool row from reth dashboard (#7029)
- perf: use special geth tracer config setups (#7062)
- bump: revm v7.1.0 (#7064)
- chore: bump max concurrent outbound dials (#7057)
- chore(txpool): update size metrics on every insert & removal of transactions (#7051)
- feat(rpc): add support for
muxTracer
(#7053) - chore: be less strict when slashing trusted peers (#7052)
- bug template use multi-line input for version (#7055)
- chore: fix typos (#7049)
- perf: replace BytesMut with alloy_rlp::encode (#7047)
- feat(trie): parallel storage roots (#6903)
- chore: bump Grafana version in docker compose (#7032)
- chore: make clippy happy (#7045)
- chore: remove repetitive words (#7041)
- fix: revert filter_logs type (#7046)
- chore: mem take topics when converting logs (#7048)
- Revert "chore(github): skip some heavy jobs when PR is not related (#6667)" (#7035)
- decrease default tracing permits (#7010)
- docs: more node-builder docs (#7034)
- test(ef-tests, storage): do not
sync_all
static files in state tests (#6914) - feat(storage): improve current process detection for MDBX HSR (#6917)
- chore: condition export of generate_blob_sidecar on its cfg (#7023)
- Update panel descriptions (#7020)
- release: v0.2.0-beta.1 (#7021)
- chore(github): skip some heavy jobs when PR is not related (#6667)
- chore(deps): bump ethers to 2.0.14, enr to 0.10, unpin discv5 (#6634)
- docs: update static file documentation (#6878)
- Add new mempool panels + existing mempool panels to new dashboard (#7014)
- bugfix: hive build-args (#7013)
- Rename TxType variants to UpperCamelCase (#7012)
- test(stages): fix deadlock with multiple static file writers (#7011)
- fix: setting GH_TOKEN for hive tests (#7009)
- Shorten error message on debug assertion (#6988)
- chore: remove most ethers mentions and code (#6999)
- fix: immediately refill slots (#6997)
- Prioritisation network manager + transactions manager + eth request handler (#6590)
- ci/test: speed up tests (#6987)
- chore: use
IntoIterator
more (#6998) - remove clique related tests (#6996)
- Node tests crate (#6972)
- chore: use cache to determine hardfork (#6989)
- fix(staged-sync): correctly calculate total entries in bodies checkpoint (#6992)
- fix: Canyon timestamp overflow (#6990)
- test(storage): fix flaky read transaction safety (#6995)
- test(storage): make read transaction safety tests faster (#6994)
- chore(node-core): add stage id to eta overflow log (#6991)
- feat(grafana): override Jemalloc chart axis (#6984)
- chore: update cargo deny to handle deprecated config entries (#6980)
- chore: rm more optimism features (#6981)
- feat: add trace opcode gas (#6977)
- feat: support any Inspector for block + tx tracing (#6978)
- chore: rm coverage badge (#6976)
- feat: add engine API metrics graphs (#6963)
- Fix smallvec dependency conflict (#6956)
- feat(node-core): stage progress decimal places (#6974)
- fix(stages): calculate checkpoints from static files (#6973)
- chore(node-core): log errors in debug when ETA fails to calculate (#6971)
- feat: add OP specific txpool (#6902)
- feat(api,rpc): improve engine API abstraction (#6871)
- feat(bin): delete static files from highest to lowest in
drop stage
(#6970) - fix(stages, etl): clear ETL collectors in Headers stage when done (#6964)
- rm deposit from pooledtx (#6941)
- chore(deps): bump actions/setup-go from 3 to 5 (#6968)
- chore(deps): bump actions/deploy-pages from 2 to 4 (#6967)
- chore(deps): bump actions/download-artifact from 3 to 4 (#6966)
- txpool: track failed delete blobs in cleanup (#6952)
- Tx fetcher metrics (#6951)
- restrict max concurrent outbound dials (#6860)
- Comment
TransactionsManager
(#6651) - feat(trie): metrics (#6943)
- chore(ci): run clippy with
--locked
(#6955) - cargo: missing once_cell (#6953)
- chore(deps): bump docker/build-push-action from 4 to 5 (#6950)
- chore(deps): bump docker/setup-buildx-action from 2 to 3 (#6949)
- chore(deps): bump actions/upload-artifact from 3 to 4 (#6948)
- chore(deps): bump peter-evans/create-pull-request from 5 to 6 (#6947)
- chore(deps): bump actions/stale from 8 to 9 (#6946)
- feat: dependabot to keep github actions workflows up to date (#6942)
- feat(storage): log debug commit message only on commit (#6918)
- feat(storage): use
mdbx_txn_reset
to time out transactions (#6924) - fix(tx-fetcher): only remove peer from active_peers when inflight_count <= 0 (#6928)
- Small tx response verification optimisation (#6911)
- Return fetch error on response that fails verification or validation (#6864)
- Add panel for observing network manager future (#6892)
- feat: creating issues when hive fails (#6938)
- chore(deps): weekly
cargo update
(#6939) - chore(task): move blocking pool to
reth-tasks
(#6929) - Filter announcement txns pending import (#6932)
- feat(transaction-pool): remove deposit variant for mocktransaction (#6931)
- fix(db): race condition in Tx cached handles (#6923)
- Add test for tx response verification (#6926)
- Bump Prod-readiness status (#6921)
- Revert "feat(storage): use
mdbx_txn_reset
to time out transactions … (#6919) - feat: raw_tx_by_hash (#6827)
- fix: do not attempt clique header sender recovery on genesis (#6916)
- feat: print a backtrace on SIGSEGV (#6907)
- feat(node-core, storage): static files segment metrics (#6908)
- Remove accidentally merged fields (#6912)
- feat(provider): consistent database view (#6896)
- feat: add activation timestamps (#6865)
- Add grafana panel for maintenance txpool metrics (#6719)
- 0x/rm unused dep (#6899)
- chore: unify decode enveloped fn args (#6904)
- feat: sat math for tx value (#6900)
- bound hashes inflight and pending fetch size (#6877)
- fix: use replacement transaction hash in PoolError (#6898)
- perf: rm redundant collect (#6895)
- Compute min length mempool transactions message by type (#6853)
- feat(storage): use
mdbx_txn_reset
to time out transactions (#6850) - fix: use HashSet for transactions_by_peers (#6893)
- feat: integrate builder (#6611)
- fix: handle both compressed and uncompressed disconnect reason decoding (#6862)
- chore: remove unused dependencies to speed up building time (#6882)
- chore: remove
cargo-udeps
-related workflow and metadata (#6889) - chore: downgrade discv4 debug! to trace! (#6879)
- fix(ci): header check in integration/sync (#6880)
- chore(cli): fix clap deprecated warnings (#6872)
- Breaking changes (#5191)
- feat(storage, libmdbx): same code style in build.rs (#6867)
- Revm example (#6855)
- node: don't subscribe to consensus health events for dev node (#6868)
- Remove unconstrained generic in
ProviderFactory::new_with_database_path
(#6869) - consensus/auto-seal: simiply the complete_header for op or non-op (#6870)
- Performance metrics for
NetworkManager
future (#6746) - chore(net): use smallvec only if debug_assertions configed (#6866)
- Add panels for observing tx manager future (#6814)
- Downgrade all logs in validation to trace (#6863)
- feat: assertoor integration in CI (#6833)
- fix: rm Signature optimism cfg (#6858)
- chore: add commentes clarifying evm trait (#6857)
- remove proptest specific encoding logic (#6503)
- chore(trie): thread safe trie cursor (#6854)
- feat: Implement eth68 announcement metrics, track entries by TxType (#6786)
- chore: add cancun timestamp to hardfork (#6847)
- chore(node-builder): make network component unpin (#6849)
- chore(trie): safe to share prefixset (#6846)
- fix: get MAX_NODES_PER_BUCKET when respond closest (#6842)
- chore: reuse raw transaction by hash for debug_getRawTransaction (#6845)
- perf: use cached encoded len for limit check (#6838)
- chore: add required bench feature (#6841)
- Ensure consistency between aborted set and reused ptrs (#6844)
- Db exclusive mode (#6755)
- fix(storage): add active txn before sending result (#6840)
- chore: make clippy happy (#6837)
Binaries
See pre-built binaries documentation.
The binaries are signed with the PGP key: A3AE 097C 8909 3A12 4049 DF1F 5391 A3C4 1005 30B4
System | Architecture | Binary | PGP Signature |
---|---|---|---|
x86_64 | reth-v0.2.0-beta.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | reth-v0.2.0-beta.1-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.2.0-beta.1-x86_64-pc-windows-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.2.0-beta.1-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | reth-v0.2.0-beta.1-aarch64-apple-darwin.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | paradigmxyz/reth |