搭建多群组FISCO BCOS联盟链及运维

1.搭建多群组FISCO BCOS联盟链

1.1 创建 ipconf 推荐路径:在 /fisco 目录下创建(即与 build_chain.sh 脚本同级目录)

bash

# 进入工作目录(若未创建则新建)
mkdir -p /fisco && cd /fisco

# 创建并编辑 ipconf 文件
vim ipconf  # 也可以使用 nano、echo 或其他编辑器
1.2 编写ipconf文件 创建ipconf文件并配置节点信息(注意参数间用空格分隔)

bash

127.0.0.1:2 agencyA 1,2,3

127.0.0.1:2 agencyB 1

127.0.0.1:2 agencyC 2

127.0.0.1:2 agencyD 3
1.3 执行构建命令**(需确保30300-30301、20200-20201、8545-8546端口可用)

bash

bash build_chain.sh -f ipconf -p 30300,20200,8545
1.4 启动节点

bash


# 启动所有节点
bash nodes/127.0.0.1/start_all.sh

# 验证进程状态
ps aux | grep fisco-bcos  # 应显示8个节点进程

[!NOTE]

端口冲突处理

若出现

Address already in use

错误,使用以下命令释放端口:

bash

lsof -i :30300  # 检查30300端口占用(按需替换端口号)
kill -9 <PID>   # 强制终止冲突进程
1.5 验证网络拓扑
1.5.1 检查群组共识

bash

# 实时监控节点日志中的共识关键事件
tail -f nodes/127.0.0.1/node0/log/* | grep ++++

# 查看agencyB节点在group1的共识
tail -f nodes/127.0.0.1/node2/log/* | grep "g:1.*++"

# 检查agencyC节点在group2的共识
tail -f nodes/127.0.0.1/node4/log/* | grep "g:2.*++"

#获取所有节点的 channel_listen_port
cat nodes/127.0.0.1/node*/config.ini | grep channel_listen_port

2.搭建区块链系统管理平台并验证

2.1 配置控制台,使用三个群组分别部署HelloWorld 智能合约
2.1.1 复制证书文件 **与 **config.toml 文件

bash

# 解压console.tar.gz文件
tar -zxvf console.tar.gz

# 复制证书文件 与 config.toml文件
cp conf/config-example.toml conf/config.toml
cp /root/blockchain/fisco/nodes/127.0.0.1/sdk/* conf/

# 查看
ll conf/
2.2 切换群组与部署合约
2.2.1 切换群组(swich),部署合约(deploy)
# 在group:1部署HelloWorld合约
deploy HelloWorld

#在group:2部署HelloWorld合约
switch2
deploy HelloWorld

#在group:3部署HelloWorld合约
switch3
deploy HelloWorld
2.2.2 使 用cat 命令查看 node0 节点展示三个群组的出块状态
cat nodes/127.0.0.1/node0/log/* | grep "g:1.*Report"

cat nodes/127.0.0.1/node0/log/* | grep "g:2.*Report"

cat nodes/127.0.0.1/node0/log/* | grep "g:3.*Report"
2.2.3 使用控制台将node2 添加为 group2 的观察者节点
# 获取节点id并以群组2启动控制台
cat nodes/127.0.0.1/node2/conf/node.nodeid
bash console/start.sh 2

# 增加观察者节点并验证
(注意 node2 为群组 1 的节点 所以需要将群组 2 的创世块相关文件复制到 conf 下)
需:切换到node2目录下
cp ../node0/conf/group.2* ./conf/

# 使用群组2启动控制台
(回到fisco目录下)
bash console/start.sh 2
2.2.4 使用脚本创建三个用户
# 切换到console目录下,创建3个用户
./get_account.sh

# 添加账户1为委员
(再次回到fisco目录下启动bash console/start.sh)
(以下账户地址Account Address,来源第一个创建用户)
grantCommitteeMember 0xc773a093826727613d1ab394a39d76053ea58a11

# 切换使用账户1启动控制台
(进入console目录下)
./start.sh 1 -pem accounts/0xc773a093826727613d1ab394a39d76053ea58a11.pem

 # 添加账户2为委员
(以下账户地址Account Address,来源第二个创建用户)
grantCommitteeMember 0x2d85da2d5bb22af410d4476f25a826d57e2fb768

# 验证有两个委员
listCommitteeMembers

3.区块链节点运维

3.1 使用 sed 命令指定所有区块链节点输出等级为警告级,并设置日志存储阈值为100MB
# 在contos目录下进行sed修改
sed -i 's/level=info/level=warning/g' nodes/127.0.0.1//node*/config.ini
sed -i 's/ max_log_file_size=200/ max_log_file_size=100/g' nodes/127.0.0.1//node*/config.ini

