• 区块链创世文件出错(二)搭建基于以太坊的Windows私有链


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

    1.准备创世块文件(接下来有诸多试错的问题,可直接翻到第3节上面查看最终创始块配置文件)

    配置自己的创世块是为了区分公有链,同一个网络中,创世块必须是一样的,否则无法联通。

    新建文件fflngenesis.json,输入如下内容并保存,路径随意。

    我的路径是: F:appEthereumBlockchain 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”即表示你区块链网络是正常的



  • 相关阅读:
    面向对象的三大特征
    前端基础----CSS基础概要(四)
    前端基础----CSS概要(三)
    前端基础----CSS概要(二)
    前端基础----CSS基础概要(一)
    计算机基础----常用的快捷键(一)
    前端基础------HTML概要(一)
    计算机基础---常用的应用软件
    计算机的分类
    计算机基础---硬件的组成
  • 原文地址:https://www.cnblogs.com/hushuning/p/12761009.html
Copyright © 2020-2023  润新知