FISCO BCOS Pro版本

版本说明

FISCO BCOS 3.0支持Pro版本微服务区块链架构,Pro版本FISCO BCOS包含RPC服务、Gateway服务和节点服务,每个服务均可独立部署和扩容,本章通过单机搭建Pro版本2节点FISCO BCOS联盟链,帮助用户掌握Pro版本FISCO BCOS区块链的部署流程。请参考这里使用支持的硬件和平台进行操作。

注意:

  • Pro版本FISCO BCOS使用 BcosBuilder/pro 工具进行建链和扩容等相关操作,该工具的介绍请参考 BcosBuilder
  • FISCO BCOS 3.x基于tars进行微服务构建和管理,搭建Pro版本FISCO BCOS之前,需先安装tars服务,本章介绍了docker版本tars服务的搭建流程,若需要了解更多tars部署、构建相关的信息,请参考 这里
  • 本章基于Docker搭建tars服务,请确保拥有 root 权限

1. BcosBuilder基本使用

这里BcosBuilder就不过详细介绍,官网: BcosBuilder

1.1 配置介绍

BcosBuilderpro/conf目录下提供了一些配置模板,用于帮助用户快速完成Pro版本区块链的部署、扩容。本章从tars服务配置项、区块链部署配置项、区块链扩容配置项三个角度详细介绍BcosBuilder的配置项。

1.2 BcosBuilder部署配置

Tars的服务配置项

[tars]# 访问tars网页控制台的url tars_url = "http://127.0.0.1:3000"# 访问tars服务的token,可通过tars网页控制台的【admin】->【用户中心】->【token管理】进行token申请和查询。tars_token = ""# 放置Pro版本二进制包的路径 如果配置了就会从指定目录进行服务部署tars_pkg_dir = ""

区块链服务配置项

区块链服务部署相关的配置项主要包括链配置项、RPC/Gateway服务配置项以及区块链节点服务配置项,其配置模板位于BcosBuilder/proconf/config-deploy-example.toml路径下。

链配置项位于配置[chain]中,链ID为chain0, RPC与SDK之间、Gateway服务之间均采用RSA加密连接主要包括如下配置:

[chain]# 区块链服务所属的链的ID,默认为chain0chain_id="chain0"# RPC服务与SDK客户端之间采用的SSL连接类型,false/RSA加密连接,true/国密SSL连接rpc_sm_ssl=false# Gateway服务之间的SSL连接类型,false/RSA加密连接,true/国密SSL连接gateway_sm_ssl=false# RPC服务的CA证书路径,若该路径下有完整的CA证书、CA私钥#rpc_ca_cert_path=""# Gateway服务的CA证书路径,若该路径下有完整的CA证书、CA私钥#gateway_ca_cert_path=""

RPC服务配置项

RPC服务的配置项位于[[agency]].[agency.rpc]中,一个机构可部署一个RPC服务,一条链可包含多个机构,主要配置项包括:

