文件: erigon.gitbook.io部落格: erigon.substack.com Twitter:x.com/ErigonEth
Erigon 是以太坊(具有可嵌入共識層的執行層)在效率前沿的實現。預設情況下存檔節點。
erigon
港caplin
港beaconAPI
埠shared
連接埠other
港口systemd
範例htop
顯示不正確的記憶體使用情況重要預設值:Erigon 預設是一個存檔節點:如果需要,請使用--prune.mode
使其更小(首次啟動後不允許更改)
In-depth links are marked by the microscope sign (?)
內存:>=32GB,Golang>=1.22; GCC 10+ 或 Clang;在 Linux 上:核心 > v4。 64 位元架構。
SSD 或 NVMe。不推薦 HDD - 在 HDD 上,Erigon 將始終落後鏈尖 N 個區塊,但不會落後。請記住,當接近容量時,SSD 效能會下降。 CloudDrives(如 gp3):雲端網路磁碟機上的區塊執行速度很慢
?有關 Erigon3 數據目錄大小的更多詳細信息
?有關此處存儲的數據類型的更多詳細信息
發行說明和二進位文件
建立最新版本(這適合大多數只想運行節點的使用者):
git clone --branch release/ < x.xx > --single-branch https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon
透過--torrent.download.rate=20mb
提高下載速度。 ? See Downloader docs
使用--datadir
選擇儲存資料的位置。
對於 Gnosis Chain 使用--chain=gnosis
,對於 Polygon Mainnet 使用--chain=bor-mainnet
,對於 Polygon Amoy 使用--chain=amoy
。對於 Gnosis Chain,您需要一個共識層客戶端以及 Erigon (https://docs.gnosischain.com/category/step--3---run-consensus-client)。
執行make help
將列出並描述 Makefile 中可用的便捷指令。
datadir
chaindata # "Recently-updated Latest State", "Recent History", "Recent Blocks"
snapshots # contains `.seg` files - it's old blocks
domain # Latest State
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).
txpool # pending transactions. safe to remove.
nodes # p2p peers. safe to remove.
temp # used to sort data bigger than RAM. can grow to ~100gb. cleaned at startup.
# There is 4 domains: account, storage, code, commitment
如果您能負擔得起在 1 個 nvme-raid 上儲存 datadir - 那就太好了。如果不能 - 可以將歷史記錄儲存在廉價的驅動器上。
# place (or ln -s) `datadir` on slow disk. link some sub-folders to fast (low-latency) 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 # buffers to sort data >> RAM. sequential-buffered IO - is slow-disk-friendly
# 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`
# 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
debug_getModifiedAccountsByNumber
回傳該值--internalcl
預設啟用。停用使用--externalcl
。chaindata
小於15gb
。 rm -rf chaindata
就可以了。 (為了防止成長:建議--batchSize <= 1G
)--prune
標誌已更改:請參閱--prune.mode
(預設: archive
,full: full
,EIP-4444: minimal
)--sync.loop.block.limit=5_000
預設啟用標誌:
verbosity
log.console.verbosity
(覆蓋verbosity
的別名)log.json
log.console.json
( log.json
的別名)log.dir.path
log.dir.prefix
log.dir.verbosity
log.dir.json
為了僅記錄到 stdout/stderr,可以使用--verbosity
(或log.console.verbosity
)標誌來提供指定最高輸出日誌等級的 int 值:
LvlCrit = 0
LvlError = 1
LvlWarn = 2
LvlInfo = 3
LvlDebug = 4
LvlTrace = 5
若要設定要在磁碟上收集的日誌的輸出目錄,請設定--log.dir.path
如果要變更從erigon
產生的檔案名,也應該將--log.dir.prefix
標誌設為備用名稱。標誌--log.dir.verbosity
也可用來控制此日誌記錄的詳細程度,具有與上方相同的 int 值,或字串值,例如「debug」或「info」。對於磁碟日誌記錄,預設詳細程度為「調試」(4)。
可以使用布林標誌log.json
或log.console.json
將日誌格式設為 json,或將日誌格式設為磁碟輸出--log.dir.json
。
Erigon 預設是「全合一二進位」解決方案,但可以將 TxPool 作為單獨的進程啟動。同樣的情況還有:JSON RPC 層(RPCDaemon)、p2p 層(Sentry)、歷史下載層(Downloader)、共識。不要將服務作為單獨的進程啟動,除非您有明確的理由:資源限制、擴展、替換為您自己的實作、安全性。如何將 Erigon 的服務作為單獨的程序啟動,請參閱 docker-compose.yml。每個服務都有自己的./cmd/*/README.md
檔案。埃里貢博客。
以太坊主網、Sepolia、Holesky、Gnosis 的內建共識。若要使用外部共識層: --externalcl
。
如果您想嘗試 Erigon:一個不錯的選擇是開始同步公共測試網之一 Holesky(或 Amoy)。它同步速度更快,而且不佔用太多磁碟空間:
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon --datadir= < your_datadir > --chain=holesky --prune.mode=full
請注意--datadir
選項可讓您將 Erigon 檔案儲存在非預設位置。目錄名稱--datadir
不必與--chain
中的鏈名稱相符。
以太坊和 Gnosis 鏈完全支援區塊生產。 Polygon 仍處於實驗階段。
您可以透過 TOML 設定檔使用標誌--config
設定 Erigon 標誌。可以透過直接在 Erigon 命令列上寫入標誌來覆蓋設定檔中設定的標誌
./build/bin/erigon --config ./config.toml --chain=sepolia
假設我們的設定檔中有chain : "mainnet"
,透過新增--chain=sepolia
允許覆蓋 toml 設定檔內的標誌並將鏈設為 sepolia
datadir = ' your datadir '
port = 1111
chain = " mainnet "
http = true
"private.api.addr" = " localhost:9090 "
"http.api" = [ " eth " , " debug " , " net " ]
Erigon 可用作共識層用戶端 (CL) 的執行層 (EL)。預設配置就OK了。
如果您的 CL 用戶端位於不同的裝置上,請新增--authrpc.addr 0.0.0.0
(引擎 API 預設在本機上偵聽)以及--authrpc.vhosts
其中
是您的來源主機或any
。
為了在共識層和執行層之間建立安全連接,會自動產生 JWT 金鑰。
預設情況下,JWT 金鑰將以jwt.hex
的名稱出現在 datadir 中,並且可以使用標誌--authrpc.jwtsecret
指定其路徑。
為了成功建立連接,這條訊息也需要在共識層中指定。更多資訊可以在這裡找到。
Erigon 執行後,您需要將 CL 用戶端指向
,其中
是localhost
或執行 Erigon 的裝置的 IP 位址,並且也指向 Erigon 建立的 JWT 秘密路徑。
Caplin 是一個成熟的驗證共識客戶端,如 Prysm、Lighthouse、Teku、Nimbus 和 Lodestar。其目標是:
開發新共識層的主要原因是嘗試它可能帶來的好處。例如,引擎 API 不能很好地與 Erigon 配合使用。引擎 API 一次發送一個資料塊,這不適合 Erigon 的工作方式。 Erigon 旨在同時處理多個區塊,並且需要有效率地排序和處理資料。因此,Erigon 最好獨立處理區塊,而不是依賴引擎 API。
預設情況下啟用 Caplin。若要停用它並啟用引擎 API,請使用--externalcl
標誌。從那時起,將不再需要外部共識層。
Caplin 還具有歷史狀態和區塊的檔案模式。它可以透過--caplin.archive
標誌啟用。為了啟用 caplin 的 Beacon API,必須新增標誌--beacon.api=
。例如: --beacon.api=beacon,builder,config,debug,node,validator,lighthouse
將啟用所有端點。 **注意:Caplin 尚未做好質押準備,因此聚合端點仍有待實施。另外啟用 Beacon API 將導致 RAM 使用量增加 6 GB。
定義 6 個標誌以避免衝突: --datadir --port --http.port --authrpc.port --torrent.port --private.api.addr
。同一台機器上的多個鏈的範例:
# mainnet
./build/bin/erigon --datadir="" --chain=mainnet --port=30303 --http.port=8545 --authrpc.port=8551 --torrent.port=42069 --private.api.addr=127.0.0.1:9090 --http --ws --http.api=eth,debug,net,trace,web3,erigon
# sepolia
./build/bin/erigon --datadir="" --chain=sepolia --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon
如果路徑中有空格,請引用它。
? Detailed explanation is DEV_CHAIN.
在網路頻寬良好的情況下,以太坊主網 FullNode 在 3 小時內同步:OtterSync 可以同步
扁平 KV 儲存。 Erigon 使用鍵值資料庫並以簡單的方式儲存帳戶和儲存。
? See our detailed DB walkthrough here.
預處理。對於某些操作,Erigon 在將資料插入主資料庫之前使用臨時檔案來預處理資料。這減少了寫入放大,並且資料庫插入速度快了幾個數量級。
? See our detailed ETL explanation here.
平原狀態
單一帳戶/狀態特里樹。 Erigon 使用單一 Merkle trie 來儲存帳戶和儲存。
? Staged Sync Readme
大多數 Erigon 元件(txpool、rpcdaemon、快照下載器、哨兵等)可以在 Erigon 內部工作,並作為同一伺服器(或另一個伺服器)上的獨立進程。例子:
make erigon rpcdaemon
./build/bin/erigon --datadir=/my --http=false
# To run RPCDaemon as separated process: use same `--datadir` as Erigon
./build/bin/rpcdaemon --datadir=/my --http.api=eth,erigon,web3,net,debug,trace,txpool --ws
--rpc.batch.concurrency
、 --rpc.batch.limit
、 --db.read.concurrency
--http.compression
、 --ws.compression
? See RPC-Daemon docs
docker compose up prometheus grafana
,詳細文件。
# please use git branch name (or commit hash). don't use git tags
go mod edit -replace github.com/erigontech/erigon-lib=github.com/erigontech/erigon/erigon-lib@5498f854e44df5c8f0804ff4f0747c0dec3caad5
go get github.com/erigontech/erigon@main
go mod tidy
erigon
港成分 | 港口 | 協定 | 目的 | 應該暴露 |
---|---|---|---|---|
引擎 | 9090 | 傳輸控制協定 | gRPC伺服器 | 私人的 |
引擎 | 42069 | TCP 和 UDP | 快照同步(BitTorrent) | 民眾 |
引擎 | 8551 | 傳輸控制協定 | 引擎 API(JWT 身份驗證) | 私人的 |
哨兵 | 30303 | TCP 和 UDP | eth/68 對等互連 | 民眾 |
哨兵 | 30304 | TCP 和 UDP | eth/67 對等互連 | 民眾 |
哨兵 | 9091 | 傳輸控制協定 | 傳入 gRPC 連接 | 私人的 |
RPC守護程式 | 8545 | 傳輸控制協定 | HTTP、WebSocket 和 GraphQL | 私人的 |
通常,30303 和 30304 暴露於網路以允許傳入對等連線。 9090 僅在 rpcdaemon 或其他連線內部公開(例如 rpcdaemon -> erigon)。連接埠 8551(經過 JWT 驗證)僅在內部公開,用於來自共識層節點的引擎 API JSON-RPC 查詢。
caplin
港成分 | 港口 | 協定 | 目的 | 應該暴露 |
---|---|---|---|---|
哨兵 | 4000 | UDP協定 | 對等 | 民眾 |
哨兵 | 4001 | 傳輸控制協定 | 對等 | 民眾 |
若要配置連接埠,請使用:
--caplin.discovery.addr value Address for Caplin DISCV5 protocol (default: "127.0.0.1")
--caplin.discovery.port value Port for Caplin DISCV5 protocol (default: 4000)
--caplin.discovery.tcpport value TCP Port for Caplin DISCV5 protocol (default: 4001)
beaconAPI
埠成分 | 港口 | 協定 | 目的 | 應該暴露 |
---|---|---|---|---|
休息 | 5555 | 傳輸控制協定 | 休息 | 民眾 |
shared
連接埠成分 | 港口 | 協定 | 目的 | 應該暴露 |
---|---|---|---|---|
全部 | 6060 | 傳輸控制協定 | 普教授 | 私人的 |
全部 | 6061 | 傳輸控制協定 | 指標 | 私人的 |
可以啟用可選標誌來啟用 pprof 或指標(或兩者)。使用--help
與二進位檔案取得更多資訊。
other
港口保留供將來使用: gRPC 連接埠: 9092
共識引擎、 9093
快照下載器、 9094
TxPool
0.0.0.0/8 "This" Network RFC 1122, Section 3.2.1.3
10.0.0.0/8 Private-Use Networks RFC 1918
100.64.0.0/10 Carrier-Grade NAT (CGN) RFC 6598, Section 7
127.16.0.0/12 Private-Use Networks RFC 1918
169.254.0.0/16 Link Local RFC 3927
172.16.0.0/12 Private-Use Networks RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 5736
192.0.2.0/24 TEST-NET-1 RFC 5737
192.88.99.0/24 6to4 Relay Anycast RFC 3068
192.168.0.0/16 Private-Use Networks RFC 1918
198.18.0.0/15 Network Interconnect
Device Benchmark Testing RFC 2544
198.51.100.0/24 TEST-NET-2 RFC 5737
203.0.113.0/24 TEST-NET-3 RFC 5737
224.0.0.0/4 Multicast RFC 3171
240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4
255.255.255.255/32 Limited Broadcast RFC 919, Section 7
RFC 922, Section 7
IpTables 語法相同
systemd
範例作為單獨的用戶從build/bin
運行 erigon 可能會產生錯誤:
error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
需要使用make DIST=
為另一個使用者安裝該程式庫。您可以使用$HOME/erigon
或/opt/erigon
作為安裝路徑,例如:
make DIST=/opt/erigon install
kill -SIGUSR1
,取得追蹤並停止: kill -6
--pprof
標誌並執行go tool pprof -png http://127.0.0.1:6060/debug/pprof/profile?seconds=20 > cpu.png
--pprof
標誌並運行go tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png
? Detailed explanation is here.
Docker 使用 UID/GID 1000 的使用者 erigon(出於安全原因)。您可以在 Dockerfile 中看到正在建立該使用者。可以透過向主機的使用者授予該資料夾的所有權來修復,其中主機的使用者 UID/GID 與 docker 的使用者 UID/GID (1000) 相同。帖子中有更多詳細信息
--txpool.nolocals=true
--http.api
列表中添加admin
--http.corsdomain="*"
是不好的做法:設定準確的主機名稱或 IP--rpc.batch.concurrency
、 --rpc.batch.limit
來防止 DOShttps://github.com/mathMakesArt/Erigon-on-RPi-4
Docker 允許透過容器建置和運行 Erigon。這減少了將建置依賴項安裝到主機作業系統的需要。
使用者 UID/GID 需要在主機作業系統和容器之間同步,以便以正確的權限寫入檔案。
您可能希望在主機作業系統上設定專用使用者/群組,在這種情況下,以下make
目標可用。
# create "erigon" user
make user_linux
# or
make user_macos
儲存庫的根目錄中有一個.env.example
檔案。
DOCKER_UID
- docker 使用者的 UIDDOCKER_GID
- docker 使用者的 GIDXDG_DATA_HOME
- 將安裝到 docker 容器的資料目錄如果未指定,UID/GID 將使用目前使用者。
XDG_DATA_HOME
的一個不錯選擇是使用由幫助器目標make user_linux
或make user_macos
創建的~erigon/.ethereum
目錄。
檢查權限:在所有情況下, XDG_DATA_HOME
(指定或預設)必須可由docker中的使用者UID/GID寫入,這將在建置時由DOCKER_UID
和DOCKER_GID
決定。如果建置或服務啟動因權限原因失敗,請檢查這些環境變數控制的所有目錄、UID 和 GID 是否正確。
下一個指令啟動:Erigon 在連接埠 30303 上,rpcdaemon 在連接埠 8545 上,prometheus 在連接埠 9090 上,grafana 在連接埠 3000 上。
#
# Will mount ~/.local/share/erigon to /home/erigon/.local/share/erigon inside container
#
make docker-compose
#
# or
#
# if you want to use a custom data directory
# or, if you want to use different uid/gid for a dedicated user
#
# To solve this, pass in the uid/gid parameters into the container.
#
# DOCKER_UID: the user id
# DOCKER_GID: the group id
# XDG_DATA_HOME: the data directory (default: ~/.local/share)
#
# Note: /preferred/data/folder must be read/writeable on host OS by user with UID/GID given
# if you followed above instructions
#
# Note: uid/gid syntax below will automatically use uid/gid of running user so this syntax
# is intended to be run via the dedicated user setup earlier
#
DOCKER_UID= $( id -u ) DOCKER_GID= $( id -g ) XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
#
# if you want to run the docker, but you are not logged in as the $ERIGON_USER
# then you'll need to adjust the syntax above to grab the correct uid/gid
#
# To run the command via another user, use
#
ERIGON_USER=erigon
sudo -u ${ERIGON_USER} DOCKER_UID= $( id -u ${ERIGON_USER} ) DOCKER_GID= $( id -g ${ERIGON_USER} ) XDG_DATA_HOME= ~ ${ERIGON_USER} /.ethereum DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
Makefile 為 erigon、prometheus 和 grafana 建立初始目錄。 PID 命名空間在 erigon 和 rpcdaemon 之間共享,需要從另一個進程(RPCDaemon 本機模式)開啟 Erigon 的資料庫。請參閱:https://github.com/erigontech/erigon/pull/2392/files
如果您的 docker 安裝需要 docker 守護程式以 root 身分執行(預設),則需要在上面的命令前面加上sudo
前綴。但是,出於安全原因,有時建議以非 root 使用者身分執行 docker(及其容器)。有關如何執行此操作的更多信息,請參閱本文。
郵政
--sync.loop.block.limit=10_000
SNAPSHOT_MADV_RND=false
vmtouch -vdlw /mnt/erigon/snapshots/domain/*bt
ls /mnt/erigon/snapshots/domain/*.kv | parallel vmtouch -vdlw
# if it failing with "can't allocate memory", try:
sync && sudo sysctl vm.drop_caches=3
echo 1 > /proc/sys/vm/compact_memory
Windows 使用者可以透過 3 種可能的方式運行 erigon:
使用提供的wmake.ps1
PowerShell 腳本為 Windows 本機建置可執行二進位檔案。使用語法與make
指令相同,因此您必須執行.wmake.ps1 [-target]
。範例: .wmake.ps1 erigon
建構 erigon 執行檔。所有二進位檔案都放置在.buildbin
子資料夾中。在 Windows 上成功進行本機構建有一些要求:
chocolatey
套件管理器 - 請參閱以下幾點).wmake.ps1 db-tools
),則必須安裝適用於 Windows 的 Chocolatey 套件管理器。透過 Chocolatey,您需要安裝以下組件: cmake
、 make
、 mingw
by choco install cmake make mingw
。確保 Windows 系統「Path」變數具有:C:ProgramDatachocolateylibmingwtoolsinstallmingw64bin關於防毒的重要說明在 MinGW 的編譯器偵測階段,會產生一些臨時可執行檔來測試編譯器功能。據報道,一些防毒程式檢測到這些檔案可能被Win64/Kryptic.CIS
特洛伊木馬(或其變體)感染。儘管這些都是誤報,但我們無法控制 100 多家 Windows 安全產品供應商及其各自的偵測演算法,我們知道這可能會讓您的 Windows 版本體驗感到不舒服。要解決此問題,您可以專門為克隆儲存庫的buildbinmdbxCMakeFiles
子資料夾設定防毒排除項,或者可以使用以下其他兩個選項執行 erigon
使用 Docker :請參閱 docker-compose.yml
嚴格在版本 2 上使用 WSL(適用於 Linux 的 Windows 子系統)。在此選項下,您可以像在常規 Linux 發行版上一樣建立 Erigon。您也可以將資料指向任何已安裝的 Windows 分割區(例如/mnt/c/[...]
、 /mnt/d/[...]
等),但在這種情況下,請注意效能會受到影響:這是因為這些掛載點使用DrvFS
(一種網路檔案系統),此外,MDBX 鎖定資料庫以進行獨佔訪問,這意味著一次只有一個進程可以存取資料。這會對rpcdaemon
的運行產生影響,即使它在同一台電腦上執行,也必須將其配置為遠端 DB。相反,如果您的資料託管在本機 Linux 檔案系統上,則不存在任何限制。另請注意,預設 WSL2 環境有自己的 IP 位址,該位址與 Windows 主機的網路介面之一不符:在路由器上為連接埠 30303 設定 NAT 時請考慮到這一點。
主要討論發生在我們的 Discord 伺服器上。要獲得邀請,請發送電子郵件至bloxster [at] proton.me
並註明您的姓名、職業、簡要說明您想加入 Discord 的原因以及您是如何聽說 Erigon 的。
erigon.substack.com
x.com/ErigonEth
發送電子郵件至security [at] torquem.ch
。
htop
顯示不正確的記憶體使用情況Erigon 的內部 DB (MDBX) 使用MemoryMap
- 當作業系統管理所有read, write, cache
操作而不是應用程式時(linux、windows)
res
列上的htop
顯示「App + OS 用於保存給定應用程式的頁面快取」的內存,但這並不提供信息,因為如果htop
說該應用程式使用了90% 的內存,您仍然可以在同一台電腦上運行3 個以上的應用程式實例- 因為90%
的大部分是「作業系統頁面快取」。作業系統在需要記憶體時會自動釋放該快取。較小的「頁面快取大小」可能根本不會影響 Erigon 的效能。
接下來的工具顯示了 Erigon 的正確記憶體使用:
vmmap -summary PID | grep -i "Physical footprint"
。不用grep
就可以看到詳細信息section MALLOC ZONE column Resident Size
顯示應用程式記憶體使用情況, section REGION TYPE column Resident Size
顯示作業系統頁面快取大小。Prometheus
儀表板顯示沒有作業系統頁面快取的 Go 應用程式的記憶體( make prometheus
,在瀏覽器中開啟localhost:3000
,憑證admin/admin
)cat /proc//smaps
Erigon 在創世同步期間使用約 4Gb 的 RAM,在正常工作期間使用約 1Gb 的 RAM。作業系統頁面快取可以利用無限量的記憶體。
警告:同一台電腦上的多個 Erigon 實例將同時接觸磁碟,這會影響效能 - 主要的 Erigon 最佳化之一:「減少磁碟隨機存取」。 「區塊執行階段」仍然執行許多隨機讀取 - 這就是它是最慢階段的原因。我們不建議在同一磁碟上執行多個創世同步。如果創世同步通過,那麼可以在同一磁碟上執行多個 Erigon 實例。
(如 gp3)您可能會閱讀:#1516(評論)簡而言之:網路磁碟不利於區塊執行 - 因為區塊執行以非平行非批次方式從資料庫讀取資料。技巧:如果你投入足夠的 RAM 並設定環境變數ERIGON_SNAPSHOT_MADV_RND=false
- 那麼 Erigon 將在雲端硬碟上運作得足夠好 - 以更高的 IO 成本。
例如:btrfs 的 autodefrag 選項 - 可能會將寫入 IO 增加 100 倍
Gnome Tracker - 偵測礦工並殺死他們。
對於其他在嘗試以舊方式啟動 Erigon 時遇到 BuildKit 錯誤的人,您可以使用以下命令...
XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose