第三章 部署系统合约
cd /mydata/FISCO-BCOS/systemcontractv2
#初始化npm包,仅运行一次即可
cnpm i
# 修改其中的 proxy变量,更改期中的IP和端口对应fisco-bcos运行的IP和端口,端口见config.json中rpcport
vim config.js
#开始部署
node deploy.js
#在输出的 SystemProxy的合约地址配置到config.json中的 systemproxyaddress
"systemproxyaddress":"XXX"
#重启节点
cd /mydata/nodedata-1/
chmod +x *.sh
./stop.sh
./start.sh #执行此步骤后不断刷出打包信息,表明重启成功
第四章 创建普通节点
所有节点的genesis.json与根证书ca.crt必须保持一致
4.1 初始化节点
# 假设在nodedata-2目录中进行操作
mkdir -p /mydata/nodedata-2/data/ #存放节点的各种文件
mkdir -p /mydata/nodedata-2/log/ #存放日志
mkdir -p /mydata/nodedata-2/keystore/ #存放账户秘钥
#拷贝创世节点相关文件
cd /mydata/nodedata-1/
cp genesis.json config.json log.conf start.sh stop.sh /mydata/nodedata-2/
cd /mydata/nodedata-1/data
cp ca.crt ca.key genkey.sh /mydata/nodedata-2/data/
#如果是非本机,请注意操作步骤
cd /mydata/FISCO-BCOS/
vim cryptomod.json
#修改其中的rlpcreatepath 路径为新的nodedata-2目录
fisco-bcos --gennetworkrlp cryptomod.json #需要一段时间
#生成NodeId节点
cd /mydata/nodedata-2/
#得到nodeId的值
cat data/network.rlp.pub
#修改config.json
vim config.json
#在NodeextraInfo 已有一个节点的情况下增加一个节点对象
#注意如果是内网多机器,请注意修改Peerip 为本机IP(推荐内网IP)
#如果为本机,请注意相关端口不要和另外的端口发生冲突,包括config.json上面的
#修改log.conf 中的路径,放在想要存放的路径
4.2 节点证书配置
#用根证书公私钥生成节点证书公私钥(server.key、server.crt)
./genkey.sh server ./ca.key ./ca.crt
4.3 节点启动
节点的启动依赖下列文件,在启动前,请确认文件已经正确的配置:
- 证书文件(/mydata/nodedata-2/data):ca.crt、network.rlp、network.rlp.pub、server.crt、server.key
- 配置文件(/mydata/nodedata-2/):genesis.json、config.json、log.conf
cd /mydata/nodedata-2/
chmod +x *.sh
./start.sh #此时节点未被注册到区块链中,等待10秒,不会刷出打包信息
ctrl-c 退出
ps -ef |grep fisco-bcos #可查看到节点进程存在
4.4 节点组网
新节点入网需要在系统合约的节点管理中注册,才能加入网络,先确认:
- 系统合约已经被正确的部署。(并确认config.json中的systemproxyaddress)
- 修改上述后已成功重启相关节点
- /mydata/FISCO-BCOS/systemcontractv2/下的config.js已经正确的配置了节点的RPC端口。
cd /mydata/FISCO-BCOS/systemcontractv2/
#注意创世节点在第一次也需要先注册 node1.json可认为是创世节点,node2.json 依此类推
vim node1.json
#内容需要与节点config.json中NodeextraInfo字段的内容对应。若在不同机器上组网时,ip填写的是外网ip。
node tool.js NodeAction registerNode node1.json
#发送交易成功即注册成功 通过下面查看已注册节点
node tool.js NodeAction all
#退出节点可使用如下命令
node tool.js NodeAction cancelNode node2.json