Go-Ethereum
無法使用 geth 創建私有測試網。nodeInfo.genesis 屬於主網
我正在嘗試使用 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 個命令:console
和init
. 它和第一個一起去了。那麼,您如何保留嚴格必要的內容並
console
刪除"
:geth --datadir /home/dev1admin/ethereum/private_test1/chain --verbosity 5 init /home/dev1/ethereum/private_test1/CustomGenesis.json
您分配乙太幣的帳戶已經存在,它才能通過創世文件播種。帳戶位於區塊鏈之外(Geth 將它們儲存在 datadir/keystore 文件夾中),因此您可以在一個區塊鏈中創建它們並將它們複製到另一個
這是一個可能的工作流程:
- 使用您的自定義創世文件和數據目錄啟動 geth
- 通過 personal.newAccount() 創建帳戶
- 使用您在 #2 中創建的帳戶更新 genesis 文件
- 刪除datadir/geth目錄
- 使用您的自定義創世紀文件和數據目錄再次啟動 geth
你可能會發現我的 github 儲存庫對設置私有乙太坊網路很有幫助: