前言
本文介绍fisco技术文档中的使用工具模块,该模块中将重点介绍开发部署工具和控制台,这都是开发过程中十分常用的,其他的工具是封装的工具,方便开发者使用这里接受一下方便之后使用
开发部署工具
功能
build_chain.sh
脚本用于快速生成一条链中节点的配置文件,脚本依赖于openssl
搭建指令
默认使用指令
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
解释:
-l
选项用于指定要生成的链的IP列表以及每个IP下的节点数,以逗号分隔。脚本根据输入的参数生成对应的节点配置文件,其中每个节点的端口号默认从30300开始递增,所有节点属于同一个机构和群组。-f
选项通过使用一个指定格式的配置文件,支持创建各种复杂业务场景FISCO BCOS链。-l
和-f
选项必须指定一个且不可共存,例如192.168.0.1:2 agency1 1,2
表示ip
为192.168.0.1
的机器上有两个节点,这两个节点属于机构agency1
,属于group1和group2。
下面是一个配置文件的例子,每个配置项以空格分隔。
192.168.0.1:1 agency1 1,2 30300,20200,8545
192.168.0.2:1 agency1 1,2 30300,20200,8545
192.168.0.3:2 agency1 1,3 30300,20200,8545
192.168.0.4:1 agency2 1 30300,20200,8545
192.168.0.5:1 agency3 2,3 30300,20200,8545
192.168.0.6:1 agency2 3 30300,20200,8545
bash build_chain.sh -f ipconf -T
p
指定节点的起始端口,每个节点占用三个端口,分别是p2p,channel,jsonrpc使用,
分割端口,必须指定三个端口。同一个IP下的不同节点所使用端口从起始端口递增。- 为便于开发和体验,p2p模块默认监听IP是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如内网IP或特定的外网IP
节点文件组织结构
nodes/
├── 127.0.0.1
│ ├── fisco-bcos # 二进制程序
│ ├── node0 # 节点0文件夹
│ │ ├── conf # 配置文件夹
│ │ │ ├── ca.crt # 链根证书
│ │ │ ├── group.1.genesis # 群组1初始化配置,该文件不可更改
│ │ │ ├── group.1.ini # 群组1配置文件
│ │ │ ├── node.crt # 节点证书
│ │ │ ├── node.key # 节点私钥
│ │ │ ├── node.nodeid # 节点id,公钥的16进制表示
│ │ ├── config.ini # 节点主配置文件,配置监听IP、端口等
│ │ ├── start.sh # 启动脚本,用于启动节点
│ │ └── stop.sh # 停止脚本,用于停止节点
│ ├── node1 # 节点1文件夹
│ │.....
│ ├── node2 # 节点2文件夹
│ │.....
│ ├── node3 # 节点3文件夹
│ │.....
│ ├── sdk # SDK与节点SSL连接配置,FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建联报错
│ │ ├── ca.crt # SSL连接根证书
│ │ ├── sdk.crt # SSL连接证书
│ │ └── sdk.key # SSL连接证书私钥
| | ├── gm # SDK与节点国密SSL连接配置,注意:生成国密区块链环境时才会生成该目录,用于节点与SDK的国密SSL连接
| | │ ├── gmca.crt # 国密SSL连接根证书
| | │ ├── gmensdk.crt # 国密SSL连接加密证书
| | │ ├── gmensdk.key # 国密SSL连接加密证书私钥
| | │ ├── gmsdk.crt # 国密SSL连接签名证书
| | │ └── gmsdk.key # 国密SSL连接签名证书私钥
├── cert # 证书文件夹
│ ├── agency # 机构证书文件夹
│ │ ├── agency.crt # 机构证书
│ │ ├── agency.key # 机构私钥
│ │ ├── agency.srl
│ │ ├── ca-agency.crt
│ │ ├── ca.crt
│ │ └── cert.cnf
│ ├── ca.crt # 链证书
│ ├── ca.key # 链私钥
│ ├── ca.srl
│ └── cert.cnf
- cert文件夹下存放链的根证书和机构证书。
- 以IP命名的文件夹下存储该服务器所有节点相关配置、
fisco-bcos
可执行程序、SDK所需的证书文件。 - 每个IP文件夹下的
node*
文件夹下存储节点所需的配置文件。其中config.ini
为节点的主配置,conf
目录下存储证书文件和群组相关配置。配置文件详情,请参考这里。每个节点中还提供start.sh
和stop.sh
脚本,用于启动和停止节点。 - 每个IP文件夹下的提供
start_all.sh
和stop_all.sh
两个脚本用于启动和停止所有节点。
使用
群组新增节点
为上一小节生成的群组1新增一个共识节点
接下来的操作,都在上一节生成的nodes/127.0.0.1
目录下进行
- 获取证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
- 生成新节点私钥证书
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中newNode/conf中会存在机构agency新签发的证书和私钥
bash gen_node_cert.sh -c ../cert/agency -o newNode
-
准备配置文件
- 拷贝群组1中节点node0配置文件与工具脚本
cp node0/config.ini newNode/config.ini cp node0/conf/group.1.genesis newNode/conf/group.1.genesis cp node0/conf/group.1.ini newNode/conf/group.1.ini cp node0/*.sh newNode/ cp -r node0/scripts newNode/
除了ca.crt,node.crt,nodr.key,nodde.nodeied全部拷贝
-
更新
newNode/config.ini
中监听的IP和端口,对于[rpc]
模块,修改listen_ip
、channel_listen_port
和jsonrpc_listen_port
;对于[p2p]
模块,修改listen_port
-
将新节点的P2P配置中的IP和Port加入原有节点的config.ini中的[p2p]字段。假设新节点IP:Port为127.0.0.1:30304则,修改后的[P2P]配置为
```bash [p2p] listen_ip=0.0.0.0 listen_port=30304 ;enable_compress=true ; 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 ```
-
启动新节点,执行
newNode/start.sh
-
通过console将新节点加入群组1,2.6版本控制台指令详细介绍参考这里,1.x版本控制台指令详细介绍参考这里,
nodeID
可以通过命令cat newNode/conf/node.nodeid
来获取 -
检查连接和共识
为机构生成新的SDK证书
- 获取证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
- 生成新节点私钥证书
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中newSDK中会存在机构agency新签发的证书和私钥
bash gen_node_cert.sh -c ../cert/agency -o newSDK -s
生成新机构证书
- 获取机构证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_agency_cert.sh
- 生成新机构私钥和证书
# -c 指定链证书及私钥所在路径,目录下必须有ca.crt 和 ca.key, 如果ca.crt是二级CA,则还需要root.crt(根证书)
# -g 指定国密链证书及私钥所在路径,目录下必须有gmca.crt 和 gmca.key,如果gmca.crt是二级CA,则还需要gmroot.crt(根证书)
# -a 新机构的机构名
bash gen_agency_cert.sh -c nodes/cert/ -a newAgencyName
控制台
具体使用与配置可见搭建第一个区块链网络(Fisco联盟链)或者官方文档
-
交互式客户端工具,通过 Java SDK 与区块链节点建立连接,实现对区块链节点数据的读写访问请求。控制台拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合约等。此外,控制台提供一个合约编译工具,用户可以方便快捷的将Solidity合约文件编译为Java合约文件。
-
环境:控制台基于Java SDK 需要安装Java环境
-
由于控制台是实现对区块链节点数据的读取访问请求,因此在配置中需要选定与其相连的节点,有两步配置
cp -n console/conf/config-example.toml console/conf/config.toml
官方案例中该步骤就是将样例配置引入使用cp -r nodes/127.0.0.1/sdk/* console/conf/
同样还需要配置证书
-
注意:控制台只是一个方便交互的界面,在启动控制台之前一定要将节点建立连接
start_all.sh
其他工具
作为封装的工具在使用的时候直接使用就可以,这里本着不反复造轮子的原则,先介绍使用,再后来具体使用的时候再具体分析
运维部署工具
- 本工具降低了机构间生成与维护区块链的复杂度,提供了多种常用的部署方式。
- 本工具考虑了机构间节点安全性需求,所有机构间仅需要共享节点的证书,同时对应节点的私钥由各机构自己维护,不需要向机构外节点透露。
- 本工具考虑了机构间节点的对等性需求,多机构间可以通过交换数字证书对等安全地部署自己的节点。
联盟链在初始化时,需要协商创世节点中包含的节点信息。因此谁来生成这些信息就显得十分重要。
FISCO BCOS generator从上述背景出发,根据灵活、安全、易用、对等的原则,从不同机构对等部署、新建群组的角度考虑,设计了解决上述问题的解决方案。
数据治理通用组件
- 数据扩容
- 链上数据只能通过智能合约接口的方式获取和调用,执行效率低下
- 缺乏通用的产品和可复用的组件
多方协作治理组件
- 不难看出私钥、账户、权限和证书管理和使用等方面均存在较高门槛:开发者需要在不同场景重复且繁琐地解决同一个问题,用户在使用过程中容易出现困惑和不顺手,甚至可能因为治理方案不完善给系统带来安全隐患和风险
- 开源的区块链治理通用组件由私钥管理组件(Governance-Key)、账户治理组件(Governance-Account)、权限治理组件(Governance-Authority)、证书管理组件(Governance-Cert)等组件构成
区块链应用开发组件
从应用开发的视角来看,从智能合约到项目搭建,包含了大量机械而重复的工作,如创建项目、引入依赖、编写配置代码、访问智能合约、编写相关实体类等。相形之下,通过WeBankBlockchain-SmartDev,开发者可以选用应用开发脚手架。脚手架会根据智能合约自动生成项目工程。工程中已经包含了上述逻辑代码,开发者只需基于该工程继续添加业务逻辑代码,聚焦在自身的业务上即可。
总结
整个联盟链的使用有一下几步:
1.使用bash build_chain.sh
,命令搭建区块链网络。当然这里涉及不同的拓扑结构,与搭建配置
2.启动节点,查看共识
3.配置相应的控制台,启用控制台
4.使用控制台交互