build_chain一键建链工具

标签:build_chain 搭建Air版区块链网络


重要

相关软件和环境版本说明!请查看

重要

本部署工具 build_chain.sh 脚本目标是让用户最快地使用FISCO BCOS Air版。

FISCO BCOS提供了build_chain.sh脚本帮助用户快速搭建FISCO BCOS联盟链。

1. 脚本功能介绍

build_chain.sh脚本用于快速生成一条链中节点的配置文件,脚本的源码位于github源码, gitee源码

注解

为便于开发和体验,p2p模块默认监听IP是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如内网IP或特定的外网IP

# 下载建链脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.11.0/build_chain.sh && chmod u+x build_chain.sh

# Note: 若访问git网速太慢,可尝试如下命令下载建链脚本:
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.6.0/build_chain.sh && chmod u+x build_chain.sh

# 键入bash build_chain.sh -h展示脚本用法及参数
$ bash build_chain.sh
Usage:
air
    -C <Command>                        [Optional] the command, support 'deploy' and 'expand' now, default is deploy
    -g <group id>                       [Optional] set the group id, default: group0
    -I <chain id>                       [Optional] set the chain id, default: chain0
    -v <FISCO-BCOS binary version>      [Optional] Default is the latest v3.10.0
    -l <IP list>                        [Required] "ip1:nodeNum1,ip2:nodeNum2" e.g:"192.168.0.1:2,192.168.0.2:3"
    -L <fisco bcos lightnode exec>      [Optional] fisco bcos lightnode executable, input "download_binary" to download lightnode binary or assign correct lightnode binary path
    -e <fisco-bcos exec>                [Optional] fisco-bcos binary exec
    -t <mtail exec>                     [Optional] mtail binary exec
    -o <output dir>                     [Optional] output directory, default ./nodes
    -p <Start port>                     [Optional] Default 30300,20200 means p2p_port start from 30300, rpc_port from 20200
    -s <SM model>                       [Optional] SM SSL connection or not, default is false
    -H <HSM model>                      [Optional] Whether to use HSM(Hardware secure module), default is false
    -c <Config Path>                    [Required when expand node] Specify the path of the expanded node config.ini, config.genesis and p2p connection file nodes.json
    -d <CA cert path>                   [Required when expand node] When expanding the node, specify the path where the CA certificate and private key are located
    -D <docker mode>                    Default off. If set -D, build with docker
    -E <Enable debug log>               Default off. If set -E, enable debug log
    -a <Auth account>                   [Optional] when Auth mode Specify the admin account address.
    -w <WASM mode>                      [Optional] Whether to use the wasm virtual machine engine, default is false
    -R <Serial_mode>                    [Optional] Whether to use serial execute,default is true
    -k <key page size>                  [Optional] key page size, default is 10240
    -m <fisco-bcos monitor>             [Optional] node monitor or not, default is false
    -i <fisco-bcos monitor ip/port>     [Optional] When expanding the node, should specify ip and port
    -M <fisco-bcos monitor>             [Optional] When expanding the node, specify the path where prometheus are located
    -z <Generate tar packet>            [Optional] Pack the data on the chain to generate tar packet
    -n <node key path>                  [Optional] set the path of the node key file to load nodeid
    -N <node path>                      [Optional] set the path of the node modified to multi ca mode
    -u <multi ca path>                  [Optional] set the path of another ca for multi ca mode
    -6 <ipv6 mode>                      [Optional] IPv6 mode use :: as default listen ip, default is false
    -T <Consensus Algorithm>            [Optional] Default PBFT. Options can be pbft / rpbft, pbft is recommended
    -h Help
pro or max
    -C <Command>                        [Optional] the command, support 'deploy' now, default is deploy
    -g <group id>                       [Optional] set the group id, default: group0
    -I <chain id>                       [Optional] set the chain id, default: chain0
    -V <chain version>                  [Optional] support 'air''pro''max', default is 'air'
    -l <IP list>                        [Required] "ip1:nodeNum1,ip2:nodeNum2" e.g:"192.168.0.1:2,192.168.0.2:3"
    -p <Start port>                     [Optional] Default 30300、20200、40400、2379 means p2p_port start from 30300, rpc_port from 20200, tars_port from 40400, tikv_port default 2379
    -e <service binary path>            [Optional] rpc gateway node service binary path
    -y <service binary download type>   [Optional] rpc gateway node service binary download type, default type is cdn
    -v <service binary version>         [Optional] Default is the latest v3.10.0
    -r <service binary download path>   [Optional] service binary download path, default is binary
    -c <Config Path>                    [Optional] Specify the path of the deploy node config.toml
    -t <deploy type>                    [Optional] support 'rpc''gateway''node''all', default is 'all'
    -o <output dir>                     [Optional] output directory, default genearted
    -s <SM model>                       [Optional] SM SSL connection or not, default is false
    -h Help

