Go-Ethereum

僅在某些塊上缺少 trie 節點 > 是否可以重新同步特定塊?

  • June 1, 2017

我正在嘗試跟踪一些交易,我只在某些特定塊上收到“缺少 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。但總的來說,同步時間目前受到導入/處理時間的限制,而不是下載頻寬,所以它不會有太大的不同。

引用自:https://ethereum.stackexchange.com/questions/7790