版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
百度超级链XuperUnion三节点网络搭建
针对同一机器配置三节点
一、创建三节点目录
- 创建node1、node2和node3三个空目录:
mkdir node1 node2 node3
- 将output目录中的内容分别拷贝到node1、node2和node3中:
cp -r output/* node1
cp -r output/* node2
cp -r output/* node3
- 删除每个节点中的data/keys和data/netkeys文件夹:
rm -rf data/keys/ data/netkeys/
二、生成私钥与netURL
在每个节点目录中分别进行操作:
./xchain-cli account newkeys -f
./xchain-cli netURL gen
三、修改配置文件
修改node2和node3节点的conf/xchain.yaml文件:
- 修改tcpServer部分的port与metricPort,三个节点不同即可:
- 修改p2pV2部分的port,三个节点不同即可:
四、操作node1节点
- 获取node1、node2和node3节点的地址:
more data/keys/address
- 修改node1/data/config/xuper.json文件:
- 将predistribution中的address修改为node1的地址。
- 将timestamp修改为最近刚过去的时间戳。
- 将proposer_num设置为3,表示每一轮选举出的矿工数,要与init_proposer[]中地址的个数对应,如果某一轮的投票不足以选出足够的矿工数,则默认使用前一轮的矿工。
- 将init_proposer中的[]中放入node1、node2和node3节点的地址,三个节点都作为矿工,其中数字1表示指定第一轮初始矿工。
- 将init_proposer_neturl部分删除。
- 将node1中修改好的xuper.json文件替换node2和node3中的xuper.json文件。
- 创建链:
./xchain-cli createChain
- 启动node1节点:
nohup ./xchain &
- 获取node1的netURL:
./xchain-cli netURL get
- 获取本机ip地址:
hostname -i
- 将netURL中的ip地址改为本机ip,并存储到node1.url文件中:
echo /ip4/127.0.1.1/tcp/47101/p2p/QmT1rjtx8gXbYN4n9NPqsmFVJiiMPzqFU7UQAYerNHk3MH > node1.url
五、搭建p2p网络
- 修改node2和node3节点的conf/xchain.yaml文件:
将p2pV2部分的bootNodes内容修改为node1.url中的内容
- 使用node2和node3节点分别创建链并启动节点:
./xchain-cli createChain
nohup ./xchain &
六、查看状态
- 获取node1节点当前的服务状态:
./xchain-cli status -H 127.0.0.1:37101
,其中peers对应node2和node3的ip与端口号,则搭建成功。
- 获取node2和node3节点的服务状态,查看节点高度变化是否一致,若节点高度变化一致,则网络搭建成功:
./xchain-cli status -H 127.0.0.1:37102
./xchain-cli status -H 127.0.0.1:37103
- 编写脚本获取账本高度:
vim get_trunkHeight
#!/bin/bash
for((i=1;i<=3;i++));
do
echo -n "node$i:";
./xchain-cli status -H 127.0.1.1:3710$i | grep trunkHeight;
done
- 运行脚本:
bash get_trunkHeight