ipconf
推荐路径:在 /fisco
目录下创建(即与 build_chain.sh
脚本同级目录)bash
# 进入工作目录(若未创建则新建)
mkdir -p /fisco && cd /fisco
# 创建并编辑 ipconf 文件
vim ipconf # 也可以使用 nano、echo 或其他编辑器
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
bash
bash build_chain.sh -f ipconf -p 30300,20200,8545
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> # 强制终止冲突进程
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
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/
# 在group:1部署HelloWorld合约
deploy HelloWorld
#在group:2部署HelloWorld合约
switch2
deploy HelloWorld
#在group:3部署HelloWorld合约
switch3
deploy HelloWorld
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"
# 获取节点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
# 切换到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
# 在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=
# 运行脚本
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文件
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
# 获得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
# 用委员启动控制台
cd console/
./start.sh 1 -pem account/0xc773a093826727613d1ab394a39d76053ea58a11.pem
# 验证区块最大打包交易数量情况
getSystemConfigByKey tx_count_limit