[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url =# cipher_data_key =[agency.rpc]# 服务部署IP,支持多个,单须确保每个IP对应的机器上均安装了tarsnode服务deploy_ip=["172.25.0.3"]# RPC服务监听IPlisten_ip="0.0.0.0"# RPC服务监听端口listen_port=20200# 工作线程数目thread_count=4

Gateway服务配置项

RPC服务的配置项位于[[agency]].[agency.gateway]中,一个机构可部署一个Gateway服务,一条链可部署多个Gateway服务,主要配置项包括:

[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url =# cipher_data_key =[agency.gateway]# Gateway服务的部署IP,若配置多个,则会在多台机器上部署Gateway服务,达到平行扩展的目标。deploy_ip=["172.25.0.3"]# Gateway服务的监听IP,默认为0.0.0.0。listen_ip="0.0.0.0"#Gateway服务的监听端口,默认为30300。listen_port=30300# 所有Gateway服务的连接信息。peers=["172.25.0.3:30300", "172.25.0.3:30301"]

区块链节点服务配置项: (群组配置)

FISCO BCOS Pro版本区块链中每个区块链节点服务均属于一个群组,因此部署区块链节点前,首先需配置群组信息,群组配置项位于[[group]]中,具体如下:

[[group]]# 区块链节点所属的群组ID,默认为group。group_id="group0"# the genesis configuration path of the group, will generate new genesis configuration if not configurated# genesis_config_path = ""# 区块链节点运行的虚拟机类型,目前支持evm和wasm两种类型vm_type="evm"# 节点账本是否采用国密类型签名、验签、哈希、加密算法,默认为false。sm_crypto=false# 是否开启权限治理模式auth_check=false# 开启权限治理时,指定的初始化治理委员账号地址init_auth_address=""# 群组配置中还包括了创世块相关的配置:# 每个leader可以连续打包的区块数目,默认为5。leader_period = 1# 每个区块中可包含的最大交易数目,默认为1000。block_tx_count_limit = 1000# 共识算法类型,目前仅支持pbft共识算法。consensus_type = "pbft"# 每笔交易运行时消耗的gas上限,默认为300000000。gas_limit = "3000000000"# 数据兼容版本号,默认为3.0.0compatibility_version="3.0.0"

区块链节点服务配置项:部署配置

区块链节点服务部署配置项位于[[agency]].[[agency.group]].[[agency.group.node]]中,具体如下:

[[agency]]# 节点服务名,在服务部署的场景下可不配置name = "agencyA" [[agency.group]]group_id = "group0"[[agency.group.node]]node_name = "node0"# 节点服务部署ipdeploy_ip = "172.25.0.3"# 是否开启落盘加密,默认为falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# 若开启了落盘加密,这里可配置key-manager的url# key_center_url =# 若开启了落盘加密,这里配置数据加密密钥# cipher_data_key =# 监控服务的监听端口,默认为3902monitor_listen_port = "3902"# 需要监控的区块链节点日志所在路径# monitor log path example:"/home/fisco/tars/framework/app_log/"monitor_log_path = ""

1.3 BcosBuilder扩容配置

RPC服务扩容配置

BcosBuilder提供了区块链节点服务扩容、RPC/Gateway服务扩容功能,区块链节点服务扩容的配置模板在conf/config-node-expand-example.toml路径下,RPC/Gateway服务扩容配置模板在conf/config-service-expand-example.toml路径下。

扩容RPC服务agencyABcosRpcService172.25.0.5的配置示例如下:

[chain]# 扩容的RPC服务所属的链ID。chain_id="chain0"# 扩容的RPC服务与SDK客户端之间是否采用国密SSL连接。rpc_sm_ssl=false# 指定扩容的RPC服务的CA证书和CA私钥所在路径。gateway_sm_ssl=false# the ca path of the expanded rpc service# must ensure that the path configuration is correct, otherwise the ssl verification will failrpc_ca_cert_path="generated/rpc/chain0/ca"# the ca path of the expanded gateway service# must ensure that the path configuration is correct, otherwise the ssl verification will failgateway_ca_cert_path="generated/gateway/chain0/ca"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url =# cipher_data_key =[agency.rpc]# 扩容的RPC服务的部署IP。deploy_ip=["172.25.0.5"]# 指定扩容的RPC服务的监听IP。listen_ip="0.0.0.0"# 指定扩容的RPC服务的监听端口。listen_port=10200# 扩容的RPC服务的工作线程数目。thread_count=4

Gateway服务扩容配置

类似于RPC服务,Gateway服务的扩容配置选项主要位于[chain][[agency]].[agency.gateway]配置下。

扩容Gaeway服务agencyABcosGatewayService172.25.0.5的配置示例如下:

[chain]# 扩容的Gateway服务所属的链ID。chain_id="chain0"# 扩容的Gateway服务与SDK客户端之间是否采用国密SSL连接。rpc_sm_ssl=false# 指定扩容的Gateway服务的CA证书和CA私钥所在路径。gateway_sm_ssl=false# the ca path of the expanded rpc service# must ensure that the path configuration is correct, otherwise the ssl verification will failrpc_ca_cert_path="generated/rpc/chain0/ca"# the ca path of the expanded gateway service# must ensure that the path configuration is correct, otherwise the ssl verification will failgateway_ca_cert_path="generated/gateway/chain0/ca"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url =# cipher_data_key = [agency.gateway]# 扩容的Gateway服务的部署IP。deploy_ip=["172.25.0.5"]# Gateway服务节点的监听IP,默认为0.0.0.0。listen_ip="0.0.0.0"# Gateway服务的监听端口,默认为30300。listen_port=40300# Gateway服务的连接信息,须配置所有Gateway服务节点的连接IP和连接端口信息。peers=["172.25.0.3:30300", "172.25.0.3:30301", "172.25.0.5:40300"]

区块链节点扩容配置

BcosBuilder/pro提供了区块链节点扩容功能,可为指定群组扩容新的区块链节点服务,区块链节点扩容配置模板位于conf/config-node-expand-example.toml路径下,主要包括链配置扩容部署配置

为机构agencyAgroup0群组扩容节点名为node1node2的区块链节点服务到172.25.0.5的配置示例如下:

[[agency]]name = "agencyA"[[agency.group]]# 扩容节点所属群组ID。group_id = "group0"[[agency.group.node]]node_name = "node1"deploy_ip = "172.25.0.5"# enable data disk encryption for bcos node or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url =# cipher_data_key =[[agency.group.node]]# 扩容的区块链节点服务名,不能和已有的区块链节点服务名冲突。node_name = "node2"# 扩容的区块链节点服务部署IP。deploy_ip = "172.25.0.5"# 扩容节点是否开启落盘加密。enable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key-manager的url,在开启落盘加密场景中需配置。# key_center_url =# 数据落盘加密密钥,在开启落盘加密场景中需配置。# cipher_data_key =monitor_listen_port = "3901"# monitor log path example:"/home/fisco/tars/framework/app_log/"monitor_log_path = ""

1.4 binary命令

二进制下载命令,目前包括-t(--type), -v(--version)和-p(--path)三个选项,所有选项均是可选的,默认从FISCO BCOS github release tags下载最新版本二进制到binary文件夹

(1) -o , --op 选项:

用于指定操作命令,目前支持gen-config, upload, deploy, upgrade, undeploy, expand, start, stop

  • gen-config: 产生配置文件。
  • upload: 在已经存在服务配置的场景下,上传并发布服务,一般和gen-config配合使用,先通过gen-config产生配置文件,然后通过upload指令上传并发布服务配置。
  • deploy: 部署服务,包括服务配置生成、服务发布两个步骤。
  • undeploy: 下线服务。
  • upgrade: 升级服务,用于升级服务的二进制。
  • expand: 扩容服务。
  • start: 启动服务。
  • stop: 停止服务。

(2) -t, --type选项

用于指定操作的服务类型,当使用-o(--op)选项时,必须设置该选项,目前包括rpc, gateway, node:

  • rpc: 指定操作的服务类型为RPC服务。
  • gateway: 指定操作的服务类型为Gateway服务。
  • node: 指定操作的服务类型为区块链节点服务。

(3) -c, --config选项

用于指定配置文件路径,默认为config.tomlBcosBuilder提供了四类配置模板:

  • conf/config-build-example.toml: 去tarsRPC、Gateway和区块链节点管理服务部署建立配置模板。
  • conf/config-deploy-example.toml: RPC、Gateway和区块链节点管理服务部署配置模板。
  • conf/config-service-expand-example.toml: RPC、Gateway服务扩容配置模板。
  • conf/config-node-expand-example.toml: 区块链节点管理服务配置模板。

(4) create-subne命令

  • -n/--name: 指定桥接网络的名称,如: tars-network
  • -s/--subnet: 指定桥接网络的网段,如: 172.25.0.0/16

2. Ubuntu20.04环境搭建

2.1 安装依赖

root@fisco:~# sudo apt-get updateroot@fisco:~# sudo apt-get install -y curl docker.io docker-compose python3 wget python3-piproot@fisco:~# vim/etc/docker/daemon.json{"registry-mirrors": ["https://ably8t50.mirror.aliyuncs.com"]}# 加载配置重启服务root@fisco:~# systemctl daemon-reloadroot@fisco:~# systemctl restart docker

2.2 下载BcosBuilder

创建fisco的目录,方便操作管理,需要使用pip3安装列表的依赖。

root@fisco:~# mkdir -p ~/fisco && cd ~/fiscoroot@fisco:~# curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.0.0/BcosBuilder.tgz && tar -xvf BcosBuilder.tgz# 安装构建工具依赖包root@fisco:~# cd BcosBuilder && pip3 install -r requirements.txt

2.3 配置Tars服务

Pro版本的FISCO BCOS使用tars服务进行微服务构建和管理,tars服务主要包括TarsFrameworkTarsNode,关于tars服务更详细的介绍请参考这里.

BcosBuilder提供了bridgehost两种网络模式的tars docker配置,单机体验版推荐使用bridge网络模式的tars docker配置,生产环境推荐使用host网络模式的tars docker配置。

# 进入BcosBuilder目录root@fisco:~# cd ~/fisco/BcosBuilder/pro# 创建网段为172.25.0.0/16的bridge类型网络tars-networkroot@fisco:BcosBuilder/pro# python3 build_chain.py create-subnet -n tars-network -s 172.25.0.0/16root@fisco:BcosBuilder/pro# cd ../docker/bridge/linux/framework# 配置MYSQL密码,这里假设密码设置为000000root@fisco:framework# root@fisco:~# sed -i 's/MYSQL_ROOT_PASSWORD: ""/MYSQL_ROOT_PASSWORD: "000000"/g' docker-compose.yml# 创建并启动tars管理服务root@fisco:framework# docker-compose up -d

初次安装tars管理服务后,需要进行如下配置:

  • 登录配置:初始化管理员用户admin的登录密码。
  • 申请token:登录到tars网页管理平台申请用于服务构建和管理的token。

初次使用tars管理平台,输入网址http://127.0.0.1:3000/,参考下图初始化管理员密码,并进入到【admin】->【用户中心】->【token管理】申请token。

2.4 部署Pro版本区块链节点

Pro版本FISCO BCOS包括RPC服务、Gateway服务以及区块链节点服务BcosNodeService。

  • RPC服务:负责接收客户端请求,并将请求转发到节点进行处理, RPC服务可横向扩展,一个RPC服务可接入多个区块链节点服务
  • Gateway服务:负责跨机构区块链节点之间的网络通信,Gateway服务横向可扩展,一个Gateway服务可接入多个区块链节点服务
  • 区块链节点服务BcosNodeService:提供区块链相关的服务,包括共识、执行、交易上链等,节点服务通过接入到RPC服务和Gateway服务获取网络通信功能。

本章以在单机上部署2机构2节点区块链服务为例,介绍Pro版本FISCO BCOS搭建部署流程,对应的服务组网模式如下:

2.5 下载二进制

构建Pro版本FISCO BCOS前,需要先下载二进制包,BcosBuilder的提供了基于linux的静态二进制包下载功能,可部署到tarsnode中,下载最新二进制的命令如下:

root@fisco:BcosBuilder/pro# python3 build_chain.py download_binary -t cdn

2.6 部署所有服务

分别部署服务步骤如下:

  1. 部署RPC服务
  2. 部署Gateway服务
  3. 部署Node服务
  4. 部署Monitor服务

config.toml的配置文件如下:

[chain]chain_id="chain0"# the rpc-service enable sm-ssl or not, default disable sm-sslrpc_sm_ssl=false# the gateway-service enable sm-ssl or not, default disable sm-ssmgateway_sm_ssl=false# the existed rpc service ca path, will generate new ca if not configured#rpc_ca_cert_path=""# the existed gateway service ca path, will generate new ca if not configured#gateway_ca_cert_path="[[group]]group_id="group0"# the genesis configuration path of the group, will generate new genesis configuration if not configured# genesis_config_path = ""# VM type, now only support evm/wasmvm_type="evm"# use sm-crypto or notsm_crypto=false# enable auth-check or notauth_check=falseinit_auth_address=""# the genesis config# the number of blocks generated by each leaderleader_period = 1# the max number of transactions of a blockblock_tx_count_limit = 1000# consensus algorithm now support PBFT(consensus_type=pbft)consensus_type = "pbft"# transaction gas limitgas_limit = "3000000000"# compatible version, can be dynamically upgraded through setSystemConfig# the default is 3.0.0-rc4compatibility_version="3.0.0"[[agency]]name = "agencyA"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url = # cipher_data_key = [agency.rpc]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=20200thread_count=4[agency.gateway]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=30300peers=["172.25.0.3:30300", "172.25.0.3:30301"][[agency.group]]group_id = "group0"[[agency.group.node]]node_name = "node0"deploy_ip = "172.25.0.3"# enable data disk encryption for bcos node or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url = # cipher_data_key =monitor_listen_port = "3902"# monitor log path example:"/home/fisco/tars/framework/app_log/" monitor_log_path = "" [[agency]]name = "agencyB"# enable data disk encryption for rpc/gateway or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url = # cipher_data_key = [agency.rpc]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=20201thread_count=4[agency.gateway]deploy_ip=["172.25.0.3"]listen_ip="0.0.0.0"listen_port=30301peers=["172.25.0.3:30300", "172.25.0.3:30301"][[agency.group]]group_id = "group0"[[agency.group.node]]node_name = "node0"deploy_ip = "172.25.0.3"# enable data disk encryption for bcos node or not, default is falseenable_storage_security = false# url of the key center, in format of ip:port, please refer to https://github.com/FISCO-BCOS/key-manager for details# key_center_url = # cipher_data_key =monitor_listen_port = "3901"# monitor log path example:"/home/fisco/tars/framework/app_log/" monitor_log_path = ""

将写好的部署配置文件,粘贴一份到当前的pro目录下:

# 进入操作目录root@fisco:~# cd ~/fisco/BcosBuilder/pro# 从conf目录拷贝配置root@fisco:BcosBuilder/pro# cp conf/config-deploy-example.toml config.toml# 1.部署RPC服务root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t rpc# 2.部署Gateway服务root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t gateway# 3.部署Node服务root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t node # 4.部署Monitor服务root@fisco:BcosBuilder/pro# python3 build_chain.py chain -o deploy -t monitor

访问验证如下:

2.7 配置控制台

控制台同时适用于Pro版本和Air版本的FISCO BCOS区块链,且在体验上完全一致。Pro版本区块链体验环境搭建完毕后,可配置并使用控制台向Pro版本区块链发送交易。

root@fisco:BcosBuilder/pro# sudo apt install -y default-jdkroot@fisco:~# cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.shroot@fisco:fisco# cp -n console/conf/config-example.toml console/conf/config.tomlroot@fisco:fisco# cp -r BcosBuilder/pro/generated/rpc/chain0/agencyBBcosRpcService/172.25.0.3/sdk/* console/conf

启动并使用控制台

root@fisco:fisco# bash start.sh=============================================================================================Welcome to FISCO BCOS console(3.0.0)!Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console. ________ ____________ ______ ______ _______ ______ ______ ______||\/\ /\ /\ | \ /\ /\ /\| $$$$$$$$\$$$$$|$$$$$$|$$$$$$|$$$$$$\| $$$$$$$|$$$$$$|$$$$$$|$$$$$$\| $$__ | $$ | $$___\$| $$ \$| $$| $$| $$__/ $| $$ \$| $$| $| $$___\$$| $$\| $$\$$\| $$ | $$| $$| $$$| $$ | $$| $$\$$\| $$$$$| $$_\$$$$$$| $$ __| $$| $$| $$$$$$$| $$ __| $$| $$_\$$$$$$\| $$_| $$_|\__| $| $$__/| $$__/ $$| $$__/ $| $$__/| $$__/ $|\__| $$| $$ | $$ \\$$$$\$$$$\$$$$| $$$$\$$$$\$$$$\$$$$ \$$\$$$$$$ \$$$$$$\$$$$$$\$$$$$$\$$$$$$$\$$$$$$\$$$$$$\$$$$$$=============================================================================================