Releases: erigontech/erigon
v3.0.0-alpha2
Key features
alpha2
focuse on initial sync:
- Erigon becomes "Evergreen": it can download latest files even if you not using latest Erigon version
- We starting release files near chain-tip (10K-100K blocks)
Numbers from 128Gb RAM, 16CPU, NVMe machine:
If you have any perf problems on chain-tip - first please rm -rf chaindata
- likely it will help. If not - report us issue.
alpha3
will focus on chain-tip perf and peak RAM usage.
Upgrade from Erigon3-alpha1
amoy
- pleas re-sync. other chains can upgrade without re-sync.
Roadmap
Next release will focus on "chain-tip" performance and peak RAM reduction.
v2.60.5
Improvements:
- Diagnostics: snapshot stage info gathering by @dvovk in #11105
- support of hex-encoded Nonce in
genesis.json
andeth_feeHistory
by @AskAlexSharov in #11264 - PIP-35: enforce 25gwei gas config for all polygon chains for erigon 2 by @manav2401 in #11295
- tracer: add support bailout on evm.create() on e2 by @lupin012 in #11259
- RPC throughput increase (mutex-contention reduce on block files) by @tholcman and @AskAlexSharov in #11155
Bugfixes:
- TxPool: prevent db grow by @AskAlexSharov in #11200
- Fix on logCount param management by @lupin012 in #11258
Full Changelog: v2.60.4...v2.60.5
v3.0.0-alpha1
Erigon3 user guide
RAM requirement is higher: 64gb. We will reduce it in next releases.
Golang 1.21
Almost all RPC methods are implemented - if something doesn't work - just drop it on our head.
Supported networks: all (except Mumbai).
E3 changes from E2:
- Sync from scratch doesn't require re-exec all history. Latest state and it's history are in snapshots - can download.
- ExecutionStage - now including many E2 stages: stage_hash_state, stage_trie, stage_log_index, stage_history_index,
stage_trace_index - E3 can execute 1 historical transaction - without executing it's block - because history/indices have
transaction-granularity, instead of block-granularity. - E3 doesn't store Logs (aka Receipts) - it always re-executing historical txn (but it's cheaper then in E2 - see point
above). Known perf issues: #10747 --sync.loop.block.limit
is enabled by default. (Default:5_000
.
Set--sync.loop.block.limit=10_000 --batchSize=2g
to increase sync speed on good hardware).- datadir/chaindata is small now - to prevent it's grow: we recommend set
--batchSize <= 2G
. And it's fine
torm -rf chaindata
- can symlink/mount latest state to fast drive and history to cheap drive
- Archive Node is default. Full Node:
--prune.mode=full
, Minimal Node (EIP-4444):--prune.mode=minimal
Known Problems of E3:
eth_getLogs
fieldsindex
always 0: #10324
E3 datadir structure
datadir
chaindata # "Recently-updated Latest State" and "Recent History"
snapshots
domain # Latest State: link to fast disk
history # Historical values
idx # InvertedIndices: can search/filtering/union/intersect them - to find historical data. like eth_getLogs or trace_transaction
accessors # Additional (generated) indices of history - have "random-touch" read-pattern. They can serve only `Get` requests (no search/filters).
temp # buffers to sort data >> RAM. sequential-buffered IO - is slow-disk-friendly
# There is 4 domains: account, storage, code, commitment
E3 can store state on fast disk and history on cheap disk
If you can afford store datadir on 1 nvme-raid - great. If can't - it's possible to store history on cheap drive.
# place (or ln -s) `datadir` on slow disk. link some sub-folders to fast disk.
# Example: what need link to fast disk to speedup execution
datadir
chaindata # link to fast disk
snapshots
domain # link to fast disk
history
idx
accessors
temp
# Example: how to speedup history access:
# - go step-by-step - first try store `accessors` on fast disk
# - if speed is not good enough: `idx`
# - if still not enough: `history`
E3 datadir size
# eth-mainnet - archive - April 2024
du -hsc /erigon/*
6G /erigon/caplin
50G /erigon/chaindata
1.8T /erigon/snapshots
1.9T total
du -hsc /erigon/snapshots/*
100G /erigon/snapshots/accessor
240G /erigon/snapshots/domain
260G /erigon/snapshots/history
410G /erigon/snapshots/idx
1.7T /erigon/snapshots
# bor-mainnet - archive - Jun 2024
du -hsc /erigon/*
160M /erigon/bor
50G /erigon/chaindata
3.7T /erigon/snapshots
3.8T total
du -hsc /erigon/snapshots/*
260G /erigon-data/snapshots/accessor
850G /erigon-data/snapshots/domain
650G /erigon-data/snapshots/history
1.4T /erigon-data/snapshots/idx
4.1T /erigon/snapshots
See also: https://github.com/erigontech/erigon?tab=readme-ov-file#erigon3-users-guide
Upgrade from Erigon2
No. Please re-sync.
v2.60.4
Changes:
- PIP-35 for amoy: enforce 25gwei gas config for amoy for erigon 2 by @manav2401 in #11078
Full Changelog: v2.60.3...v2.60.4
v2.60.3
Improvements:
- eth/tracers: add optional includePrecompiles flag to callTracer - default true is preserved by @taratorio in #10986
- turbo/jsonrpc: add optional includePrecompiles flag to trace_* apis by @taratorio in #10979
Bugfixes:
- Changing Caplin Finality Checkpoint API response to match spec by @angusscott in #10944
- Caplin: Added Blob Sidecar PastFinalization Check by @Giulio2002 in #11006
- Less troublesome way of identifying content-type (#10770) by @Giulio2002 in #11018
- Allow to gracefully exit from CL downloading stage (#10887) by @awskii in #11020
- Add zero check in tx.Sender func by @somnathb1 in #10737
- eth/tracers: fix prestate tracer bug with create with value by @taratorio in #10960
- eth/tracers: always pop precompiles stack in callTracer by @taratorio in #11004
- Diagnostics: loglevel by @dvovk in #11015
- Diagnostics: Optimize db write by @dvovk in #11016
Full Changelog: v2.60.2...v2.60.3
v2.60.2
Bugfixes:
- Revert breaking change to eth_estimateGas introduced in v2.60.1 (#10904) as we added a better fix for gas fee calculation in debug calls by @mininny in #10880
- Fix potential p2p shutdown hangup by @mh0lt in #10626
- Downloader: fix staticpeers flag by @dvovk in #10798
- rpc: Fix incorrect txfeecap by @shohamc1 in #10643
Full Changelog: v2.60.1...v2.60.2
v2.60.1
Breaking change:
- 2nd argument blockNrOrHash was removed from eth_estimateGas. Moreover, eth_estimateGas now correctly defaults MaxFeePerGas to block's base fee by @yperbasis in #10499
Improvements:
- Set tracer-observable value of a delegatecall to match parent value by @AskAlexSharov in #10370
Bugfixes:
- Previously eth_callMany and other RPC endpoints could have been wrong because baseFee was overwritten by maxFeePerGas. Fixed by @marshalys in #10456
- Fixed "method handler crashed" for debug_traceCall (Issue #9090) fixed by @marshalys in #10502
- Fix a regression with json marshalling of checkpoints causing root hash to be 0 and triggering unwinds by @taratorio in #10530
- Fix unintended polygon bor miner gas price and txpool price limit sanitization on ethereum by @taratorio in #10420
- Enable DNS p2p discovery on holesky by @wmitsuda in #10460
- p2p/sentry: sentry doesn't start with ErrNoHead (#10454) by @battlmonstr in #10523
- Caplin: Proper "Normalization" of length of ForkVersions to 8 hex characters by @Giulio2002 in #10578
- bor blocks retire: infinity loop fix by @AskAlexSharov in #10596
- txpool: EIP-3860 should only apply to create transactions by @yperbasis in #10609
Full Changelog: v2.60.0...v2.60.1
v2.60.0 The Last of Erigon 2
WARNING
Erigon 3 has been under R&D for a long time and is getting closer to release. We plan this release, v2.60.0, to be the last significant release based on Erigon 2. There might be patch v2.60.x releases for critical issues, but by and large, we intend all future development to be based on Erigon 3. The code of Erigon 3 now lives in branch main
, which is our default branch now. We advise all forks of Erigon to either switch their development to Erigon 3 or use branch release/2.60
if they choose to stay on Erigon 2.
You can read more about Erigon 3 at https://erigon.tech/merging-erigon-3-and-erigon-4-and-possibly-caplin.
Drop support of golang 1.20
Fixes pruning of logs issue introduced in 2.59.x:
For users using prune=hrtc
flag or any prune flags with non-zero prune.r.older
value following must be performed when upgrading from 2.59.x
- Stop the node, upgrade to v2.60.0
- Then,
integration stage_log_index --reset --datadir=<your_datadir> --chain=<chain_name>
- Then restart and let it sync to the tip.
(Optional) Database compaction: Stop the node at chain-tip (after syncing is finished) Then
integration mdbx_to_mdbx --chaindata=<your_datadir>/chaindata --chaindata.to=<your_datadir>/chaindata2 --datadir=<any_random_location_for_temp_files>
mv chaindata chaindataOld
mv chaindata2 chaindata
Then restart. The new chaindata may be up to 1/3 of the size of the old (Bonus!). If all goes well, you can delete chaindataOld
rm -rf chaindataOld
Tip: To do the integration commands with docker image, you can always do
docker run -it -v <your_datadir>:/data --entrypoint sh thorax/erigon:devel
Then the value of datadir for integration and mdbx commands is /data on the docker shell, where you can run the above.
N.B. Also, just a reminder, 2.58 originally synced node cannot see much benefit on upgrading (it was also in the release notes of 2.59) The above suggestion would work when upgrading from 2.59.x
by @somnathb1 in #10019 #9968 #9932 #9733
Caplin:
- Caplin: beacon committee subscription api by @domiwei in #9721
- Caplin: tweaks to make staking more stable. by @Giulio2002 in #10097
- Caplin: Fixed not calling FCU due to faulty blob handling by @Giulio2002 in #9779
- Caplin: process new attesting indicies before block comes in to avoid occasiona Reorg by @Giulio2002 in #10085
Silkworm:
- Fix arm64 Silkworm build (#9299) by @battlmonstr in #9914
- Add support for customising Silkworm RpcDaemon settings in Erigon++ by @canepat in #10002
Otterscan:
- Fixed rewards and fees calculation in Otterscan APIs: #10038 #10070
- Added support for return values in ots_traceTransaction traces: #10014"
New:
- Grafana: configurable datasource by @AskAlexSharov in #10073
- Enabled diagnostics by default to collect data by @dvovk in #10083
- Added command to verify remote manifests from webseeds by @awskii in #9762
- Add aditional types for handling bor waypoint persistnce and refactor snapshot management code to improve extensibility. #10027 #10051 #9793 #10132 #10147
- RPC: Receipts LRU cache by @AskAlexSharov in #10112
Bugfixes:
- Fix default gas values in debug_ RPCs by @shohamc1 in #9922
- Fixed p2p/sentry: StatusDataProvider ReadCurrentHeader error by @battlmonstr in #9890
- Fixed Engine API: NewPayload fails with a "context canceled" error when calling CurrentHeader/GetHeader (#9786) by @battlmonstr in #9894
- Fix abigen regression which generated non-compilable code with unused imports and duplicate struct definitions by @taratorio in #10091
- Release decompressor mmap on errors by @awskii in #9917
- Web Torrent related fixes to improve downloader reliability. For newly released snapshot files downloading is
primarily via webseeds. This has become unreliable recently due to issues with web firewall quotas and internal
torrent library http handling. These changes fix several identified issues in this area which should improve downlaod reliability.#9904 #9962 #10008 #10036 #10183 #10149
Full Changelog: v2.59.3...v2.60.0
v2.59.3 Napoli on Amoy
This release sets the Napoli hard fork on the Amoy test net at block #5423600.
What's Changed
- Napoli block for Amoy network by @anshalshukla in #9840
Full Changelog: v2.59.2...v2.59.3