#cat打印查看
cat nodes/127.0.0.1/node*/config.ini | grep level=
cat nodes/127.0.0.1/node*/config.ini | grep max_log_file_size=
3.2 如何进行新节点 (node8) 配置
# 运行脚本
bash gen_node_cert.sh -c nodes/cert/agencyA -o nodes/127.0.0.1/node8
# 进入127.0.01目录下,拷贝启动停止脚本
cp node0/st* node8/
# 拷贝节点配置文件
cp node0/config.ini node8/
# 修改node8下的config.ini文件内容(如下)
vim config.ini
[rpc]
    channel_listen_ip=0.0.0.0
    channel_listen_port=20208(端口+1)
    jsonrpc_listen_ip=127.0.0.1
    jsonrpc_listen_port=8553(端口+1)
    disable_dynamic_group=false
[p2p]
    listen_ip=0.0.0.0
    listen_port=30308(端口+1)
    ; nodes to connect
    node.0=127.0.0.1:30300
    node.1=127.0.0.1:30301
    node.2=127.0.0.1:30302
    node.3=127.0.0.1:30303
    node.4=127.0.0.1:30304
    node.5=127.0.0.1:30305
    node.6=127.0.0.1:30306
    node.7=127.0.0.1:30307
    node.8=127.0.0.1:30308(新增)

3.3 将新节点注册为group3 中的共识节点
# 复制群组3文件
cp node0/conf/group.3.* node8/conf/

# 启动节点8
bash nodes/127.0.0.1/node8/start.sh

# 进入127.0.0.1目录下获取node8的id后复制改id
cat node8/conf/node.nodeid

# 返回fisco目录下,群组3启动控制台
bash console/start.sh  3
# 新节点加入共识
addSealer 59e28037778dcfbe18a8677850b5327bc4f854010ee938420c5a72098abe446a005bf975d7287c5fe810cebde2f3aa3c2ae9637b0cf92eada58b539a95720326(以上为node8的id)
getSealerList

4.区块链网络运维

4.1 设置区块链系统黑名单(将 node3 设为黑名单禁止连接)
# 获得node3的id
cat nodes/127.0.0.1/node3/conf/node.nodeid

# 分别进入node0-node7,修改各个节点下的config.ini,这里以node0为例
vim nodes/127.0.0.1/node0/config.ini

[certificate_blacklist]
    ; crl.0 should be nodeid, nodeid's length is 128
 crl.0=a494e723462f995a3feeb1dfad0b19212ba273639382f4411f593ffc336a274f6497fac88df479d909a79282e7626ae00b32c7d6f61c7427b02a(将node3id复制在此,同理白名单将id复制在certificate_whitelist下)

#重启区块链系统
bash stop_all.sh
bash start_all.sh

# 启动控制台 查看连接的节点(应没有node3节点)
bash console/start.sh
4.2设置系统中区块打包最大交易数量设为2000
# 用委员启动控制台
cd console/
./start.sh 1 -pem account/0xc773a093826727613d1ab394a39d76053ea58a11.pem

# 验证区块最大打包交易数量情况
getSystemConfigByKey tx_count_limit

你可能感兴趣的:(运维,区块链,网络)