您的位置:首页 > 其它

区块链研究(二)搭建基于以太坊的Windows私有链

2018-02-13 20:07 295 查看
1.准备创世块文件
配置自己的创世块是为了区分公有链,同一个网络中,创世块必须是一样的,否则无法联通。

新建文件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大括号后面的逗号,不需要的。


删除最后一个多余的逗号,继续执行,终于成功!


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文件夹和里面的文件即可。当使用输入日志的方式时,可以输入命令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”即表示你区块链网络是正常的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息