deploy nodes e.g
    bash build_chain.sh -p 30300,20200 -l 127.0.0.1:4 -o nodes -e ./fisco-bcos
    bash build_chain.sh -p 30300,20200 -l 127.0.0.1:4 -o nodes -e ./fisco-bcos -m
    bash build_chain.sh -p 30300,20200 -l 127.0.0.1:4 -o nodes -e ./fisco-bcos -s
expand node e.g
    bash build_chain.sh -C expand -c config -d config/ca -o nodes/127.0.0.1/node5 -e ./fisco-bcos
    bash build_chain.sh -C expand -c config -d config/ca -o nodes/127.0.0.1/node5 -e ./fisco-bcos -m -i 127.0.0.1:5 -M monitor/prometheus/prometheus.yml
    bash build_chain.sh -C expand -c config -d config/ca -o nodes/127.0.0.1/node5 -e ./fisco-bcos -s
    bash build_chain.sh -C expand_lightnode -c config -d config/ca -o nodes/lightnode1
    bash build_chain.sh -C expand_lightnode -c config -d config/ca -o nodes/lightnode1 -L ./fisco-bcos-lightnode
modify node e.g
    bash build_chain.sh -C modify -N ./node0 -u ./ca/ca.crt
    bash build_chain.sh -C modify -N ./node0 -u ./ca/ca.crt -s
deploy pro service e.g
    bash build_chain.sh -p 30300,20200 -l 172.31.184.227:2,172.30.93.111:2 -C deploy -V pro -o generate -t all
    bash build_chain.sh -p 30300,20200 -l 172.31.184.227:2,172.30.93.111:2 -C deploy -V pro -o generate -t all -s
    bash build_chain.sh -p 30300,20200 -l 172.31.184.227:2,172.30.93.111:2 -C deploy -V pro -o generate -e ./binary
    bash build_chain.sh -p 30300,20200,40400 -l 172.31.184.227:2,172.30.93.111:2 -C deploy -V pro -o generate -y cdn -v v3.10.0 -r ./binaryPath
deploy max service e.g
    bash build_chain.sh -p 30300,20200,40400,2379 -l 172.31.184.227:1,172.30.93.111:1,172.31.184.54:1,172.31.185.59:1 -C deploy -V max -o generate -t all
    bash build_chain.sh -p 30300,20200,40400,2379 -l 172.31.184.227:1,172.30.93.111:1,172.31.184.54:1,172.31.185.59:1 -C deploy -V max -o generate -t all -e ./binary -s
    bash build_chain.sh -p 30300,20200,40400,2379 -l 172.31.184.227:1,172.30.93.111:1,172.31.184.54:1,172.31.185.59:1 -C deploy -V max -o generate -y cdn -v v3.10.0 -r ./binaryPath
    bash build_chain.sh -c config.toml -C deploy -V max -o generate -t all
expand pro node e.g
    bash build_chain.sh -C expand_node -V pro -o expand_node -c ./config.toml
expand pro rpc/gateway e.g
    bash build_chain.sh -C expand_service -V pro -o expand_service -c ./config.toml
expand pro group e.g
    bash build_chain.sh -C expand_group -V pro -o expand_group -c ./config.toml
expand max node e.g
    bash build_chain.sh -C expand_node -V max -o expand_node -c ./config.toml
expand max rpc/gateway e.g
    bash build_chain.sh -C expand_service -V max -o expand_service -c ./config.toml

C选项[Optional]

脚本的命令,支持 deployexpand,默认为deploy:

  • deploy: 用于部署新节点。

  • expand 用于节点扩容。

g选项[Optional]

用于设置群组ID,若不设置,则默认为group0。

c选项[Optional]

用于设置链ID,若未设置,则默认为chain0。

v选项[Optional]

用于指定搭建FISCO BCOS时使用的二进制版本。build_chain默认下载Release页面最新版本。

l选项

生成节点的IP与对应IP上部署的区块链节点数目,参数格式为 ip1:nodeNum1, ip2:nodeNum2

在IP为192.168.0.1的机器上部署2个节点,IP为127.0.0.1的机器上部署4个节点的l选项示例如下: 192.168.0.1:2, 127.0.0.1:4

L选项[Optional]

用于配置开启FISCO BCOS轻节点模式,-L 后面可指定Air版本轻节点的二进制可执行文件路径,也可输入”download_binary”,则默认下载最新版本的轻节点二进制,如下图所示。

# 两个节点的P2P服务分别占用30300和30301端口,RPC服务分别占用20200和20201端口
# -L 启动轻节点模块,"download_binary" 默认拉去最新版本二进制文件
$ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2 -L download_binary
# 指定轻节点二进制路径
$ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2 -L /bin/fisco-bcos-lightnode

