选型
目前有三类节点是使用最多的,go-ethereum(55%)、parity(22%)、ethereumjs-devp2p(15%),go-ethereum是官方版本,且占比最大,这里就选择go-ethereum来部署
为什么要部署全节点
以太坊有两种节点:全节点、轻节点。全节点存储区块链的全部状态,需要350G的存储空间和8G以上的内存。轻节点只存储最小量的状态,只下载区块头和与其交易相关的默克尔树“分支”,它只需要几百M存储空间和128-512M内存。当发起转账、合约部署的时候,轻节点是不能独立完成的,他需要借助其他全节点以他的名义来操作。这一切本省并没有什么问题,但当遇到交易量急剧上升,区块链升级的时候,它会找不到合适的全节点给它使用。因此我们再业务上使用的时候,建议使用全节点。
在Linux上部署
从官网下载合适的版本(建议选择带tools的版本),并解压到/usr/local/bin
1
2
3
4
5
6
7
8
9
10
11
12[root@blockchain-server01 data]# tar -xzvf geth-alltools-linux-amd64-1.8.15-89451f7c -C /usr/local/bin/ -f
[root@blockchain-server01 data]# geth version
Geth
Version: 1.8.15-stable
Git Commit: 89451f7c382ad2185987ee369f16416f89c28a7d
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.10.4
Operating System: linux
GOPATH=
GOROOT=/home/travis/.gimme/versions/go1.10.4.linux.amd64启动参数:RCP接口
1
2
3
4
5
6
7
8
9
10API AND CONSOLE OPTIONS:
--rpc Enable the HTTP-RPC server
--rpcaddr value HTTP-RPC server listening interface (default: "localhost")
--rpcport value HTTP-RPC server listening port (default: 8545)
--rpcapi value API's offered over the HTTP-RPC interface "db,eth,net,web3,miner,personal"
--ws Enable the WS-RPC server
--wsaddr value WS-RPC server listening interface (default: "localhost")
--wsport value WS-RPC server listening port (default: 8546)
--wsapi value API's offered over the WS-RPC interface
--wsorigins value Origins from which to accept websockets requests启动参数:全局设置
1
2
3ETHEREUM OPTIONS:
--datadir "/Users/zzs/Library/Ethereum" Data directory for the databases and keystore
--syncmode "fast" Blockchain sync mode ("fast", "full", or "light")启动参数:挖矿设置
1
2MINER OPTIONS:
--mine Enable mining启动参数:网络属性
1
2NETWORKING OPTIONS:
--port value Network listening port (default: 30303)启动命令,将geth运行到后台,/data/eth_data用来存放以太坊的数据;启动完毕后在/data/eth_data会产生一个geth.ipc文件,用于进程间的ipc通讯
1
2mkdir /data/eth_data
nohup geth --datadir /data/eth_data --syncmode full --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi eth,net,web3 --ws --wsaddr 0.0.0.0 --wsorigins "*" --wsapi eth,net,web3 &关闭命令
1
2# 或者kill 进程id
kill geth
本地API操作
启动命令行
1
2cd /data/eth_data
geth attach geth.ipc命令行支持的API,这个可以在启动参数上设置
1
2
3
4
5
6
7
8
9
10admin:1.0
debug:1.0
eth:1.0
ethash:1.0
miner:1.0
net:1.0
personal:1.0
rpc:1.0
txpool:1.0
web3:1.0查看同步进程,当eth.syncing返回false的时候表示没开始同步,或者同步已经完毕
1
2
3
4
5cd /data/eth_data
geth attach geth.ipc
# 获取区块高度
> eth.blockNumber
> eth.syncing