主页 > imtokendapp授权 > 以太坊POA共识私有联盟链的建立

以太坊POA共识私有联盟链的建立

imtokendapp授权 2023-10-20 05:08:45

以太坊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

用于生成创世块

以太坊POA共识的私有联盟链的建立

复制配置文件

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共识私有联盟链的建立