Synchronization

乙太坊節點卡住,無法同步

  • May 18, 2017

我使用的是 Macbook Pro OS X 版本 10.9.5,無法通過同步階段。“乙太坊節點需要同步,請稍候……”正是提示的內容,但無論我等待多久,它都無法同步。我可以選擇跳過對等搜尋並啟動應用程序,但它不會同步到我的錢包,因此在我的主帳戶中顯示 0 Ether。我在 20 天前下載了該應用程序,現在正四處張貼尋求幫助。任何見解將不勝感激。

這是我要做的:

  • 確保您使用的是最新的乙太坊錢包版本:https ://github.com/ethereum/mist/releases

  • 連接到測試網以驗證一切正常(測試網區塊鏈上的交易應該更少,因此您應該能夠更快地同步)

    • 跳過對等搜尋
    • 應用欄 -> 開發 -> 網路 -> 測試網(現代)

如果您可以在測試網上同步,您就會知道它正在工作。

您可以嘗試的其他事情:

  • 驗證所有依賴項都是最新的。您可能需要重新安裝所有與乙太坊相關的東西。不要忘記備份您的帳戶
  • 檢查你的電腦。建構 DAG 是否有問題?
  • 嘗試與 Geth 連接(它還會同步您並建構 DAG)

下載最新的錢包並執行打包的 Geth

  • 從https://github.com/ethereum/mist/releases下載最新的乙太坊錢包並安裝。
  • 您將在乙太坊錢包安裝目錄下的***./resources/node/geth/子目錄中找到一個geth執行檔。這是連接到乙太坊網路中的對等點以同步區塊鏈的軟體。這是乙太坊錢包目錄和geth***子目錄的 Linux 等效列表:
user@Kumquat:~/Ethereum-Wallet-linux64-0-5-1$ ls -al
total 99520
drwxr-xr-x  4 user user     4096 Apr  2 00:11 .
drwxrwxr-x 10 user user     4096 Apr  8 17:21 ..
-rw-r--r--  1 user user      153 Mar  5 03:33 AUTHORS
-rw-r--r--  1 user user  9215042 Mar  5 03:32 content_shell.pak
-rwxr-xr-x  1 user user 59738392 Mar  5 03:32 Ethereum-Wallet
-rw-r--r--  1 user user 10206624 Mar  5 03:32 icudtl.dat
-rw-r--r--  1 user user  2546072 Mar  5 03:32 libffmpeg.so
-rw-r--r--  1 user user   520152 Mar  5 03:32 libgcrypt.so.11
-rwxr-xr-x  1 user user 17367040 Mar  5 03:32 libnode.so
-rw-r--r--  1 user user    32422 Mar  5 03:33 LICENSE
-rw-r--r--  1 user user  1137248 Mar  5 03:32 LICENSES.chromium.html
drwxr-xr-x  2 user user     4096 Mar  5 03:32 locales
-rw-r--r--  1 user user   439857 Mar  5 03:32 natives_blob.bin
-rw-rw-r--  1 user user       65 Apr  2 00:11 privatekey.txt
-rw-r--r--  1 user user     1987 Mar  5 03:33 README.txt
drwxr-xr-x  3 user user     4096 Mar  5 03:33 resources
-rw-r--r--  1 user user   657164 Mar  5 03:32 snapshot_blob.bin
-rw-r--r--  1 user user        6 Mar  5 03:33 version
user@Kumquat:~/Ethereum-Wallet-linux64-0-5-1$ ls -al resources/node/geth/geth 
-rwxr-xr-x 1 user user 26892984 Mar  5 03:33 resources/node/geth/geth
  • 使用以下命令刪除區塊鏈的舊副本:
rm -rf ~/Library/Ethereum/chaindata
  • 從您的乙太坊錢包安裝目錄,執行命令:
./resources/node/geth/geth --fast console
  • 您應該會看到類似以下消息(我在 Linux 中執行):