e选项[Optional]

指定Air版本FISCO BCOS的二进制可执行文件路径,若不指定,则默认拉取最新版本的FISCO BCOS。

t选项[Optional]

指定Air版本监控依赖的二进制mtail 所在路径,功能和-e类似,若不指定,则默认拉取最新版本的FISCO BCOS。

o选项[Optional]

指定生成的节点配置所在的目录,默认目录为 ./nodes

p选项

指定节点P2P和RPC服务的监听的起始端口,P2P服务默认以30300为起始端口,RPC服务默认以20200为起始端口。

指定30300为P2P服务监听的起始端口;20200为RPC服务监听的起始端口示例如下:

# 两个节点的P2P服务分别占用30300和30301端口
# RPC服务分别占用20200和20201端口
$ bash build_chain.sh -p 30300,20200 -l 127.0.0.1:2

s选项[Optional]

指定是否搭建全链路的国密区块链,国密区块链有如下特性:

  • 区块链账本使用国密算法: 使用sm2签名验签算法、sm3哈希算法以及sm4对称加解密算法。

  • SDK客户端与节点间采用国密SSL连接

  • 区块链节点之间采用国密SSL连接

搭建单机四节点国密区块链节点的示例如下:

$ bash build_chain.sh -l 127.0.0.1:4 -s -o gm_nodes

H选项[Optional]

密码机选项,表示使用密码机。若开启此选项,要加上-s表示开启国密,且后要加-n选项用于加载node.pem文件生成密码机密钥的nodeid。通过加载证书文件路径开启密码机命令如下

./build_chain.sh -e ./fisco-bcos -p 30300,20200 -l 127.0.0.1:4 -s -H -n nodeKeyDir/

n选项[Optional]

节点证书目录选项,表示通过加载文件夹中节点证书生成nodeid,该选项可用于国密、非国密,不必指定-s。此选项其后跟证书文件夹路径。

c扩容选项

扩容节点选项,用于指定扩容节点的配置文件路径,此路径须包括config.ini, config.genesis, nodes.json

d扩容选项

扩容节点选项,用于指定扩容节点的CA证书和CA私钥所在目录。

D选项[Optional]

使用docker模式搭建Air版本FISCO BCOS区块链,使用该选项时不再拉取二进制,但要求用户启动节点机器安装docker且账户有docker权限。

可在节点目录下执行如下命令启动docker节点:

./start.sh

该模式下 start.sh 脚本启动节点的命令如下

docker run -d --rm --name ${nodePath} -v ${nodePath}:/data --network=host -w=/data fiscoorg/fiscobcos:v3.6.0 -c config.ini -g config.genesis

a权限控制选项[Optional]

可选参数,当区块链节点启用权限控制时,可通过-a选项指定admin账号的地址,若不指定该选项,build_chain脚本随机会生成一个账户地址作为admin账号。

w虚拟机选项[Optional]

可选参数,当区块链需要启用wasm虚拟机引擎时,可通过-w选项开启,若不指定该选项,则默认使用EVM。

R执行模式选项[Optional]

可选参数,当区块链启动串行执行模式时,可通过-R选项指定执行模式,默认为串行模式(true),若设置为false,则开启DMC并行模式。

k存储控制选项[Optional]

可选参数,当需要设置key-page存储中page的大小时,可通过-k选项设置page的大小,若不指定,默认page大小为10240。

m节点监控选项[Optional]

可选参数,当区块链节点启用节点监控时,可通过-m选项来部署带监控的节点,若不选择该选项则只部署不带监控的节点。

部署开启监控的Air版本区块链示例如下:

[root@172 air]# bash build_chain.sh -p 30300,20200 -l 127.0.0.1:4 -o nodes -e ./fisco-bcos -t ./mtail -m
[INFO] Use binary ./fisco-bcos
[INFO] Use binary ./mtail
[INFO] Generate ca cert successfully!
Processing IP:127.0.0.1 Total:4
[INFO] Generate nodes/127.0.0.1/sdk cert successful!
[INFO] Generate nodes/127.0.0.1/node0/conf cert successful!
[INFO] Generate nodes/127.0.0.1/node1/conf cert successful!
[INFO] Generate nodes/127.0.0.1/node2/conf cert successful!
[INFO] Generate nodes/127.0.0.1/node3/conf cert successful!
[INFO] Begin generate uuid
[INFO] Generate uuid success: 1357cd37-6991-44c0-b14a-5ea81355c12c
[INFO] Begin generate uuid
[INFO] Generate uuid success: c68ebc3f-2258-4e34-93c9-ba5ab6d2f503
[INFO] Begin generate uuid
[INFO] Generate uuid success: 5311259c-02a5-4556-9726-daa1ee8fbefc
[INFO] Begin generate uuid
[INFO] Generate uuid success: d4e5701b-bbce-4dcc-a94f-21160425cdb9
==============================================================
[INFO] fisco-bcos Path     : ./fisco-bcos
[INFO] Auth Mode           : false
[INFO] Start Port          : 30300 20200
[INFO] Server IP           : 127.0.0.1:4
[INFO] SM Model            : false
[INFO] output dir          : nodes
[INFO] All completed. Files in nodes

