Go-Ethereum

快速同步後 Geth 節點從頭開始同步

  • May 15, 2017

我已經使用--fast命令同步了。現在我應該如何進行?

我嘗試停止它,然後執行,geth --rpc但它說:

Last Header #1311471
Last Block #0
Fast Block #1310224

我應該怎麼做才能保持同步?

為什麼快速同步重啟

Péter Szilágyi上面的評論所述,您必須等待--fast同步完成,否則您將不得不再次重新啟動該過程。同步完成後您應該在控制台上看到的消息--fast是“快速同步完成,自動禁用”,如下所示:

I0416 17:16:12.631667   30629 blockchain.go:1251] imported 195 block(s) 
 (0 queued 0 ignored) including 0 txs in 1.235990428s. #384 [d707e667 / d3d5d5c1]
I0416 17:16:12.631825   30629 sync.go:180] fast sync complete, auto disabling
I0416 17:16:48.831757   30629 blockchain.go:1251] imported 4 block(s) (0 
 queued 0 ignored) including 0 txs in 12.933585ms. #388 [bbb506ab / 0ace7268]

要重新啟動,您必須清除您的 chaindata 文件夾 - 請參閱下面的“如何重置我的區塊鏈並執行 geth –fast”。

快速同步後的乙太坊挖礦

同步區塊鏈,當你有最新的區塊被同步時,你可以在控制台中輸入以下命令:

miner.start(n)

其中n是您希望 CPU 用於探勘的執行緒數。

我在這裡假設您想使用正常 CPU 而非圖形處理單元 (GPU) 來探勘區塊鏈。您可能想參考 CPU 挖礦是否值得乙太坊?.

如果您的電腦上確實有 GPU,您可能首先要在此站點上搜尋“探勘”問答,或者如果找不到答案,請提出單獨的問題。這是一個問答 -如何在 GNU + Linux 上探勘 Ether?.

請注意,您必須首先創建一個用於支付您的採礦獎勵的帳戶。請參閱下面的“但我確實有一個 GPU 並想用它來挖礦”。

我應該如何進行?

請參閱下面的詳細資訊。

我應該怎麼做才能保持同步?

您應該只需要geth --fast console第一次執行。在第一次之後,該--fast選項不會更快地同步塊。--fast您可以在後續執行中省略參數geth

當您geth第一次不帶--fast參數執行時,geth可能需要幾天時間才能通過網際網路從其他電腦下載區塊鏈 - 這個時間取決於您的網路連接速度和您的電腦 CPU。

如果您geth --fast在全新安裝中第一次使用,geth --fast將需要幾個小時來下載區塊鏈 - 這再次取決於您的網路連接和您的 CPU。

使用 初始下載區塊鏈後geth --fast,您只能在geth沒有--fast參數的情況下執行。現在的同步速度很快,因為只需要通過網際網路從其他乙太坊節點下載新塊,並且它們的平均生成速度約為每 14 到 15 秒一個塊。

如果您想重置您的區塊鏈並使用 重新下載區塊鏈--fast,請參閱下面的“如何重置我的區塊鏈並執行geth --fast”部分。

我做錯了什麼還是geth --fast不是為了挖礦?

geth --fast用於通過 Internet 從其他乙太坊節點初始下載目前區塊鏈的副本**。**正如Geth 的“快速”同步是什麼中所回答的,為什麼它更快?

不是一次處理整個區塊鏈的一個連結,並重播歷史上曾經發生的所有交易,而是快速同步沿著區塊下載交易收據,並提取整個最近的狀態數據庫。

geth --fast不用於採礦。這只是下載區塊鏈副本的第一步。如果你想挖礦,你隨後將需要一個連續同步的區塊鏈副本。

我錯過了任何其他步驟嗎?

不是我能說的。您的鏈從頭開始同步是不尋常的,除非它沒有正確完成或存在一些配置問題。嘗試清除您的chaindata目錄並重新同步您的區塊鏈。在此之後,您不需要從頭開始重新同步。


細節

