准备工作,参考上一篇文章
- 已经准备好服务器
- 已经安装好geth工具链
结构设计
- 以太坊支持两种共识机制:POW和POA,使用POW没有足够的算力,会丧失自主权,所以私链一般使用POA
- 总体结构为:1个bootnode、3个挖矿节点、2个rpc节点
- 1个bootnode,挖矿节点和rpc节点都从bootnode进入到私有链中,比直接去相互连接更加方便
- 3个挖矿节点,可以容错一个节点停机,因为需要半数以上的节点存活才能继续挖矿
- 2个rpc节点,也是为了容错
部署
启动bootnode节点
1
2
3
4
5# 生成bootnode的key,会在当前目录下生成string对应的私钥文件
bootnode -genkey string
# 启动bootnode,string指向key filename
bootnode -nodekey string
# 启动后会看到有关bootnode的日志,如“enode://xxxxxxx@ip:port”生成一批帐号,3个帐号用来挖矿,1个存储货币,以及用于其他业务帐号
1
2# 在当前目录下创建帐号,根据提示输入钱包密码,在本地会在keystore目录下生成一个UTC--xxx的钱包文件
./geth account new生成创世配置,使用以太坊自带的puppeth工具,
1
2
3
4
5
6puppeth
# 配置配置名字,如输入x_poa就会生成x_poa.json文件
# 设置共识机制POA,对应关键词是“clique”
# 配置networkid
# 允许挖矿的帐号地址
# 配置发行货币量,以及货币存到哪个帐号上启动挖矿节点
1
2
3
4# 初始化节点
geth --datadir /miner0.d init x_poa.json
# 启动节点
geth --datadir /miner0.d --networkid 1024 --bootnodes enode://83789b30dd3d091bad865c1ab14c12bf28eabf7babe291965e2e9beffaa79f2e55fb2e63f5ff8f7f25483fe85b8803d0101dbf87b11e46e614d6ddc7100955c2@172.20.0.56:30301 --unlock 0x6df176a7f059223715121d7cd3c75b87f46cdca2 --password node0.d/.password --mine --minerthreads=1 --gasprice 1 console启动RPC节点
1
2
3
4# 初始化节点
geth --datadir /node0.d init x_poa.json
# 启动节点
./geth --datadir /node0.d --networkid 1024 --bootnodes enode://83789b30dd3d091bad865c1ab14c12bf28eabf7babe291965e2e9beffaa79f2e55fb2e63f5ff8f7f25483fe85b8803d0101dbf87b11e46e614d6ddc7100955c2@172.20.0.56:30301 --rpc --rpcaddr 0.0.0.0 --rpccorsdomain * --rpcapi eth,net,web3 --ws --wsaddr 0.0.0.0 --wsorigins * --wsapi eth,net,web3 --ipcdisable --gasprice 1 console
POA共识添加和删除旷工
1 | # 查看挖矿节点 |