Skip to content

v3.0.0-alpha1

Pre-release
Pre-release
Compare
Choose a tag to compare
@VBulikov VBulikov released this 23 Jul 15:01
· 422 commits to main since this release
6df3f87

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
    to rm -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 fields index 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.