Releases: erigontech/erigon
v3.0.5 "Otterly Odyssey"
Description of the change
Polygon Bhilai Fork Updates:
- PIP-60: Increase gas limit to 45M
- PIP-58: Increase BaseFeeChangeDenominator to 64
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-7623: Increase calldata cost
- EIP-7702: Set EOA account code (PIP-51)
- PIP-66: Allow early block announcements
Bugfixes:
- polygon/sync: fix sporadic "block gap inserted" errors on chain tip by @milen in #15356 and by @mh0lt in #15352
- rpctest eth_getLogs no-duplicates chk by @AskAlexSharov in #15234
Full Changelog: v3.0.4...v3.0.5
v3.0.4 "Otterly Odyssey"
Description of the change
Improvements:
- disable diagnostics by default by @yperbasis in #14953
- less disk IO during files merge by @AskAlexSharov in #14901
- stage_custom_trace: to produce indices by @AskAlexSharov in #14879
- persist receipts - external rpcd support by @AskAlexSharov in #15004
- support
NO_PRUNE
env var by @AskAlexSharov in #15131 - cmd: Increase default
db.size.limit
by @AskAlexSharov in #15170 - notify rpcd when e3 files change by @sudeepdino008 in #15044
- mdbx v0.13.6 by @JkLondon in #15112
Bugfixes:
- Fix issues reported in snapshot processing to fix sync issues due to bugs in sync event and checkpoint snapshot production by @eastorski in #14887, #14947, #14951
- Update go-libutp for AUR build error by @anacrolix in #14892
- Caplin: fix occassional mev-boost bug by @Giulio2002 in #14991
- Erigon: optimistic inclusion for deep reorgs #14875 by @Giulio2002 in #14876
- Caplin: Fix misc issues after electra (#14910) by @domiwei in #14935
- fix erigon seg retire to handle incomplete merges by @sudeepdino008 in #15003
- fast failing if version string contains "." (v1.0- v2.23 for ex) by @JkLondon in #15048
- prune mode flag parsing and
String()
-ing by @awskii in #14882 - rpcdaemon: fix txNum at GetReceipt call in getLogsV3 by @lupin012 in #14986
Full Changelog: v3.0.3...v3.0.4
v3.0.3 "Otterly Odyssey"
Anyone experiencing DB growth issues in Erigon 3.0.2 please upgrade to 3.0.3 where this issue is fixed. To clean up excess disk space rm -rf <data_dir>/chaindata
.
Description of the change
RPC fixes:
Polygon users who have previously run migration steps to fix incorrect logIndex related to state sync transactions released in 3.0.2 are advised to do the following for a complete mitigation:
- Re-run migration steps, when running
integration
set the following environment variable:ERIGON_PRODUCE_RECEIPT_DOMAIN=true
- Add the
--polygon.logindex
to flags
Improvements:
- consensus: Add syscall failure scenarios (#14403) by @somnathb1 in #14818
- consensus: validate fixed lengths in abi decoding EIP-6110 deposit requests by @somnathb1 in #14823
- historical receipts persistency (optional) by @AskAlexSharov in #14781
- reduce dependency on github; download snapshot hashes from R2 by @wmitsuda in #14849
Bugfixes:
- eth, execution: Use block level gasPool in serial execution (#14761) by @somnathb1 in #14820
- no greedy prune on chain-tip (node did fall behind periodically) by @AskAlexSharov in #14782
- fixed performance and ordering issues with the RPC fix from 3.0.2 by @mh0lt and @shohamc1 in #14842 #14785 #14790
Full Changelog: v3.0.2...v3.0.3
v3.0.2 "Otterly Odyssey"
Description of the change
Gnosis users: this is a required update for the upcoming Pectra hardfork scheduled for 30 April 2025.
Ethereum mainnet users: it's recommended to use this release rather than v3.0.1 for the upcoming Pectra hardfork scheduled for 7 May 2025.
RPC fixes:
Previous versions of Erigon 3 have two bugs regarding handling of state sync events on Polygon chains:
- Incorrect
logIndex
on all state sync transaction logs - Missing log events when using
eth_getLogs
with filters
A proper fix has been implemented and will be progressively rolled out in Erigon 3.1 and 3.2 (track issue here). A temporary workaround has been introduced if these issues are critical for your use-case. This requires regenerating receipts for all transactions on the chain. The procedure is as follows:
- Shutdown Erigon and all rpcdaemon processes
- Update binaries Erigon release
erigon seg rm-state-snapshots --domain=receipt --datadir <your-datadir>
integration stage_custom_trace --datadir <your-datadir> --chain <amoy|bor-mainnet> --bor.heimdall <heimdall-url>
- For machines with many cores, you can add
--exec.workers=<num>
to improve performance (default is7
)
- For machines with many cores, you can add
- Once complete,
rm -rf <your-datadir>/chaindata
- Start Erigon
Improvements:
- Schedule Pectra hard fork for Gnosis Mainnet (#14521) by @somnathb1 in #14523
- params: Use no padding in minor version (#14588) by @somnathb1 in #14594
- recent receipts persistence: to reduce RPC latency by @AskAlexSharov in #14532
- historical
eth_getProof
experimental flag by @Giulio2002 in #14568 - Enhance efficiency of attestation selection (#14624) by @Giulio2002 in #14633
- EngineAPI: recover from missing chain segments (#14579) by @Giulio2002 in #14589
- remove unsafe closing of subsumed files in mergeLoopStep by @sudeepdino008 in #14557
Bugfixes:
- execution: fix missing log notifications when flushing extending fork… by @Giulio2002 in #14578
- EthereumExecution: fix canonical chain routine (#14580) by @Giulio2002 in #14592
- caplin: fix parsing topics (#14543) by @Giulio2002 in #14593
- Fix
trace_transaction
for Polygon chains (#14470) by @shohamc1 in #14530
Full Changelog: v3.0.1...v3.0.2
v3.0.1 "Otterly Odyssey"
Description of the change
Ethereum Mainnet users: it is recommended to use v3.0.2 rather than this release for the upcoming Pectra hardfork.
Pectra scheduled for May-07-2025
Sepolia/Holesky/Hoodi/Chiado users : It is recommended to use v3.0.2 rather than this release
Breaking changes:
- drop golang 1.22 support
- receipts RPC: deduplicate same requests by @AskAlexSharov in #14377
- Increase maximum open files limit on MacOSX by @AlexeyAkhunov in #14427
- engineeapi, txpool: Implement GetBlobsV1 (#13975) by @somnathb1 in #14380
- cmd: Set default EL extradata to erigon-version (#14419) by @somnathb1 in #14435
- Schedule Pectra hard fork for Ethereum Mainnet (#14424) by @somnathb1 in #14436
- engineapi: Add requests nil check (#14421) by @somnathb1 in #14499
Bugfixes:
- Include execution requests in produced block (#14326) by @domiwei in #14395
- txpool: Fixes to EIP-7702 setCodeTxn handling by @somnathb1 in #14495, #14500 and #14503
Full Changelog: v3.0.0...v3.0.1
v3.0.0
- Documentation: docs.erigon.tech
- Blog: erigon.tech/blog
- X/Twitter: x.com/ErigonEth
Note: This version has support for Hoodi testnet with --chain=hoodi
Upgrade from Erigon2
No. Please re-sync.
Breaking changes
- Bor chains: enable checkpoint sync by default (name: Astrid)
- This uses the merkle data in Checkpoints & Milestines in the sync process rather than total difficulty.
- To disable:
--polygon.sync=false
caplin.backfilling.blobs
,caplin.backfilling
andcaplin.archive
are now--caplin.states-archive
--capin.blobs-archive
--caplin.blocks-archive
Erigon3 changes from Erigon2
- Initial sync doesn't re-exec from 0: downloading 99% LatestState and History
- Per-Transaction granularity of history (Erigon2 had per-block). Means:
- Can execute 1 historical transaction - without executing it's block
- Erigon3 doesn't store Logs (aka Receipts) - it always re-executing historical txn (but it's cheaper)
- Validator mode: added.
--internalcl
is enabled by default. To disable use--externalcl
. - Built-in Bor Consens: named Astrid. Enabled by default. To disable use
--polygon.sync=false
. Require re-sync. --prune
flags changed: see--prune.mode
(default:full
, archive:archive
, EIP-4444:minimal
)- Store most of data in immutable files (segments/snapshots):
- can symlink/mount latest state to fast drive and history to cheap drive
chaindata
is less than15gb
. It's ok torm -rf chaindata
. (to prevent grow: recommend--batchSize <= 1G
)
- Other changes:
- ExecutionStage included many E2 stages: stage_hash_state, stage_trie, log_index, history_index, trace_index
- Restart doesn't loose much partial progress:
--sync.loop.block.limit=5_000
enabled by default
Known problems
- polygon:
eth_getLogs
if search by filters - doesn't return state-sync (state-sync events are not indexed yet). Without filter can see state-sync events. Ineth_getReceipts
also can see. Will release fixed files in E3.2 - polygon:
eth_getLogs
state-sync events have incorrectindex
field. Will release fixed files in E3.2
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
Full Changelog: v3.0.0-rc3...v3.0.0
v3.0.0-rc3
Description of the change
Bugfixes:
- fixed txPool panics by @somnathb1 in #14096
- fixed sendRawTransaction and eth_getTransactionByHash by @shohamc1 in #14077
- Fixes issue with Sepolia sync from scratch post pectra by @somnathb1 in #14113
Full Changelog: v3.0.0-rc2...v3.0.0-rc3
Known problems
- polygon:
eth_getLogs
if search by filters - doesn't return state-sync (state-sync events are not indexed yet). Without filter can see state-sync events. Ineth_getReceipts
also can see. Will release fixed files in E3.1 - polygon:
eth_getLogs
state-sync events have incorrectindex
field. Will release fixed files in E3.1
Full Changelog: v3.0.0-rc2...v3.0.0-rc3
v3.0.0-rc2
Description of the change
Mandatory for Sepolia & Chiado
Bugfixes:
- Caplin: error on aggregation_bit merge by @domiwei in #14063
- Pectra: fix bad deposit contract deposit unmarshalling by @Giulio2002 in #14068
Known problems
- polygon:
eth_getLogs
if search by filters - doesn't return state-sync (state-sync events are not indexed yet). Without filter can see state-sync events. Ineth_getReceipts
also can see. Will release fixed files in E3.1 - polygon:
eth_getLogs
state-sync events have incorrectindex
field. Will release fixed files in E3.1
Full Changelog: v3.0.0-rc1...v3.0.0-rc2
v2.61.3
Description of the change
Mandatory for Sepolia & Chiado
Bugfixes:
- Pectra: fix bad deposit contract deposit unmarshalling by @Giulio2002 in #14074
Full Changelog: v2.61.2...v2.61.3
v3.0.0-rc1
Description of the change
Improvements:
- Schedule Pectra for Chiado by @yperbasis in #13898
- stagedsync: dbg option to log receipts on receipts hash mismatch (#13905) by @taratorio in #13940
- Introduces a new method for estimating transaction gas that targets the maximum gas a contract could use (#13913). Fixes eth_estimateGas for historical blocks (#13903) by @somnathb1 in #13916
Bugfixes:
- rpcdaemon: Show state sync transactions in eth_getLogs (#13924) by @shohamc1 in #13951
- polygon/heimdall: fix snapshot store last entity to check in snapshots too (#13845) by @taratorio in #13938
- Implemented wait if heimdall is not synced to the chain (#13807) by @taratorio in #13939
Known problems
- polygon:
eth_getLogs
if search by filters - doesn't return state-sync (state-sync events are not indexed yet). Without filter can see state-sync events. Ineth_getReceipts
also can see. Will release fixed files in E3.1 - polygon:
eth_getLogs
state-sync events have incorrectindex
field. Will release fixed files in E3.1
Full Changelog: v3.0.0-beta2...v3.0.0-rc1