Ubuntu 以太坊搭建私有链

一 环境以及软件版本:

1)VMware Workstation 12 Pro

2)Ubuntu 16.04 desktop

3)以太坊geth go语言客户端(Version: 1.8.2-unstable)

4)go语言版本 1.9.4(geth 需要1.7或以上的版本)

二 以太坊geth客户端安装:

1)安装git apt-get install git

2)安装go环境:

   1.解压tar -zxf go1.9.4.linux-amd64.tar.gz -C /usr/local

   2./etc/profile文件中添加环境变量 export PATH=$PATH:/usr/local/go/bin

   3.重新加载一下 source /etc/profile

2)git clone https://github.com/ethereum/go-ethereum 

3)cd go-ethereum && make geth //执行安装

三 开始创建以太坊私有链

1)首先创建一个私有链目录以及配置文件:

 genesis.json:

{ "config":

{ "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },

"coinbase" : "0x0000000000000000000000000000000000000000",

"difficulty" : "0x20000",

"extraData" : "",

"gasLimit" : "0x2fefd8",

"nonce" : "0x0000000000000042",

"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

"timestamp" : "0x00",

"alloc" : {},

}

参数说明:

参数名称                                                         参数描述

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

2)geth init ./genesis.json --datadir "./chain" //创世区块初始化, chain目录是保存区块链网络数据存放的位置

当执行完初始化后,在当前的chain目录下回生成两个目录:

geth中保存的是区块链的相关数据

keystore中保存的是该链条中的用户信息

3)启用私有链:/eth/go-ethereum/build/bin/geth --datadir "./chain" --nodiscover console 2 >> eth_output.log

参数说明: datadir 区块数据存放位置 nodiscover 私有链地址不会被网络上看到 console启用命令行模式

命令行

4)查看账户:(默认是没有账户,图片里是后建的)

查看账户

5)创建账户:(图片括号中的test是密码,这个方法返回的结果是账户地址)

创建账户

6)查看矿工账户以及设置矿工账号(如没有设置矿工账号,系统默认设置eth.accounts中的第一个账户)

设置矿工账户

7)采矿以及查看区块数和账户中币的数量

采矿
Ubuntu 以太坊搭建私有链_第1张图片
采矿返回的结果

8)交易:eth.sendTransaction({from:eth.coinbase, to:eth.accounts[1], value:web3.toWei(3,"ether")});

从矿工账号转账3个以太币到第二个账户,返回结果是账户被锁,需要解锁。

ps:以太坊的一个保护机制,每隔一段时间账户就会自动锁定,这个时候任何以太币在账户之间的转换都会被拒绝,除非把该账户解锁.

账户被锁

账户解锁:

personal.unlockAccount 解锁转账的账号

重新使用转账命令,转账需要矿工挖矿才能转账成功,可以通过txpool.status来验证,如看到pending:1,pending表示已提交但还未被处理的交易;

最后一条命令就是表示转账成功了,账户下有3个以太币。

Ubuntu 以太坊搭建私有链_第2张图片

go下载地址https://studygolang.com/dl

geth下载地址:https://github.com/ethereum/go-ethereum

你可能感兴趣的:(Ubuntu 以太坊搭建私有链)