0. 私有区块链网络

在一般的应用场景下,除了大家取挖矿参与之外,还有一种应用场景就是自己创建私有的区块链网路,满足自己特有的业务需求和场景。

1. 下载Geth客户端

官方站点: https://geth.ethereum.org
Github: https://github.com/ethereum/go-ethereum

由于某些未知原因,在尝试官方站点下载geth客户端的时候,下载页面一直在loading状态,基本无法下载相应的安装包,如下图所示:
 这里写图片描述
一般建议大家参照wiki的信息: https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
比如笔者所使用的是Ubuntu系统,可以直接参照wiki的内容进行安装。

2. 在Ubuntu上安装指南

安装指南:

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

当然大家也可以选择从源代码中直接编译安装,具体信息可以参照指南上的信息。

3. 配置创世纪的配置文件

大家可以参照以下配置文件,genesis.json:

{
“nonce”: “0x0000000000000042”,
“timestamp”: “0x00”,
“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x00”,
“gasLimit”: “0x80000000”,
“difficulty”: “0x400”,
“mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x3333333333333333333333333333333333333333”,
“alloc”: { },
“config”:{
“chainId”:15,
“homesteadBlock”:0,
“eip155Block”:0,
“eip158Block”:0
}
}

然后,打开命令行,初始化配置文件.
这里写图片描述

geth –datadir “/home/bladestone/codebase/blocks/chain” init genesis.json

这里介绍一下上述各个参数的功能描述:
- mixhash
与nonce配合用于挖矿,由上一个区块的一部分生成的hash
- nonce
nonce就是一个64位随机数,用于挖矿
- difficulty
设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
- alloc
用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。
- coinbase
矿工的账号,随便填, 说明: 偶数位,且0x开头
- timestamp
设置创世块的时间戳
- parentHash
上一个区块的hash值,因为是创世块,所以这个值是0
- extraData
附加信息,随便填,可以填你的个性信息
- gasLimit
该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

4. 创建私有网络

sudo geth –identity “myfirstblock” –rpc –rpcport “8078” –rpccorsdomain “*” –datadir=”/home/bladestone/codebase/blocks/chain” –port “30303” –nodiscover –rpcapi “db,eth,net, web3” –networkid 1006 init /home/bladestone/codebase/blocks/genesis.json

如下图所示:
这里写图片描述

  • identity
    区块链的标示,随便填写,用于标示目前网络的名字
  • init
    指定创世块文件的位置,并创建初始块
  • datadir
    设置当前区块链网络数据存放的位置
  • port
    网络监听端口
  • rpc
    启动rpc通信,可以进行智能合约的部署和调试
  • rpcapi
    设置允许连接的rpc的客户端,一般为db,eth,net,web3
  • networkid
    设置当前区块链的网络ID,用于区分不同的网络,是一个数字
  • console
    设置当前区块链的网络ID,用于区分不同的网络,是一个数字

5. 启动控制台,创建用户,并开始挖矿

geth –datadir “/home/bladestone/codebase/blocks/chain/” –nodiscover console 2>>geth.log
运行效果图示:
这里写图片描述

进入geth命令行,创建用户,然后启动mine挖矿
接下来,我们查看日志geth.log:
这里写图片描述

从这里可以看出, 创建的私有网络已经开始挖矿了….

6. 总结

 以太坊是目前业界比较成熟的一种基于区块链技术的一种框架,允许开发者在其上二次开放,定制出纷繁精彩的区块链应用,所以这就要求所有的从业者都要思考区块链技术的本质以及应用场景。

7. 参考资料

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