Go-Ethereum

無法使用 geth 創建私有測試網。nodeInfo.genesis 屬於主網

  • January 29, 2017

我正在嘗試使用 geth 創建我的私人測試網。但是,即使我使用 json 文件中的 CustomGenesis 塊,當我啟動 geth 並執行 admin.nodeInfo 時,Genesis 和 head 雜湊都是主網路的。

這是 CustomGenesis.json:-

{
"nonce": "0x0ae067964324234907200d849",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x16d38897146fb767e709386f416bbc88aed53171",
"alloc": {
   "0x16d38897146fb767e709386f416bbc88aed53171": {
           "balance": "10000000000000000000"
   }
}
}

這是我用來啟動我的私人測試網的命令:-

geth --identity "Dev1" --datadir "/home/dev1admin/ethereum/private_test1/chain" --port "30304" --nodiscover --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpcapi "db,eth,net,web3" --autodag --networkid 1729 --nat "none" --verbosity 5 console init "/home/dev1/ethereum/private_test1/CustomGenesis.json"

admin.nodeInfo 命令的輸出:-

{
enode:"enode://0e576e1aa07d4ee4ea7fc34fe7a0e46ef16f9b835ce58b76dd7b675eea67d7546c3daf3b3115badabc24235d1056c508b108ba7d0f88bbf3687edae5db9165f7@[::]:30304?discport=0",
id: "0e576e1aa07d4ee4ea7fc34fe7a0e46ef16f9b835ce58b76dd7b675eea67d7546c3daf3b3115badabc24235d1056c508b108ba7d0f88bbf3687edae5db9165f7",
ip: "::",
listenAddr: "[::]:30304",
name: "Geth/Dev1/v1.5.5-stable-ff07d548/linux/go1.7.3",
ports: {
discovery: 0,
listener: 30304
},
protocols: {
eth: {
 difficulty: 17179869184,
 genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
 head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3",
 network: 1729
}
}
}

我不想將 –dev 選項與 geth 一起使用,因為我想預先分配一些乙太幣。此外,僅使用網路 ID 來區分網路對我來說似乎是錯誤的(我還希望能夠設置自定義隨機數以確保除非他們知道我的隨機數,否則沒有其他人連接到我的網路)。

init的 is 命令超長。這使您沒有註意到您給了 Geth 2 個命令:consoleinit. 它和第一個一起去了。

那麼,您如何保留嚴格必要的內容並console刪除"

geth --datadir /home/dev1admin/ethereum/private_test1/chain --verbosity 5 init /home/dev1/ethereum/private_test1/CustomGenesis.json

您分配乙太幣的帳戶已經存在,它才能通過創世文件播種。帳戶位於區塊鏈之外(Geth 將它們儲存在 datadir/keystore 文件夾中),因此您可以在一個區塊鏈中創建它們並將它們複製到另一個

這是一個可能的工作流程:

  1. 使用您的自定義創世文件和數據目錄啟動 geth
  2. 通過 personal.newAccount() 創建帳戶
  3. 使用您在 #2 中創建的帳戶更新 genesis 文件
  4. 刪除datadir/geth目錄
  5. 使用您的自定義創世紀文件和數據目錄再次啟動 geth

你可能會發現我的 github 儲存庫對設置私有乙太坊網路很有幫助:

https://github.com/chafey/ethereum-private-network

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