Releases: erigontech/erigon
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
v2.61.1
Holesky and Sepolia users: this is a required update for the upcoming Pectra hardfork.
Pectra scheduled for:
- Holesky: Mon, Feb 24 at 21:55:12 UTC
- Sepolia: Wed, Mar 5 at 07:29:36 UTC
Breaking changes
- Prohibit --internalcl in E2 by @yperbasis in #13757
Description of the change
New Feature:
- Up to date implementation of EIPs for Pectra and scheduled hard fork for Sepolia and Holešky
- Add support to eth_blobBaseFee, eth_baseFee and EIP4844 support to eth_feeHistory
- Add support for
engine_getClientVersionV1
Bugfixes:
- rpcdaemon: Set miner on eth_getBlockByNumber on Polygon by @shohamc1 in #13336
- Fix incorrect intrinsic gas calculation by @shohamc1 in #13632
Full Changelog: v2.61.0...v2.61.1
v3.0.0-beta1
Documentation: docs.erigon.tech
Blog: erigon.tech/news
X/Twitter: x.com/ErigonEth
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.
- The process should auto upgrade - in which case you may find that it starts creating new snapshots for checkpoints and milestones.
- This may however fail, as there are a number of potential edge cases. If this happens the process will likely stop with a failure message.
- In this situation you will need to do a clean sync, in which case the complete snapshot set will be downloaded and astrid will sync.
- If you want to prevent this and retain the old behaviour start erigon with
--polygon.sync=false
caplin.backfilling.blobs
,caplin.backfilling
andcaplin.archive
are now--caplin.states-archive
--capin.blobs-archive
--caplin.blocks-archive
Description of the change
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
- If account X change V1->V2->V1 within 1 block (different transactions):
debug_getModifiedAccountsByNumber
return
it - 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
Require resync
- no
Notes:
- Starting with beta1 we're deprecating
Caplin
andPolygon
support in Erigon 2
References:
- Erigon3 book: https://docs.erigon.tech/
- Erigon3 blogpost: https://erigon.tech/erigon-3-alpha-1-the-first-all-in-one-evm-node-on-the-efficient-software-frontier-is-live/
Full Changelog: v3.0.0-alpha7...v3.0.0-beta1
v2.61.0
Description of the change
Improvements:
- Up to date implementation of Pectra network fork specs till pectra-devnet-4 see https://notes.ethereum.org/@ethpandaops/pectra-devnet-4 https://eips.ethereum.org/EIPS/eip-7600
- Updated golang version for Dockerfile 1.22
Full Changelog: v2.60.10...v2.61.0