I0408 17:21:39.549439   29822 flags.go:425] WARNING: No etherbase set and no accounts found as default
I0408 17:21:39.549604   29822 database.go:71] Alloted 16MB cache to /home/user/EthereumWallet/tmp/chaindata
I0408 17:21:39.719778   29822 database.go:71] Alloted 16MB cache to /home/user/EthereumWallet/tmp/dapp
I0408 17:21:39.721252   29822 backend.go:314] Protocol Versions: [63 62 61], Network Id: 1
I0408 17:21:39.721397   29822 backend.go:362] Blockchain DB Version: 3
I0408 17:21:39.721823   29822 blockchain.go:214] Last header: #0 [d4e56740…] TD=17179869184
I0408 17:21:39.721875   29822 blockchain.go:215] Last block: #0 [d4e56740…] TD=17179869184
I0408 17:21:39.721917   29822 blockchain.go:216] Fast block: #0 [d4e56740…] TD=17179869184
I0408 17:21:39.727628   29822 cmd.go:114] Starting Geth/v1.3.5-34b622a2/linux/go1.6
I0408 17:21:39.727768   29822 server.go:311] Starting Server
I0408 17:21:41.677719   29822 udp.go:212] Listening, enode://2b3f690e2c7c398d5782a5a33d47da9965cf08497299d3b232014fc89b0a8cbdc66d789110f0cb5a047d24aa4e1f9987ebdbcf88108aec035629d3af8b5faba4@[::]:30303
I0408 17:21:41.677903   29822 backend.go:526] Server started
I0408 17:21:41.678055   29822 server.go:552] Listening on [::]:30303
I0408 17:21:41.678340   29822 ipc.go:112] IPC service started (/home/user/EthereumWallet/tmp/geth.ipc)
instance: Geth/v1.3.5-34b622a2/linux/go1.6
datadir: /home/user/EthereumWallet/tmp
coinbase: null
at block: 0 (Thu, 01 Jan 1970 10:00:00 AEST)
modules: admin:1.0 db:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 shh:1.0 txpool:1.0 web3:1.0
> I0408 17:22:01.678243   29822 downloader.go:288] Block synchronisation started
I0408 17:22:06.973046   29822 blockchain.go:889] imported 192 header(s) (0 ignored) in 1.274319263s. #192 [88e96d45… / 723899e8…]
I0408 17:22:06.982296   29822 blockchain.go:1044] imported 2 receipt(s) (0 ignored) in 711.895µs. #2 [88e96d45… / b495a1d7…]
I0408 17:22:09.990297   29822 downloader.go:1102] Rolled back 192 headers (LH: 192->0, FB: 2->0, LB: 0->0)
I0408 17:22:11.778867   29822 blockchain.go:1044] imported 190 receipt(s) (0 ignored) in 36.573252ms. #192 [3d612266… / 723899e8…]

上面的最後五行消息表明,geth已成功連接到乙太坊網路上的其他對等點,並且正在下載區塊鏈數據。


仍然無法正常工作 - 連接故障排除

  • 如果您仍然無法如上一節所示讓區塊鏈同步,則可能是防火牆問題。geth將嘗試通過 Internet與埠30303上的電腦通信。
  • 您是從公司網路還是家庭網路執行它?
  • 是否存在阻止與原始 IP 地址通信的防火牆?
  • 可以通信的埠有什麼限制嗎?
  • 以下是geth最初嘗試與之通信的初始乙太坊引導節點(來自https://github.com/ethereum/go-ethereum/blob/master/eth/backend.go#L71-L78):
defaultBootNodes = []*discover.Node{
   // ETH/DEV Go Bootnodes
   discover.MustParseNode("enode://a979fb57...3331163c@52.16.188.185:30303"), // IE
   discover.MustParseNode("enode://de471bcc...b723c786@54.94.239.50:30303"),  // BR
   discover.MustParseNode("enode://1118980b...f0855082@52.74.57.123:30303"),  // SG
   // ETH/DEV cpp-ethereum (poc-9.ethdev.com)
   discover.MustParseNode("enode://979b7fa2...aa3637f9@5.1.83.226:30303"),
}
  • 讓我們嘗試使用以下命令與第一個 bootnode 伺服器進行通信。在這種情況下,結果顯示連接成功(空回復是因為curl沒有使用與乙太坊 bootnode 伺服器相同的 Discovery 協議進行通信):
user@Kumquat:~/Ethereum-Wallet-linux64-0-5-1$ curl http://52.16.188.185:30303 -o outfile
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
 0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0
curl: (52) Empty reply from server
  • 如果您的網路不允許與乙太坊引導節點伺服器通信,情況如下。我通過提供不正確的 IP 地址來模擬這種情況。花費的時間值只是不斷點擊。您必須按 Control-C 才能退出curl程序:
user@Kumquat:~/Ethereum-Wallet-linux64-0-5-1$ curl http://52.16.188.188:30303 -o outfile
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
 0     0    0     0    0     0      0      0 --:--:--  0:02:03 --:--:--     0^C
user@Kumquat:~/Ethereum-Wallet-linux64-0-5-1$ 
  • 如果您遇到前一點所示的連接問題,如果您想將區塊鏈同步到乙太坊網路,則需要暢通無阻地連接到 Internet

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