快速同步後 Geth 節點從頭開始同步
我已經使用
--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
系統將提示您輸入兩次密碼,然後您就可以執行上面的命令了。
相關問題
版主可能會將此問題標記為重複,因為此站點上有幾個可能相關的問題:
但我希望這是一份更完整的指南,可以幫助您解決同步問題。