本文先以Windows为例,后面上线到Ubuntu,再补充Ubuntu的搭建方法。
Windows必须64位系统,从官方网站下载编译好的win64客户端,解压缩即可运行,下载地址如下:
http://upyun-assets.ethfans.org/geth/1-7-3/geth-windows-amd64-1.7.3-4bb3c89d.exe
下载后,只有一个Geth.exe的文件。
安装图像化客户端Ethereum-Wallet,依然是从官方地址下载编译好的客户端即可,下载地址:
http://upyun-assets.ethfans.org/wallets/0-9-3/Ethereum-Wallet-installer-0-9-3.exe
下载解压缩后,Ethereum-Wallet即为以太坊图形化界面。
配置自己的创世块是为了区分公有链,同一个网络中,创世块必须是一样的,否则无法联通,此方法在windows和Ubuntu下通用。
在Geth安装目录 新建文件genesis.json,输入如下内容并保存
{
解释一下各个参数的作用:
mixhash |
与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。. |
nonce |
nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。 |
difficulty |
设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度 |
alloc |
用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。 |
coinbase |
矿工的账号,随便填 |
timestamp |
设置创世块的时间戳 |
parentHash |
上一个区块的hash值,因为是创世块,所以这个值是0 |
extraData |
附加信息,随便填,可以填你的个性信息 |
gasLimit |
该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。 |
四、 启动私有链节点
启动Geth即可以启动以太坊的区块链,为了构建私有链 ,需要在Geth启动时加入一些参数,Geth参数含义如下:
identity |
区块链的标示,随便填写,用于标示目前网络的名字 |
init |
指定创世块文件的位置,并创建初始块 |
datadir |
设置当前区块链网络数据存放的位置 |
port |
网络监听端口 |
rpc |
启动rpc通信,可以进行智能合约的部署和调试 |
rpcapi |
设置允许连接的rpc的客户端,一般为db,eth,net,web3 |
networkid |
设置当前区块链的网络ID,用于区分不同的网络,是一个数字 |
console |
启动命令行模式,可以在Geth中执行命令 |
cmd 进入到Geth目录,输入命令
geth –datadir “%cd%\chain” init genesis.json 将创世块信息初始化
键入 geth –datadir “%cd%\chain” console 打开geth的控制台
在控制台键入 personal.newAccount(‘123.abc’) 创建用户 123.abc 为用户的密码,自定义即可(该用户用来启动私有链时的矿工)
键入 exit 退出geth控制台
键入 geth –targetgaslimit 4294967295 –rpc –rpcaddr “192.168.0.108” –rpcport “8101” –port “30301” –rpcapi “eth,web3,personal” –networkid 2016 –identity 2016 -nodiscover -maxpeers 5 –datadir “%cd%\chain” -unlock 0 -rpccorsdomain “*” –mine console 启动私有链节点
注释
targetgaslimit –每个块的gas上限,这里可以暂时理解为容量 rpc –启动rpc通信,可以进行智能合约的部署和调试 rpcaddr –rpc接口的地址 rpcport –rpc接口的端口号 port –网络监听端口,用于节点之间通信 rpcapi –设置rpc的范围,暂时开启eth,web3,personal足够 networkid –设置当前区块链的网络ID,是一个数字,可以随便写 identity –区块链的标示,随便填写,用于标示目前网络的名字 nodiscover 禁止被网络中其它节点发现,需要手动添加该节点到网络 maxpeers 最大节点数量 datadir –设置当前区块链网络数据存放的位置 unlock –解锁某用户(此处用用户坐标来控制,解锁后的用户调用接口发起交易时,不要需要提供密码) rpccorsdomain 限制rpc访问源的ip,代表不限制 mine 允许挖矿 console –启动命令行模式,可以在Geth中执行命令*
键入回车
命令行中出现Passphrase:
键入 刚才创建用户是定义的密码
然后等待出现类似如下信息时:
I1208 17:49:49.023354 ethash.Go:291] Generating DAG: 0%
I1208 17:49:55.636941 ethash.go:291] Generating DAG: 1%
I1208 17:50:01.952089 ethash.go:291] Generating DAG: 2%
I1208 17:50:08.887566 ethash.go:291] Generating DAG: 3%
I1208 17:50:15.176846 ethash.go:291] Generating DAG: 4%
I1208 17:50:21.314108 ethash.go:291] Generating DAG: 5%
I1208 17:50:27.396949 ethash.go:291] Generating DAG: 6%
则证明开始创建创世块,等待进度至100%后,便会开始挖矿了。
这时,解压以太坊钱包到任意目录(本文以d盘ethwallet为例)
打开ethwallet文件夹,运行Ethereum-Wallet.exe
出现如下画面
关闭该窗口
出现如下窗口
如果右上角出现“PRIVATE-NET”则证明钱包客户端已经连接到了我们的私有节点。