Releases: paradigmxyz/reth
Reth v0.1.0-alpha.5
Summary
- Critical: Fixed a bug where intermediate storage trie hashes for destroyed accounts were not removed (#4108 & #4126). Added a recovery script for synced nodes (#4109 & #4119).
Important
It is recommended that users run reth recover storage-tries
(provide --datadir
argument if applicable) after installing this release to prevent this bug from occurring in the future.
- Fixed future timestamp check post-merge (#3884).
- Fixed pending transaction ordering (#3955).
- Fixed header validation in block download during live sync (#4034).
- Fixed a bug where best transaction would be removed from the pending subpool when it's full (#4100).
- Started working on upcoming Cancun hardfork (#3807, #3906, #3911, #3928, #3931, #3933, #3940, #3943, #3953, #3972, #4010, #4074, #4084, #4105).
- Improved transaction pool ergonomics (#3967, #4053, #4101) and added support for private transactions (#3977, #4059, #4050).
- Active full (pruned) node work nearing completion (#3728, #3733, #3810, #3892, #3912, #4000, #4006, #4043, #4048, #4061, #4063).
- Various RPC fixes, features, and improvements, tracing in particular (#3852, #3878, #3908, #3914, #3921, #3923, #3997, #4046, #4070, #4076, #4077).
- External contributions for Otterscan support (#3778, #3861, #3886, #4007).
- Improved ergonomics of CLI usage as external dependency, made it extendable (#3983, #4022, #4087).
- Performance (#3950, #4037, #4039, #4062, #4096).
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
- fix(trie): include destroyed accounts in account prefix set (#4126)
- release: 0.1.0-alpha.5 (#4111)
- feat(cli): full storage trie recovery (#4119)
- Revert "feat: add
TransactionSigned::recover_signers
" (#4115) - feat(bin): temporarily disable full node (#4112)
- fix: bad recursion in logs (#4113)
- feat: add
TransactionSigned::recover_signers
(#4098) - feat: do not propagate full 4844 transactions (#4105)
- chore: update cargo.lock (#4110)
- chore: unused deps sanity check (#4106)
- feat(cli): storage tries recovery (#4109)
- fix(trie): dangling storage hashes (#4108)
- fix(txpool): emit events on discarding worst txs (#4101)
- fix(txpool): pending worst transaction (#4100)
- feat(eip4844): include
TxEip4844
in the primitiveTransaction
enum (#4074) - feat: re-export
c-kzg
types and impl rlp traits (#4084) - fix: record push stack as vec u256 (#4077)
- perf: no longer spawn filter tasks (#4096)
- feat: make base fee computation parameters configurable via chain spec (#3992)
- chore: add with ext function (#4087)
- chore(deps): weekly
cargo update
(#4086) - perf(trie): use available pre-loaded prefixsets (#4062)
- chore: add missing op and idx fields (#4076)
- chore: use remaining (#4082)
- RFC: Add rpc method eth_callMany (#4070)
- chore: make ext fns mut (#4081)
- chore: rename command to NodeCommand and make fields pub (#4080)
- chore: relax network blockreader trait bounds (#4079)
- feat(txpool) feed new pending transactions to BestTxns iterator (#4053)
- chore: explicitly set max allowed connections for auth server (#4067)
- chore: make txpool cargo test compile (#4058)
- chore(engine): downgrade new payload buffering log to debug (#4068)
- feat(engine): set
eth_syncing = true
if pruner is active (#4063) - (feat):add private variant in tx origin (#4059)
- fix(pruner): tx number range with genesis (#4061)
- feat: extend RethCliExt with payload builder (#4022)
- fix: only propagate txs that are allowed to be propagated (#4050)
- feat: populate gas cost for vm instructions (#4046)
- chore: move call op match to fn (#4047)
- fix(engine): poll prune first (#4048)
- fix(engine, pruner): prune poll logic, history indices (#4043)
- docs: rm some tracing todos + docs
- perf: improve ipc poll logic (#4037)
- feat: add erigons debugTraceCallMany (#3878)
- perf: spawn ipc requests (#4039)
- feat: use
DepositContract
onChainSpec
(#4041) - Fix: successful execution of 'reth stage --commit' did not write results to the database (#4027)
- chore: dont penalize on dropped connections (#4031)
- chore: ignore ef blobTx test (#4038)
- feat(prune): don't prune changesets if taking an incremental hashing/trie route (#4025)
- fix: validate headers in full block downloader (#4034)
- chore: make ipcpath arg default (#4036)
- feat(pruner): account and storage history metrics (#4035)
- feat(engine): require
VALID
latest FCU status before pruning (#3954) - feat(pruner): storage history (#4006)
- feat(pruner): account history (#4000)
- feat(pruner): metrics (#4023)
- feat(cli): add max peer args (#4024)
- feat(engine): payload cancun fields (#4010)
- fix(primitives): nothing to prune situations for
PruneModes
(#4021) - test(txpool): listener it tests (#4019)
- fix: record selfdstructs properly (#3921)
- chore(stages): remove unnecessary prune configuration from history index stages (#4018)
- fix(txpool): clone impl for
FullTransactionEvent
(#4020) - feat(pruner): transaction senders (#3912)
- feat(rpc): ots_getBlockDetails and ots_getBlockDetailsByHash (#4007)
- chore: fix
PrefixSetMut
doc comment (#4015) - chore: add subkey docs to
StorageEntry
(#4016) - Update lib.rs (#4017)
- chore: add example how to install additional rpc namespace (#4005)
- Fix preState diffMode logic (#4014)
- fix: track full_transactions propagation when packet size limited (#3993)
- feat(bin):
node --full
flag (#3965) - fix: serde rename revertReason (#4002)
- feat: Add RethCliExt (#3983)
- feat(p2p): Add
GetReceipts
eth handler implementation (#3959) - feat(pruning): prune ChangeSets & History during pipeline (#3728)
- feat: reth db diff (#3917)
- feat: store logs in different folders based on the chain (#3948)
- fix(pipeline): clear
MerkleStage
checkpoints on invalid root (#3973) - fix(tracing): extend Parity tracing VmExecutedOperation (#3997)
- fix: prevent child call out of bounds (#3920)
- ci: add weekly cargo update workflow (#3986)
- chore(deps): make jsonrpsee types a feature (#3999)
- chore(deps): bump itertools (#3998)
- docs: add additional documentation to
TxType
(#3996) - chore: bump jsonrpsee 0.19 (#3989)
- chore: cargo update (#3988)
- ci: deny warnings only in lint jobs (#3982)
- feat: add 4844 header fields and consensus checks (#3972)
- feat(txpool) - add flag for local tx propagation (#3977)
- add defaults to some rpc server cli args (#3969)
- chore(txpool): pooled tx constructor (#3980)
- chore(txpool): export validation constants (#3979)
- WIP: Implement prestateTracer (#3923)
- feat(cli): in-memory merkle debug script (#3895)
- refactor(rpc): simplify the inner definitions of topics & address filters (#3876)
- Add price bump config (#3967)
- chore: update link to contributing/code of conduct in bug report (#3978)
- chore(rpc-types): remove EngineRpcError (#3975)
- fix(txpool): pendind pool reordering (#3955)
- perf(rpc): move frame gen into task (#3950)
- feat(eip4844): add
EIP4844
to theTxType
enum (#3953) - fix(cli): eta div by zero (#3971)
- chore: move some tests to engine crate (#3968)
- bench(txpool): reordering (#3882)
- refactor(transactions): move TxEip1559, TxEip1559 and TxEip4844 to separate files (#3946)
- chore: move some functions to Cli struct (#3961)
- chore: make auth-port default (#3962)
- feat(rpc): perform js inspector on
spawn_with_call_at
async tracing task (#3957) - refactor(storage): historical state lookup (better comments) (#3867)
- feat(doc): Document
JsTracerBuilder
(#3949) - feat: more blobtx functions (#3943)
- feat: add fcu v3 skeleton (#3940)
- feat: add eip4844 tx type id (#3928)
- feat: metric of reorg depth of blockchain tree (#3860)
- Revert "test(ethereum): ignore invalid string sequence in ethereum state tests (#3307)" (#3937)
- test: cover index storage history stage with stage_test_suite_ext tests (#3898)
- docs:
db clear
CLI (#3936) - fix(stages): transaction lookup stage checkpoint calculation (#3909)
- feat: add Hardfork::Cancun (#3933)
- feat: _V3 engine api skeletons (#3931)
- feat(pruner): percentage progress and prune only if key exists (#3932)
- feat(bin):
db clear
(#3934) - feat: use tracing pool for tracing calls (#3914)
- chore: simplify workspace = true usage (#3930)
- rpc server metrics impl (#3913)
- Reexport geth pre_state AccountState, DiffMode and PreStateMode (#3922)
- feat(pruner): transaction lookup (#3892)
- feat(prune): take
PruneMode::Full
into account when validating the config (#3810) - feat: add dial metric to dashboard (#3802)
- fix(rpc): support both input and data fields (#3911)
- chore: use ruint 1.9 and remove patch (#3910)
- feat: add Tracing call pool (#3908)
- feat: add alias for max response size (#3902)
- chore: add execution aborted error (#3901)
- chore: add eip4844 constants (#3906)
- chore(storage): format MDBX flags doc comments (#3905)
- feat: add a
--dev
option (#3866) - feat(docs): add primer on all transaction types (#3897)
- chore(trie): clean up in-mem root (#3894)
- feat: add canonicalization latency metric (#3865)
- feat: report different request errors (#3857)
- feat: sidechain length metric (#3864)
- feat: add eip 4844 blob tx type (#3807)
- chore: improve TestConsensusEngineBuilder ergonomics (#3891)
- chore: refactor header stream (#3880)
- feat(pruner, storage): prune receipts & save checkpoints to database (#3733)
- fix: do not perform future timestamp checks post-merge...
Reth v0.1.0-alpha.4
Summary
This release contains various features and fixes including:
- critical: removal of a downloader heuristic that prevented the node from syncing further (#3783)
jemallocator
is now enabled by default for UNIX systems (#3735)- better observability around transaction pool maintenance (#3715)
- miscellaneous RPC-related fixes
- ongoing work on pruning
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
- chore: bump version .alpha4 (#3808)
- feat: make rpc gas cap configurable (#3458)
- feat:new discovered node record event stream (#3707)
- chore: use best with base fee (#3804)
- fix(stages): update entities metrics on
SyncHeight
event (#3796) - feat: better blocksize heuristics (#3748)
- bug(stages): TxLookup/Sender stages fix range if there is no tx (#3479)
- feat(txpool): add best_with_base_fee (#3737)
- feat: reload dirty accounts if pool drifts (#3732)
- fix: rpc cap block range correctly (#3791)
- fix: concurrent ipc driver impl (#3790)
- feat: txpool block building fallback (#3755)
- feat: trim cmd args in parser (#3789)
- chore(tree): remove revert notification (#3645)
- chore(downloader): simplify bodies task polling (#3788)
- chore: make some session types pub (#3666)
- feat: remove peers after several unsuccessful attempts (#3780)
- fix: remove single body response check (#3783)
- chore: enable jemalloc by default on unix (#3735)
- fix: add unknown block error (#3779)
- adding row for total db size in db stats command (#3777)
- fix: add missing null check (#3766)
- perf: only lookup in db in cache layer (#3773)
- fix(rpc): make trace filter req field hex or decimal (#3772)
- fix(rpc): serialize traces always as vec (#3770)
- chore: add some txs helpers (#3767)
- chore: fix typo in RlpDecodableWrapper derive (#3763)
- fix: return null withdrawals (#3762)
- fix: poll logic when pipeline active (#3761)
- chore: add network example (#3753)
- chore: reorder call action fields (#3758)
- test: ignore another flaky geth test (#3757)
- #3667 Add Dial Success Metric (#3729)
- chore(storage): transactions -> receipts in
receipts_by_block
(#3744) - fix: serialize selfdestruct as suicide (#3736)
- feat: complete vm and statediff tracers (#3529)
- fix(consensus): call
finalize_block
when finalized block changes. (#3731) - fix: perform forkchoice update consistency checks (#3730)
- fix: use engine responses to progress autoseal mining task (#3727)
- feat(bin, engine, prune): spawn pruning task from the engine (#3566)
- fix: register precompiles correctly (#3720)
- fix(provider): update checkpoints only for known stages (#3624)
- fix: use tx gas limit for root trace (#3719)
- docs: add a few more docs to ControlFlow (#3603)
- test: fix engine hive of
Invalid Transition Payload Sync
(#3710) - perf: only update finalized safe if changed (#3725)
- Chore(book): correct the grafana dashboards json path (#3724)
- chore: use
transaction_by_id_no_hash
to avoid hash computation (#3718) - fix: treat bool params as invalid in logs subscription (#3716)
- feat(primitives, storage): save prune checkpoints in database (#3628)
- perf: handle engine API range request in a new task (#3685)
- feat: add performed pool state updates metric (#3714)
- feat: add txpool maintain metrics (#3715)
- docs: how to enable JSON-RPC endpoints for http/ws (#3711)
- fix: transaction calls on the reth-provider should not generate a hash by default (#3675)
- feat(pruning): prune
Receipts
during pipeline (#3585) - fix: check if value is bool (#3708)
- chore(prometheus): add host.docker.internal:9001 scrape target (#3689)
- test:
eth_getProof
without storage proof (#3643) - style: replace next_sync_target Receiver loop with call to
wait_for
(#3618) - chore(deps): bump pprof criterion (#3698)
- chore(deps): bump smolstr hex-literal (#3693)
- test: add payload status error serde tests (#2803)
- feat: add full pending txs to stream (#3649)
- feat: run pipeline if latest finalized is far from pipeline progress (#3662)
- feat(config, primitives): validate Receipts prune part (#3587)
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.1.0-alpha.4-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.4-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.4-x86_64-pc-windows-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.4-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.4-aarch64-apple-darwin.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v0.1.0-alpha.4 | paradigmxyz/reth |
Reth v0.1.0-alpha.3
Summary
This release is a hotfix to alpha.2
with some small patches around node quality of life:
- Fixes Grafana/Metrics during live sync (#3671). We introduced a metrics bug in #3507 which made the Grafana dashboard look like it's spiking up and down all the time.
- Fix
ExecutionPayloadBody
encoding ongetPayloadBodies
endpoints (#3688), - Can now run the node with
--http.api all
(same for WS/IPC) as an alias for turning all the supported JSON-RPC APIs on (#3660). Warning, this will also turn on theadmin
API which is unsafe if the node is exposed in the internet as it allows anyone to add/remove peers from your peerset.
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class | Priority |
---|---|
Payload Builders | Low |
Non-Payload Builders | Low |
See Update Priorities for more information about this table.
All Changes
- release: 0.1.0-alpha.3 (#3691)
- feat: add subpool transaction streams (#3668)
- feat: enforce txpool propagation setting (#3677)
- fix: remove txn header from getPayloadBodies (#3688)
- fix: expose the revm_utils to consumer as needed structs from it (#3686)
- chore: use units on dashboard (#3684)
- feat(stages): trace log for metric event receive (#3670)
- fix(tree): update metrics only on canonical/side chain changes (#3671)
- fix: expose call method so a consumer can use it (#3680)
- add build profile to version info take II (#3669)
- Add propagate field to TransactionValidationOutcome (#3664)
- chore: add a few noop functions to builder (#3659)
- feat: support all alias (#3660)
- pop duplicates entries when returning downloaded blocks in engine (#3644)
- test: tmp ignore another flaky geth test (#3663)
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.1.0-alpha.3-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.3-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.3-x86_64-pc-windows-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.3-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.3-aarch64-apple-darwin.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v0.1.0-alpha.3 | paradigmxyz/reth |
Reth v0.1.0-alpha.2
Summary
This release includes a number of stability improvements and bug fixes. If you currently experience any issues with syncing Reth, we strongly suggest you update your node.
The highlights of this release are:
- Improved stability of the engine API, which improves the connection between Reth and the CL.
- Addressed a number of Out of Memory (OOM) issues, improving stability.
- Fixed issues with the RPC, particularly in the trace_* APIs.
- Added new metrics for the transaction pool, RPC, caches, and other components. Existing metrics were also improved.
- New metrics were added in this release, so it's highly encouraged for operators to update their Grafana dashboards with the latest version.
The RPC now listens on localhost by default, and metrics are served on port 9001 by default, which may require operators to check their current configuration.
Reth is now also available on some package managers. macOS Homebrew and Linuxbrew users can install Reth with:
brew install paradigmxyz/brew/reth
Arch Linux users can install Reth using an AUR helper (like Paru) with:
paru -S reth # Stable
paru -S reth-git # Unstable (git)
Finally, Reth's Windows builds have been fixed.
Added
- More metrics for the blockchain tree, which tracks the latest tip and processes incoming blocks from the CL (#3289, #3314).
- Implementation of eth_getBlockReceipts (#3321).
- New metric: reth_network_pending_pool_imports, tracks the number of transactions about to be imported to the transaction pool (#3344).
- New metrics monitoring the amount of messages exchanged between the networking component and the transaction pool component (#3345).
- Metrics for memory and CPU usage, including allocator statistics if jemallocator is used as the allocator (default except for Windows) (#3435, #3455).
- Metrics for the size of RPC caches (#3499, #3502, #3513).
- Metric for the total amount of transactions in the txpool (#3500).
- The bodies downloader now limits its buffer by a memory usage estimate, replacing downloader_max_buffered_blocks with downloader_max_buffered_blocks_size_bytes in the configuration (#3508).
- Flags to configure the transaction pool from the CLI were added (#3575).
Fixed
- eth_feeHistory now returns the correct block ranges and calculates percentiles correctly (#3288).
- The default transaction ordering in the transaction pool now compares the transaction cost (fee cap * gas limit + tx value) instead of the transaction gas cost (#3389).
- debug_traceTransaction now includes logs in the trace if requested (#3472).
- trace_callMany now executes transactions on top of the correct state. Previously, each transaction would be executed on top of the state of the previous block, where they should have been executed on top of the state of the previous block and any modifications prior transactions have made (#3437).
- The log address is now correct in debug_traceCall (#3481).
- Block rewards are now present in trace_block if requested (#3491).
- Sync metrics are now updated after historical sync (#3507).
- trace_callMany now includes storage diffs (#3549).
- eth_call now respects state overrides (#3589).
Changed
- The RPC now listens to localhost by default (#3299).
- Metrics are now served over port 9001 by default (#3295).
- The Grafana dashboard supports displaying metrics for multiple Reth nodes (#3336).
- Metrics for the invalid header cache have moved from reth_invalid_header_cache* to reth_consensus_engine_beacon_invalid_headers_* (#3468).
- The RPC caches are now configured by length, not size. This change renames some RPC cache flags on the CLI (#3505).
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class | Priority |
---|---|
Payload Builders | High Priority |
Non-Payload Builders | Medium Priority |
See Update Priorities for more information about this table.
All Changes
- release: 0.1.0-alpha.2 (#3657)
- ci: pin ubuntu to 20.04 to avoid glibc errors
- Revert "add build profile to version info (#3652)"
- fix: subpool variant order (#3656)
- chore(txpool): enriched pool transaction event (#3653)
- chore: add missing helper functions and docs (#3646)
- add build profile to version info (#3652)
- chore(prometheus): add
localhost:9001
scrape target (#3606) - fix(txpool): emit replaced events (#3642)
- test: use concrete type for arbitrary strategy (#3632)
- Match statement for handling error messages - reverted and default case (#3640)
- fix: rm bad flatten (#3637)
- fix(docs): fix malformed link (#3635)
- chore: move BeaconConsensusEngineHandle to separate file (#3633)
- fix: put attribute on correct line (#3636)
- fix: rm outdated flatten (#3630)
- fix: populate transaction trace error field (#3627)
- chore: remove network-api test-utils feature (#3622)
- chore(engine): warn on inconsistent pipeline (#3623)
- chore(book): document missing CLI arguments (#3610)
- docs: add homebrew and arch aur (#3620)
- chore: add commit to client version (#3621)
- refactor(stages): use
MetricsListener
for Execution stage gas metric (#3511) - feat: download block ranges (#3416)
- feat: add error field to parity transaction traces (#3611)
- fix: correct types in
libmdbx-rs
for windows (#3608) - docs: note that only wsl2 works (#3609)
- ci: remove broken book workflow (#3613)
- refactor: extract exceeds pipeline threshold (#3605)
- perf(trie): post state cursors (#3588)
- doc: book cli updater (#3576)
- feat: add ethereum-metrics-exporter (#3573)
- perf: only record return value if required (#3040)
- fix: use refunds for root call (#3594)
- docs: add transaction pool example (#3596)
- feat(book): recommend more CL checkpoints (#3601)
- fix(book): change recommended
--authrpc.port
value from 9999 to 8551 (#3599) - chore: change field TransactionTrace order (#3598)
- docs: remove naked link in installation (#3595)
- Revert "feat: add cargo binstall support" (#3602)
- feat: add cargo binstall support (#3578)
- test: add test for state override json (#3586)
- fix: use same stale label for prs (#3593)
- perf: better engine downloads (#3584)
- fix: use DatabaseRef impl when fetching overriden account (#3589)
- perf: put all prefix sets in Rc (#3582)
- refactor: extract on pipeline finished (#3590)
- feat(txpool): all transactions event listener (#3565)
- docs(trie): hashed post state & cursors (#3572)
- docker: don't ignore examples (#3570)
- feat(cli): txpool args (#3575)
- chore(
crates
): deprecatestaged-sync
(#3564) - chore: add stale workflow (#3556)
- feat(book): adding QLC and TLC NVMEs comparison (#3562)
- fix: add missing single block body download validation (#3563)
- docs: update bodies config (#3553)
- docs: update rpc cache flags (#3552)
- docs: minimum docker engine version (#3546)
- fix(rpc): fix parity tracing config (#3549)
- chore: export
TransactionPoolExt
trait (#3548) - feat: add docker compose with docs (#3496)
- feat(bin, storage): configurable MDBX log level (#3524)
- docs: add payload builder example (#3545)
- fix: create a test db with path (#3482)
- chore: run tests with coverage in
Makefile
(#3418) - examples: add examples of using reth-provider and instantiating an RPC on top of the DB (#3533)
- nit: spelling (#3539)
- feat: add NoopTransactionPool impl (#3536)
- perf: join futures in tracing (#3541)
- fix(codec): fix last field compilation check (#3543)
- chore: fix clippy (#3540)
- fix: add block rewards to
trace_block
(#3491) - feat(stages, tree): update sync metrics from blockchain tree (#3507)
- feat: add another distance check (#3501)
- test: improve slow tests (#3487)
- chore: add TaskManager must_use annotation (#3525)
- fix: precompile condition (#3526)
- docs: add additional context to internal tracing error (#3531)
- chore: rustfmt (#3532)
- some docs nits on installation (#3528)
- feat(error): add wrappers for
std::fs
methods to track path for errors (#3367) - fix(book): typo (#3521)
- chore(rpc): split cache into multiple files (#3519)
- chore(download): bodies downloader size limit (#3508)
- chore: rm cached bytes gauge (#3513)
- fix(cli): consistent max block across pipeline and engine (#3510)
- fix(rpc): limit cache by length (#3505)
- chore: docs typo (again)
- chore: docs typo
- docs: add note on hardware + latitude discount code
- chore: fix docs for bodies downloader task (#3506)
- feat(bin, stages): metrics listener (#3483)
- chore(rpc): add cached bytes metric (#3502)
- chore: add total-transactions metric (#3500)
- feat(rpc): cache metrics (#3499)
- feat: make chain canonical if new payload is the missing block for current sync target (#3459)
- chore: bump default max logs (#3498)
- fix: always return logs of single block range query (#3497)
- fix(engine): logs for new payload v2 (#3494)
- feat(txpool): add transaction_event_listener function (#3493)
- chore(deps): move proc-macro and syn to workspace deps (#3492)
- fix: only check timestamped forks after the merge (#2503)
- fix: use correct address for log (#3481)
- refactor: move
mdbx::test-utils
toreth_db::test-utils
and addDatabaseEnvRO
(#3466) - test: disable flakey test (#3486)
- chore: rename invalid header metrics scope (#3468)
- chore: put EthPubSubInner in Arc (#3463)
- chore: replace Option with just vec (#3474)
- fix: set missing record logs (#3472)
- chore: fix update prios link (#3478)
- test: set --authrpc.port to 0 for Geth instance (#3476)
- chore: mirror geth's encoding order for callframe (#3473)
- docs: update call fees docs on fallback (#3471)
- test: run geth blacklist test also serial (#3469)
- ...
Reth v0.1.0-alpha.1
Summary
Read the announcement post for a full overview of Reth's alpha release
Last year we set out to build Reth, a modular, contributor-friendly and blazing fast implementation of the Ethereum protocol, in Rust.
Today, we're excited to announce that Reth is entering its alpha with version 0.1.0 under the permissive Apache/MIT license. We are inviting node operators and users to run nodes and use Reth's crates to build exciting EVM-centric infrastructure.
This release includes:
- A new Ethereum execution layer
- A new SDK for building EVM-centric infrastructure
What's included?
Reth can sync any Ethereum-like network (mainnet, Sepolia, Goerli etc.), up to Shanghai. Reth includes a new performant implementation of the debug_
and trace_
JSON-RPC namespaces.
Reth achieves state of the art archive node performance on the most important areas when evaluating a node:
- Storage: <2TB database size at block 17.4M.
- Syncing Speed: Bootstrapping the chain from genesis to block 17.4M in 50 hours.
- Robustness: Reliably tracks the tip without falling behind under heavy RPC load.
- Querying the chain: State of the art RPC throughput and latency.
Compared Erigon v2.43.0 vs Reth v0.1.0-alpha.1 on Latitude c3.large.x86 on RAID0'd drives.
Reth as a library
Reth is an ecosystem of high-quality abstractions for building EVM infrastructure. You can think of Reth as an SDK, with the node just being the first application.
We provide performant and documented modules and abstractions for complex operations like block building, transaction simulation, mempools, chain indexing, P2P networking, the RPC, and more. All packages are licensed under the Apache/MIT dual-license, for free, permissive use by everyone.
You can imprt Reth's various components as a library by adding the following to your Cargo.toml
(replacing reth-db
with your favorite package):
reth-db = { git = "https://github.com/paradigmxyz/reth" }
See a complete list of our packages here.
We are looking to improve documentation, build examples, and gather feedback for additional use cases for Reth as a library. If you experience pain points, or have other feedback, please open up an issue on our issue tracker.
What's next?
While this is still early days, Reth already shows promising performance characteristics, which we're excited to further improve in the future. We would also like to make our benchmarking methodology more robust and reproducible by third parties.
The core Reth team is going to be focusing on:
- Shipping the Ethereum roadmap, with Cancun & EIP-4844 as our top priority, and contributing to the Core Development process.
- Improving stability of the existing feature set.
- Shipping key node quality of life features, like non-archive sync and snapshots.
We will continue expanding documentation and testing of the codebase, to improve robustness and make integrations easier.
We invite developers and node operators to try out Reth and let us know what they think. Like with Foundry, our culture remains developer-first, devoted to tight feedback loops with a high bar.
We cannot wait to see what you will build with Reth!
All Changes
- Initial release.
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.1.0-alpha.1-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.1-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.1-x86_64-pc-windows-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v0.1.0-alpha.1-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | reth-v0.1.0-alpha.1-aarch64-apple-darwin.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v0.1.0-alpha.1 | paradigmxyz/reth |