网上有很多关于如何搭建以太坊的文章,笔者测试了一下,几乎每一篇文章都无法完整的将以太坊搭建起来,所以笔者将自己如何搭建以太坊的全体过程书写了下来,方便大家进行搭建。
准备工作(依Centos6.5系统为例)
1:首先先更新系统
yum update
2:安装依赖的包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gccperl-ExtUtils-MakeMaker
3:下载git源码并解压缩
wget https://github.com/git/git/archive/v2.3.0.zip
unzip v2.3.0.zip
cd git-2.3.0
4:编译安装
make prefix=/usr/local/git all
make prefix=/usr/local/git install
5:我们要把编译安装的git路径放到环境变量里,让它替换"/usr/bin"下的git。为此我们可以修改“/etc/profile”文件(或者/etc/bashrc文件)。
sudo vim /etc/profile
然后在文件的最后一行,添加下面的内容,然后保存退出。
export PATH=/usr/local/git/bin:$PATH
6:使用source命令应用修改。
source /etc/profile
注意,这里的意思是使用最新的git,如果不是最新的git,后面进行编译时会报错
安装go环境:
wget https://studygolang.com/dl/golang/go1.9.linux-amd64.tar.gz --no-check-certificate
tar -zxvf go1.9.linux-amd64.tar.gz
mv go /usr/local/
echo "export GOROOT=/usr/local/go" >> /etc/profile
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile
这里注意,目前以太坊的最新源码在go1.9.0下编译会出错,所以需要安装1.9.2版本的go
安装go-ethereum
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum/
gmake all
echo "export PATH=$PATH:$PWD/build/bin" >> /etc/profile
source /etc/profile
部署以太坊私有链
创世服务器搭建
1:创建创世服务器信息并保存成genesis.json(此处的文件名可以随便定义)
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {
"0xbdda794a097b41309700fdc5bdba880a7763c738": {
"balance": "1000"
}
},
"nonce": "0x0000000000000042",
"difficulty": "0x020000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit": "0xffffffff"
}
2:将可执行文件和创世文件上传至目录(例如:/projects/ethereum/geth)
3:导入创世文件
geth --datadir "/projects/ethereum/geth/node" init genesis.json
4:启动创世块
nohup geth --nodiscover \
--maxpeers 3 \
--identity "otvcloud private etherum" \
--rpc \
--rpccorsdomain "*" \
--datadir "/projects/ethereum/geth/node" \
--port 30303 \
--rpcapi "db,eth,net,web3" \
--networkid 96579 &
5:进入创世服务器控制台
geth attach ipc:/projects/ethereum/geth/node/geth.ipc
6:查询创世服务器信息
指令:
admin.nodeInfo
返回:
{
enode: "enode://069e5891756044331f3fc138710417e2988ea8e133f32e351ec4b06556ebff030f6d5a91ba511bb630b629e302a5efe969b96ef6b0d9cb337e18afe24e77e398@[::]:30303?discport=0",
id: "069e5891756044331f3fc138710417e2988ea8e133f32e351ec4b06556ebff030f6d5a91ba511bb630b629e302a5efe969b96ef6b0d9cb337e18afe24e77e398",
ip: "::",
listenAddr: "[::]:30303",
name: "Geth/otvcloud private etherum/v1.8.2-unstable-a1984ce7/linux-amd64/go1.9.2",
ports: {
discovery: 0,
listener: 30303
},
protocols: {
eth: {
config: {
chainId: 0,
eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
eip155Block: 0,
eip158Block: 0,
homesteadBlock: 0
},
difficulty: 131072,
genesis: "0xc3a1a0f0a2b2d9ea646798a69e0c165fa86af1c3ebe2e862c3dbb4e64803a018",
head: "0xc3a1a0f0a2b2d9ea646798a69e0c165fa86af1c3ebe2e862c3dbb4e64803a018",
network: 95518
}
}
}
节点服务器搭建
搭建创世服务器的过程,重新在节点服务器中进行操作。
7:添加创世服务器节点信息
指令:
admin.addPeer("enode://069e5891756044331f3fc138710417e2988ea8e133f32e351ec4b06556ebff030f6d5a91ba511bb630b629e302a5efe969b96ef6b0d9cb337e18afe24e77e398@115.159.34.126:30303")
返回:
True
这里的enode是创世服务器通过admin.nodeInfo指令查找出来的enode:信息
8:在创世服务器上添加节点服务器信息
指令:
admin.addPeer("enode://069e5891756044331f3fc138710417e2988ea8e133f32e351ec4b06556ebff030f6d5a91ba511bb630b629e302a5efe969b96ef6b0d9cb337e18afe24e77e398@115.159.34.126:30303")
返回:
True
这里的enode是节点服务器通过admin.nodeInfo指令查找出来的enode:信息
9:查看节点信息
指令
admin.peers
10:创建新的帐号:
指令:
personal.newAccount()
Passphrase:
Repeat passphrase:
11:开始挖矿:
(1):设置挖矿工的帐号指令:
miner.setEtherbase(eth.accounts[0])
(2):开始挖矿
miner.start()
(3):查看矿工帐号收入
eth.getBalance(eth.accounts[0])
(4)查看此时区块链上的块数
eth.blockNumber
(5)查看区块信息
eth.getBlock(160)
添加环境变量:
1:执行 vi ~/.bash_profile,添加下面代码:
export GETH=/projects/ethereum/geth
export PATH=$PATH:$GETH
2:执行 source ~/.bash_profile 使之生效。
3:执行 geth version 查看是否生效
网友评论