区块链学习(三)linux下搭建以太坊私有链环境

参考文章地址:http://blog.csdn.net/sportshark/article/details/51855007

搭建环境:Ubuntu

具体的安装可以参考官方指南:

https://github.com/ethereum/Go-ethereum/wiki/Building-Ethereum

一:进入ubuntu终端命令行:

分别输入:

sudo apt-get installsoftware-properties-common

sudo add-apt-repository -yppa:ethereum/ethereum

sudo add-apt-repository -yppa:ethereum/ethereum-dev

sudo apt-get update

sudo apt-get install ethereum

系统联网执行完命令后就会完成安装,完成安装后,输入geth命令,可以看到geth启动的信息(连接的是公有链)。或者输入geth --help

如果现实出命令行各种参数提示信息,则说明安装成功。

注意:如果安装过程中出错,不要灰心急于放弃,阅读其出错信息,然后解决它,然后继续安装,一般出错都是由于需要依赖其他组件,则先安装其他组件。

二:创世块:

在以上安装成功之后,直接启动,即可连接公有链。现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。

创建一个eth的根目录的文件夹,在根目录下新建创世块json文件piccgenesis.json。内容如下:

{

"nonce":"0x0000000000000042",

"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"difficulty": "0x4000",

"alloc": {},

"coinbase":"0x0000000000000000000000000000000000000000",

"timestamp": "0x00",

"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"extraData":"SecBroBlock",

"gasLimit":"0x0000ffff"

}

参数解释:

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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

切换到刚刚存放piccgenesis.json的目录中:执行以下命令:

basepath=$(cd `dirname $0`; pwd)

获取当前的目录

geth --datadir "$basepath/chain"init piccgenesis.json

创建数据存放地址并初始化创世块

geth --identity"PICCetherum" –rpc--rpccorsdomain "*" --datadir "$basepath/chain" --port"30303" --rpcapi "db,eth,net,web3" --networkid 95518console

命令解释:

参数名称         参数描述

identity    区块链的标示,随便填写,用于标示目前网络的名字

init   指定创世块文件的位置,并创建初始块

datadir     设置当前区块链网络数据存放的位置

port 网络监听端口

rpc   启动rpc通信,可以进行智能合约的部署和调试

rpcapi       设置允许连接的rpc的客户端,一般为db,eth,net,web3

networkid         设置当前区块链的网络ID,用于区分不同的网络,是一个数字

console     启动命令行模式,可以在Geth中执行命令

启动成功如下:



启动了节点后,就进入了geth命令行模式,输入personal.newAccount() 根据提示输入密码就会给你新建了一个账户。

三:连接其他节点:

         五:连接其他节点:

首先要知道自己的节点信息,在Geth命令行界面下输入命令,注意大小写

admin.nodeInfo

系统会显示

enode:"enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@0.0.0.0:30303“

其中

enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@0.0.0.0:30303

就是自己节点的信息,注意要把”0.0.0.0”换成你自己的IP。将这个信息发送给其他节点,在其他节点的命令行中输入:

admin.addPeer(‘enode://1e3c1727cd3bee9f25edeb5dbb3b880e03e41f8eec99566557f3ee0422734a8fcad17c161aa93d61bdbfb28ed152c143c7eb501db58bc63502a104a84b62d742@192.168.1.101:30303’)

如果添加成功,输入admin.peers会显示出新添加的节点。

六:

开始挖矿的命令:

miner.start()

结束挖矿:

Miner.stop()

猜你喜欢

转载自blog.csdn.net/striver_jt/article/details/68490921