以太坊私有链环境搭建

Posted stubbornness1219

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊私有链环境搭建相关的知识,希望对你有一定的参考价值。

本文先以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,输入如下内容并保存


  "config":
        "chainId": 10,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    ,
  "alloc"      : ,
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x02000000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"


 解释一下各个参数的作用:

 

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”则证明钱包客户端已经连接到了我们的私有节点。 


以上是关于以太坊私有链环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

以太坊私有链环境搭建

以太坊私有链环境搭建

Windows 10下搭建以太坊私有链环境

如何搭建以太坊私有链

如何搭建以太坊私有链

如何搭建以太坊私有链