生成完区块链节点文件,启动节点(nodes/127.0.0.1/start_all.sh)和节点监控(nodes/monitor/start_monitor.sh),根据提示登录grafana(用户名密码为admin/admin)导入Dashboard(github源码)和配置prometheus源(http://ip:9090/)查看各个指标实时展示。

i扩容节点监控选项[Optional]

可选参数,当区块链扩容节点需要带监控时,通过-i选项来指定扩容节点监控,参数格式为 ip1:nodeNum1,在IP为192.168.0.1的机器上扩容第2个节点监控,l选项示例如下:192.168.0.1:2

M节点监控配置文件选项[Optional]

可选参数,当区块链扩容节点需要带监控时,可通过-M选项来指定prometheus配置文件在nodes目录的相对路径。

z生成节点目录压缩包[Optional]

可选参数,生成节点目录的同时生成相应的压缩包,方便多机部署时拷贝。

h选项[Optional]

查看脚本使用用法。

E选项[Optional]

可选参数,当需要开启debug日志时,可通过-E选项设置开启debug日志。

2. 节点配置文件组织结构

build_chain生成的节点配置主要如下:

  • 根证书和根证书私钥: 位于指定的配置生成目录的ca文件夹。

  • 节点连接证书: 每个节点conf目录下均存放节点的网络连接证书,非国密节点证书和私钥主要包括ca.crt, ssl.crt, sslkey ,国密节点证书和私钥主要包括sm_ca.crt, sm_ssl.crt, sm_enssl.crt, sm_enssl.key, sm_ssl.key

  • 节点签名私钥: 节点conf目录下的node.pem,主要位于共识模块的签名。

  • SDK连接证书: 由build_chain.sh生成,客户端可拷贝该证书与节点建立SSL连接。

  • 节点配置文件: 节点目录下的config.iniconfig.genesis 配置,前者主要配置链信息,后者主要配置创世块信息,具体可参考Air版本区块链节点配置介绍

  • 启停脚本: start.shstop.sh,用于启动和停止节点。

  • 启停监控脚本: monitor/start_monitor.shmonitor/stop_monitor.sh,用于启动和停止节点监控。

单机四节点Air版本非国密区块链的配置文件组织示例如下:

nodes/
├── monitor
│   ├── grafana # grafana配置文件   ├── prometheus # prometheus配置文件   ├── start_monitor.sh # 启动脚本,用于开启监控   ├── stop_monitor.sh # 停止脚本,用于停止监控   ├── compose.yaml # docker-compose配置文件
├── 127.0.0.1
│   ├── fisco-bcos # 二进制程序   ├── mtail # 二进制程序   ├── node0 # 节点0文件夹      ├── mtail # mtail配置文件夹         ├── start_mtail_monitor.sh  # 启动脚本,用于启动该节点mtail程序         ├── stop_mtail_monitor.sh   # 停止脚本,用于停止该节点mtail程序         ├── node.mtail # mtail配置文件      ├── conf # 配置文件夹         ├── ca.crt # 链根证书         ├── cert.cnf
│         ├── ssl.crt # ssl证书         ├── ssl.key # ssl连接证书私钥         ├── node.pem # 节点签名私钥文件         ├── node.nodeid # 节点id,公钥的16进制表示      ├── config.ini # 节点主配置文件,配置监听IP、端口、证书、日志等      ├── config.genesis # 创世配置文件,共识算法类型、共识超时时间和交易gas限制等      ├── nodes.json # 节点json信息,展示节点的ip和端口,示例:{"nodes": [127.0.0.1:30300]}      ├── start.sh # 启动脚本,用于启动节点      └── stop.sh # 停止脚本,用于停止节点   ├── node1 # 节点1文件夹   │.....
│   ├── node2 # 节点2文件夹   │.....
│   ├── node3 # 节点3文件夹   │.....
│   ├── sdk # SDK证书      ├── ca.crt # SSL连接根证书      ├── cert.cnf # 证书配置      ├── sdk.crt # SDK根证书      ├── sdk.key # SDK证书私钥   ├── start_all.sh # 启动脚本,用于启动所有节点   ├── stop_all.sh # 停止脚本,用于停止所有节点