Go-Ethereum

在同一台電腦上設置兩個本地節點的問題

  • September 29, 2016

我在同一台電腦上將兩個本地節點設置為不同的使用者(兩個不同的會話)。問題是我不能讓他們成為同齡人。

喚醒主節點的命令:

geth    --identity "MainNode" \
       --rpc \
       --rpcport 8000 \
       --rpccorsdomain "*" \
       --datadir "/home/ubuntu/ethereum" \
       --port "30303" \
       --nodiscover \
       --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" \
       --rpcapi "db,eth,net,web3" \
       --autodag \
       --networkid 10165211 \
       --nat "any" console init /home/ubuntu/ethereum/CustomGenesis.json

喚醒第二個節點的命令:

geth    --identity "My Node" \
       --rpc \
       --rpcport 8001 \
       --rpccorsdomain "*" \
       --datadir "/home/xxxx/ethereum" \
       --port "30304" \
       --nodiscover \
       --ipcdisable \
       --rpcapi "db,eth,net,web3" \
       --autodag \
       --networkid 10165211 \
       --nat "any" console init /home/xxxx/ethereum/CustomGenesis.json

但是當我啟動節點時,我使用命令 admin.nodeInfo 我在第一個節點中找到了這個:

admin.nodeInfo
{
 enode: "enode://34f8ec977f25f4a85d4d7debac748fd82851b75ca670b2ece234c9a26a493fb995fca0021b9eee6cb2ccfa98a934cdb4a8590e4a4140a1077575f94a82468129@[::]:30303?discport=0",
 id: "34f8ec977f25f4a85d4d7debac748fd82851b75ca670b2ece234c9a26a493fb995fca0021b9eee6cb2ccfa98a934cdb4a8590e4a4140a1077575f94a82468129",
 ip: "::",
 listenAddr: "[::]:30303",
 name: "Geth/v1.4.12-stable/linux/go1.5.1/MainNode",
 ports: {
   discovery: 0,
   listener: 30303
 },
 protocols: {
   eth: {
     difficulty: 17179869184,
     genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
     head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
     network: 10165211
   }
 }
}

而這,在第二個:

admin.nodeInfo
{
 enode: "enode://34f8ec977f25f4a85d4d7debac748fd82851b75ca670b2ece234c9a26a493fb995fca0021b9eee6cb2ccfa98a934cdb4a8590e4a4140a1077575f94a82468129@[::]:30304?discport=0",
 id: "34f8ec977f25f4a85d4d7debac748fd82851b75ca670b2ece234c9a26a493fb995fca0021b9eee6cb2ccfa98a934cdb4a8590e4a4140a1077575f94a82468129",
 ip: "::",
 listenAddr: "[::]:30304",
 name: "Geth/v1.4.12-stable/linux/go1.5.1/My Node",
 ports: {
   discovery: 0,
   listener: 30304
 },
 protocols: {
   eth: {
     difficulty: 1024,
     genesis: "0x1a8c903ab9d8b7bec7ba8b15dab33a3418c90dbf8f73ec3086d34b4e17e017e6",
     head: "0x1a8c903ab9d8b7bec7ba8b15dab33a3418c90dbf8f73ec3086d34b4e17e017e6",
     network: 10165211
   }
 }
}

即使 CustomGenesis.json 文件是彼此(完全)的純副本,我們也可以看到一些奇怪的東西:

  • 在這兩種情況下,enode ID 都是相同的。不應該。
  • 埠更改(顯然必須這樣做)。沒關係。
  • 難度不一樣,應該一樣。
  • 創世雜湊和頭部不一樣。我想他們應該是。

我確定不是 Genesis.json 文件問題,因為我什至嘗試對兩個節點使用相同的文件,但我在這裡解釋的相同發生在我身上。

關於錯誤/錯誤/錯誤在哪裡的任何想法?

謝謝你。

我的解決方案:

發生這種情況時,它可能似乎是某些數據的損壞。該解決方案就像刪除每個 datadir 和子文件夾一樣簡單。這將意味著您從零開始(或保存一些數據,如果您之前備份它們,則作為帳戶保存)但它有效。

就我而言:

sudo rm -r /home/ubuntu/ethereum/
sudo rm -r /home/ubuntu/.ethereum/
sudo rm -r /home/xxxx/ethereum

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