以太坊作为区块链2.0的时代先锋,也是目前最有潜力的项目。
本文基于centos7系统搭建以太坊开发环境。
- 依赖搭建
git、wget、vim、gcc-c++、ntp组件、nodejs以及添加epel第三方安装源。部分说明:
# gcc-c++:c/c++编译工具,用于golang下部分c库的编译以及truffle组件的编译
# ntp:网络时钟同步组件;Ethereum的rpc网络需要时间同步;
# nodejs:ethereum前端开发JavaScript包管理软件
# epel:网络第三方的linux安装包源
yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y
- Go 开发语言安装(language 1.9.x)
Go语言官网(https://studygolang.com/dl)下载最新的go包
wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
配置go环境变量
vi /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/opt/gopath
立即生效配置文件
source /etc/profile
查看go 版本
go version
- 克隆编译go-ethereum
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make all
- 配置环境变量
echo "export PATH=$PATH:/server/go-ethereum/go-ethereum/build/bin" >> /etc/profile
立即生效配置文件
source /etc/profile
5.安装cmake:智能合约编译solc需cmake编译 (版本要求:3.0.x +)
去官网(https://cmake.org/download/)下载最新版本
wget https://cmake.org/files/v3.13/cmake-3.13.0-rc3.tar.gz
解压并编译并安装
tar -xzvf cmake-3.13.0-rc3.tar.gz
cd cmake-3.13.0-rc3
./bootstrap && make && make install
6.启动网络时间同步,时间很重要
systemctl enable ntpd
systemctl start ntpd
- 配置geth私有的创世纪的配置文件:genesis.json,该文件描述了如何初始化一个私有的gethereum
vim genesis.json
{
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x80000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",
"alloc": {},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
参数名称 参数描述
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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。
- 创建私有网络的gethereum
cd root & geth --datadir "/data/ethbase/chain" init genesis.json
9.启用私有链
geth --dev console 2>> geth_dev_log
这种方式启动一个开发环境,每次账户都会创建一个新的;
另一种方式启动一个不被发现的虚拟环境
geth --datadir "/data/ethbase/chain" --nodiscover console 2>>eth_output.log
退出使用exit
建议写成脚本,避免遗忘:
vi start-dev.sh
#!/bin/bash
geth --datadir "/data/ethbase/chain" --nodiscover console 2>>eth_output.log
chmod 777 start-dev.sh
私有链搭建完成
- 简单命令(命令行都是通过脚本或命令进入)
查看账户
web3.eth.accounts
创建账户:密码123456
web3.personal.newAccount("123456")
效果如下:
image.png
网友评论