Releases: erigontech/erigon
v3.0.3 "Otterly Odyssey"
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 run the migration steps again and add the --polygon.logindex flag to their flags for a complete mitigation.
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
Improvements:
- 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
v2.61.2
Description of the change
Improvements:
- Engine API: shorter waits by @yperbasis in #13821
- Schedule Pectra for Chiado by @yperbasis in #13935
Bugfixes:
Full Changelog: v2.61.1...v2.61.2
v3.0.0-beta2
Breaking changes
- Reverts Optimize gas by default in eth_createAccessList #8337
Description of the change
Improvements:
- Up to date implementation of Pectra and schedules hard fork for Holešky and Sepolia
- eth_estimateGas: StateOverrides and HistoricalBlocks support
- fixes a number of issues on Polygon with the new default flow (Astrid)
- nonsequential block in bridge processing - should be fixed
- pos sync failed: fork choice update failure: status=5, validationErr='' - should be fixed
- external rpc daemon getting stuck - should be fixed
- process not exiting in a clean way (getting stuck) upon astrid errs - should be fixed
- very rare chance of bridge deadlock while at chain tip due to forking - should be fixed
Require resync
- yes
Full Changelog: v3.0.0-beta1...v3.0.0-beta2