區塊鏈創世文件出錯(二)搭建基於以太坊的Windows私有鏈


區塊鏈研究(二)搭建基於以太坊的Windows私有鏈

1.准備創世塊文件(接下來有諸多試錯的問題,可直接翻到第3節上面查看最終創始塊配置文件)

配置自己的創世塊是為了區分公有鏈,同一個網絡中,創世塊必須是一樣的,否則無法聯通。

新建文件fflngenesis.json,輸入如下內容並保存,路徑隨意。

我的路徑是: F:\app\Ethereum\Blockchain Env\

{


    "nonce":"0x0000000000000042",


    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",


    "difficulty": "0x4000",


    "alloc": {},


    "coinbase":"0x0000000000000000000000000000000000000000",


    "timestamp": "0x00",


    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",


    "extraData": "FFLN GenesisBlock",


    "gasLimit":"0xffffffff"


}

 


解釋一下各個參數的作用:

 

2.創建創世區塊

命令行進入fflngenesis.json存放地址目錄,輸入命令geth --datadir "./" init fflngenesis.json

 

出現錯誤“Fatal: invalid genesis file: json: cannot unmarshal hex string without 0x prefix

 into Go struct field Genesis.extraData of type hexutil.Bytes”

百度翻譯結果:“致命錯誤:無效的成因:JSON數據文件:不能沒有0x前綴字符串

去hexutil型結構genesis.extradata字節領域。”

修改fflngenesis.json的extraData域為"0x00000000",保存后重新輸入命令,又報錯

 

Fatal: Failed to write genesis block: genesis has no chain configuration

這是版本問題。Geth1.6(含)以上需要配置config域

 

保存后再次輸入命令,結果又報錯,崩潰。

 

再看錯誤日志,原來是忘記加逗號,無語...

Fatal: invalid genesis file: invalid character '"' after object key:value pair

加入逗號后再次執行

 

接着報錯:

 

Fatal: invalid genesis file: invalid character '}' looking for beginning of object key string

嗯,config大括號后面的逗號,不需要的。

 

刪除最后一個多余的逗號,繼續執行,終於成功!

 

正確配置文件:

{
"nonce":"0x0000000000000042",


"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",


"difficulty": "0x4000",


"alloc": {},


"coinbase":"0x0000000000000000000000000000000000000000",


"timestamp": "0x00",


"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",


"extraData": "0x00000000",


"gasLimit":"0xffffffff",

"config":{
"chainId": 666,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}

3.創建私有鏈

輸入命令:geth --datadir "./" --nodiscover console 2>>geth.log

 

當看到Welcome to the Geth JavaScript console!的提示,說明已經啟動成功

4.在私有鏈上創建賬戶

輸入命令:personal.newAccount("123456")

"123456"表示此賬號的密碼.

 

輸入命令eth.accounts可以查看新賬戶

 

這樣,通過這兩個命令可以創建出多個用戶出來

若輸入命令:personal.newAccount()

則系統會提示你輸入賬號密碼,並確認,最后會顯示一個新生成的賬號

 

5.挖礦

輸入命令:miner.start() 或者miner.start(1) 

后者表示只使用一個線程工作,這樣系統不會太卡

 

出現null是因為在第3步:創建私有鏈時設置了結果輸出到日志,所以無法顯示。這時可以退出重來,不設置輸出到日志

輸入命令:exit 

 

然后再輸入:geth --datadir "./" --nodiscover console 2

再輸入:miner.start()  進行挖礦

 


注意點:
1. 挖礦挖到的ether幣會默認保在第一個賬戶中,即eth.acccounts[0]中。
2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止生成,所有智能合約的調用也會不起作用。
3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦
4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的數據。即刪除Ethash文件夾和里面的文件即可。(Windows:$(HOME)/Appdata/Ethash,Linux/Mac:$(HOME)/.ethash)
當使用輸入日志的方式時,可以輸入命令tail -f geth.log 來跟蹤挖礦進度如何

 

如果tail  -f 命令無效,出現錯誤

 

則可查看此文解決:http://www.cnblogs.com/hantianwei/archive/2012/03/14/2395634.html

6.查看主賬戶中以太幣的數量

輸入命令: eth.getBalance(eth.accounts[0]) 結果不為0,說明挖礦成功

 

7.啟動windows下私有鏈圖形節點

打開安裝好的Ethereum Wallet.exe,這時會有一段漫長的Downloading new node...

 

如果一直down不下來,推薦查看此文,或許有所收獲。

地址:http://blog.csdn.net/fengmm521/article/details/78446520

主頁面如下:

 

可以看到,主賬戶有了5620個以太幣。上方紅色的字體“PRIVATE-NET”即表示你區塊鏈網絡是正常的




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM