主页 > imtokendapp授权 > 以太坊POA共识私有联盟链的建立
以太坊POA共识私有联盟链的建立
以太坊POA共识私有联盟链的建立使用geth客户端配置部署多机联盟链
更多区块链技术及应用分类:
区块链应用 区块链开发
其他链条
代币经济|
基本环境
主机节点-----> IP
主机节点 1 172.27.83.194
主机节点 2 172.27.83.114
主机节点 3 172.27.83.115
配置链接
进入主机节点1以太坊创建时间,创建必要的文件,然后分发到其他节点。
下载最新源码
进入go-ethereum目录
make all
sudo ln -s $PWD/build/bin/* /usr/local/bin/
创建目录并生成秘钥
在/home/user_dev/wanghaoyi/privateEthereum目录下执行
mkdir bootdir
mkdir boot1
mkdir boot2
cd bootdir
bootnode --genkey boot.key
bootnode --nodekey=boot.key -verbosity 9
展示
enode://214bb2e74a4f4b5a79d685b2bc1118fe55689c2c80db8f72ab21fe37c89091e05a90de2252a1c53a995cc54d0ee3dcbf67c9733b611c37f77227cf11992905a5@127.0.0.1:0?discport=30301
创建账户
cd boot1
geth --datadir ./ account new
(password:ruanke)
0xA17F7ADdd0E9d0126A3a90d10407bdf82A32A506
cd boot2
geth --datadir ./ account new
(password:ruanke)
0x0DbD92EDe044269b4853321e472eb3bC53baE4cA
在boot的上层目录运行puppeth
用于生成创世块
复制配置文件
cp 1818.json ./boot1/
cp 1818.json ./boot2/
两个区块链节点初始化文件
cd boot1/
geth --datadir /home/user_dev/wanghaoyi/privateEthereum/boot1/ init 1818.json
cd boot2/
geth --datadir /home/user_dev/wanghaoyi/privateEthereum/boot2/ init 1818.json
首先在主机节点 1 上启动 bootnode
(第一次启动其他节点时需要,后面坏了也没关系)
bootnode --genkey=boot.key
bootnode --nodekey=boot.key -verbosity 9
启动私链boot1区块链节点
nohup geth --networkid 1818 --datadir "/home/user_dev/wanghaoyi/privateEthereum/boot1/" --rpc --port 30310 -rpcaddr="0.0.0.0" --rpcport 7545 --rpcapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --rpccorsdomain "" --ws -wsaddr="0.0.0.0" --wsport 8546 --wsapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --wsorigins "" --unlock 0 --password pwd --bootnodes "enode://214bb2e74a4f4b5a79d685b2bc1118fe55689c2c80db8f72ab21fe37c89091e05a90de2252a1c53a995cc54d0ee3dcbf67c9733b611c37f77227cf11992905a5@127.0.0.1:0?discport=30301" --targetgaslimit 0x247b760 --syncmode "full" --nousb --allow-insecure-unlock --mine --minerthreads=1 --etherbase=0xA17F7ADdd0E9d0126A3a90d10407bdf82A32A506 > /home/user_dev/wanghaoyi/privateEthereum/boot1/ethRunning.log &
(--mine和--etherbase可以同时开始挖矿,必须指定--etherbase才能知道谁是盈利矿工以太坊创建时间,因为默认为“0”)
注意
如果没有./geth目录,重新初始化,
cd boot2/
geth --datadir /home/user_dev/wanghaoyi/privateEthereum/boot2/ init 1818.json
将boot2复制到宿主节点2,启动私链boot2区块链节点
nohup geth --networkid 18188 --datadir "/home/user_dev/wanghaoyi/privateEthereum/boot2/" --rpc --port 30310 -rpcaddr="0.0.0.0" --rpcport 7545 --rpcapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --rpccorsdomain "" --ws -wsaddr="0.0.0.0" --wsport 8546 --wsapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --wsorigins "" --unlock 0 --password pwd --bootnodes "enode://214bb2e74a4f4b5a79d685b2bc1118fe55689c2c80db8f72ab21fe37c89091e05a90de2252a1c53a995cc54d0ee3dcbf67c9733b611c37f77227cf11992905a5@**172.27.83.194:0?discport=30301**" --targetgaslimit 0x247b760 --syncmode "full" --nousb --allow-insecure-unlock --mine --minerthreads=1 --etherbase=0x0DbD92EDe044269b4853321e472eb3bC53baE4cA
> /home/user_dev/wanghaoyi/privateEthereum/boot2/ethRunning.log &
注意:
WARN [08-14|13:33:20.770] 系统时钟似乎关闭了 2m45.277120101s,这会阻止网络连接
WARN [08-14|13:33:20.770] 请在系统设置中启用网络时间同步。
可以使用以下解决方案:
timedatectl set-ntp true
sudo systemctl start ntpd
sudo systemctl enable ntpd
geth命令行查看链接数>net新增区块链节点node3:
(1) 创建密钥库
cd boot3
geth --datadir ./ account new
(password:ruanke)
0x08aEF83902aFAFd1792FA56aDbF9167049fdCb67
(2) 初始化:
cd boot3/
geth --datadir /home/user_dev/wanghaoyi/privateEthereum/boot3/ init 1818.json
(3) 确保在启动节点1之前启动了bootnode
bootnode --nodekey=boot.key -verbosity 9
(4) 开始geth
nohup geth --networkid 1818 --datadir "/home/user_dev/wanghaoyi/privateEthereum/boot3/" --rpc --port 30310 -rpcaddr="0.0.0.0" --rpcport 7545 --rpcapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --ws -wsaddr="0.0.0.0" --wsport 8546 --wsapi "web3,personal,admin,db,net,eth,miner,rpc,txpool,clique" --wsorigins "*" --unlock 0 --password pwd --bootnodes "enode://214bb2e74a4f4b5a79d685b2bc1118fe55689c2c80db8f72ab21fe37c89091e05a90de2252a1c53a995cc54d0ee3dcbf67c9733b611c37f77227cf11992905a5@**172.27.83.194:0?discport=30301**" --targetgaslimit 0x247b760 --syncmode "full" --nousb --allow-insecure-unlock > /home/user_dev/wanghaoyi/privateEthereum/boot3/ethRunning.log &
(5) 指定挖矿
现在一共有3个节点,所以需要超过半数的节点提名节点3的root账户才能加入验证者列表。 在boot1节点和boot2节点分别指定boot3的root账号:
clique.propose("0x08aef83902afafd1792fa56adbf9167049fdcb67",true)
(net显示peerCount为0,发现ntpd宕机。使用:sudo systemctl restart ntpd,发现其他节点已成功连接,开始同步块。)
原文链接:以太坊POA共识私有联盟链的建立