以太坊:Go-Ethereum: 编译运行

安装Golang

go-ethereum 需要go版本不低于 1.7, 文章最后介绍了如何卸载低版本的go

sudo add-apt-repository -y ppa:gophers/archive
sudo apt-get update
sudo apt-get install -y golang-1.10-go

sudo ln -s /usr/lib/go-1.10/bin/go /usr/bin/go 通过软链的方式把go 放到全局环境变量中

查看go版本 go version

编译Ethereum

git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
git checkout v1.8.0
make geth #编译

生成 执行文件 ./build/bin/geth

运行

./build/bin/geth

INFO [03-12|21:50:36] Maximum peer count                       ETH=25 LES=0 total=25
INFO [03-12|21:50:36] Starting peer-to-peer node               instance=Geth/v1.8.0-stable/linux-amd64/go1.10
INFO [03-12|21:50:36] Allocated cache and file handles         database=~/.ethereum/geth/chaindata cache=768 handles=512
INFO [03-12|21:50:36] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Engine: ethash}"
INFO [03-12|21:50:36] Disk storage enabled for ethash caches   dir=~/.ethereum/geth/ethash count=3
INFO [03-12|21:50:36] Disk storage enabled for ethash DAGs     dir=~/.ethash               count=2
INFO [03-12|21:50:36] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [03-12|21:50:36] Loaded most recent local header          number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [03-12|21:50:36] Loaded most recent local full block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [03-12|21:50:36] Loaded most recent local fast block      number=0 hash=d4e567…cb8fa3 td=17179869184
INFO [03-12|21:50:36] Loaded local transaction journal         transactions=0 dropped=0
INFO [03-12|21:50:36] Regenerated local transaction journal    transactions=0 accounts=0
INFO [03-12|21:50:36] Starting P2P networking 
INFO [03-12|21:50:36] Mapped network port                      proto=udp extport=30303 intport=30303 interface=NAT-PMP(192.168.1.1)
INFO [03-12|21:50:36] UDP listener up                          self=enode://67d9b38f8a2f9874ef60d53a52492efecaaad5f662d08ef@192.168.1.1:30303
INFO [03-12|21:50:36] RLPx listener up                         self=enode://67d9b38f8a2f9874ef60d53a52492efecaaad5f662d08ef@192.168.1.1:30303
INFO [03-12|21:50:36] IPC endpoint opened                      url=~/.ethereum/geth.ipc
INFO [03-12|21:50:36] Mapped network port                      proto=tcp extport=30303 intport=30303 interface=NAT-PMP(192.168.1.1)

设定datadir 并后台运行

nohup ./build/bin/geth --datadir /mnt/eth &

##移动 geth
sudo mv ./build/bin/geth /usr/local/bin/

同步方式

eth有三种同步方式:

--syncmode 'fast'   Blockchain sync mode ('fast' 'full or 'light')

默认是 fast, 如果同步全部数据 geth --syncmode full

##守护进程

geth Ethereum node to run automatically on Ubuntu

#/etc/supervisor/conf.d/gethd.conf

[program:gethd]
command=/usr/local/bin/geth --datadir /mnt/eth/data --syncmode full --rpc
user=deployer # deployer用户启动任务
autostart=true
autorestart=true
stderr_logfile=/mnt/eth/data/geth_err.log
stdout_logfile=/mnt/eth/data/geth.log

sudo supervisorctl reload

卸载Golang

sudo apt-get remove golang-go
sudo apt-get remove --auto-remove golang-go

参考:

https://github.com/golang/go/wiki/Ubuntu
https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

上一篇:Ethereum学习之路 —— 交易树和收据树


下一篇:区块链入门到实战(18)之以太坊(Ethereum) – 什么是智能合约