Go-Ethereum
僅在某些塊上缺少 trie 節點 > 是否可以重新同步特定塊?
我正在嘗試跟踪一些交易,我只在某些特定塊上收到“缺少 trie 節點”警告,但在其他塊上沒有
我已經閱讀了一個建議刪除chaindata文件夾的解決方案,但我不想這樣做,因為它首先需要永遠下載。
有沒有辦法通過低級 API 強制重新同步/重新下載導致 Missing trie 節點問題的特定塊?
解決方案
不幸的是,導出和導入選項對我不起作用。無論如何都嘗試一下,看看它是否對你有用。
我不得不在另一台機器上再次下載區塊鏈。
- 如果您沒有另一台電腦,則可以在 aws 實例中執行它。
- 一旦安裝在另一台機器上,不要啟動錢包(它將使用 –fast,lighter 選項自動下載區塊鏈)並使用這些選項通過命令行執行 geth 以更快地下載它:
$ geth --cache=1024 --jitvm
- 如果你有 RAM,你可以推高記憶體。我有 8Gb 的 Ram,所以我將記憶體推到 2Gb(2048)(更高的值似乎不起作用)
$ geth --cache=2048 --jitvm
- 無論您做什麼,都不要使用 –fast 選項,這樣會更快地下載區塊鏈,但您將無法跟踪交易。因此,如果您是開發人員並想解析整個區塊鏈,最好下載完整(非–fast)版本
您可以按照這些基準來選擇更快地下載完整的區塊鏈
您可以按照after –fast sync in geth 中的說明導出和導入您的塊,有沒有辦法重建舊狀態?:
PS:你不一定需要重新下載鏈,你可以用
geth export chain.dat
然後導出它geth --datadir=somehwere-else import chain.dat
。但總的來說,同步時間目前受到導入/處理時間的限制,而不是下載頻寬,所以它不會有太大的不同。