我假設您想在一個視窗 (#1) 中執行同步命令,並geth在另一個視窗 (#2) 中附加另一個控制台。當您想退出控制台時,請使用 Control-D (^D) 擊鍵。如果您多次使用 Control-C,或以其他方式終止程序(kill在 Linux 或 Mac 中,或在 Windows 中的任務管理器中),您的區塊鏈數據可能會損壞(很少發生 - 發生在我身上一次)。

第一次同步

在視窗 #1 中,執行命令:

geth --fast console

在視窗 #2 中,執行以下命令以附加到geth --fast console上面的實例:

geth attach

您不需要此--rpc標誌,因為這兩個geth實例之間的通信將通過 IPC 協議完成。IPC 協議僅通過文件描述符在本地電腦內執行。RPC 協議可用於跨不同電腦的通信。

第一次後同步

在視窗 #1 中,執行命令:

geth console

在視窗 #2 中,執行以下命令以附加到geth console上面的實例:

geth attach

--fast控制台消息與正常同步之間的區別

geth --fast console螢幕上顯示以下消息- 請注意標題收據

I0416 13:35:53.497422   30629 blockchain.go:889] imported 192 header(s) 
 (0 ignored) in 71.941018ms. #6336 [2edbbc3f… / b80c9ac3…]
I0416 13:35:54.263134   30629 blockchain.go:1044] imported 192 receipt(s) 
 (0 ignored) in 55.447062ms. #6336 [2edbbc3f… / b80c9ac3…]
I0416 13:35:54.683682   30629 blockchain.go:889] imported 192 header(s) 
 (0 ignored) in 73.050377ms. #6528 [8ab9a7af… / f2ffecac…]

geth console螢幕上會顯示以下消息- 請注意

I0416 13:32:23.331906   30581 blockchain.go:1251] imported 256 block(s) (0 
 queued 0 ignored) including 0 txs in 979.938402ms. #6366 [66dcf4c1 / c5d009a1]
I0416 13:32:24.169955   30581 blockchain.go:1251] imported 256 block(s) (0 
 queued 0 ignored) including 0 txs in 836.388044ms. #6622 [e11a3fa9 / d211c2e1]
I0416 13:32:24.974790   30581 blockchain.go:1251] imported 256 block(s) (0 
 queued 0 ignored) including 0 txs in 803.457715ms. #6878 [c9f9ae12 / 238493b8]

這是--fast同步完成並開始正常同步時的過渡:

I0416 17:16:12.631667   30629 blockchain.go:1251] imported 195 block(s) 
 (0 queued 0 ignored) including 0 txs in 1.235990428s. #384 [d707e667 / d3d5d5c1]
I0416 17:16:12.631825   30629 sync.go:180] fast sync complete, auto disabling
I0416 17:16:48.831757   30629 blockchain.go:1251] imported 4 block(s) (0 
 queued 0 ignored) including 0 txs in 12.933585ms. #388 [bbb506ab / 0ace7268]

如何重置我的區塊鏈並執行geth --fast

預設情況下,區塊鏈數據儲存在以下位置(參考備份和恢復):

  • Mac:~/Library/Ethereum/chaindata
  • Linux:~/.ethereum/chaindata
  • Windows:%APPDATA%\乙太坊\chaindata

刪除上面目錄的內容,或將其移動到另一個位置,當您成功同步數據後,刪除舊副本。

刪除目錄中的數據chaindata後,您應該能夠--fast再次同步。

但我確實有一個 GPU,想用它來挖礦

在這種情況下,您將需要另一個類似的應用程序ethminer來在 GPU 上執行探勘操作。geth之間的通信ethminer不通過 IPC 進行。您需要使用以下命令啟用 RPC 通信:

geth --rpc console

geth使用預設值--rpcaddr 127.0.0.1--rpcport 8545. ethminer使用以下命令啟動您的

ethminer -F http://127.0.0.1:8545 -G

-G參數是ethminer使用您的 GPU 執行探勘計算的指令。

在您可以執行上述命令進行探勘之前,您必須創建一個用於支付任何採礦獎勵的帳戶。執行以下命令

geth account new

系統將提示您輸入兩次密碼,然後您就可以執行上面的命令了。

相關問題

版主可能會將此問題標記為重複,因為此站點上有幾個可能相關的問題:

但我希望這是一份更完整的指南,可以幫助您解決同步問題。

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