赞
踩
参考链接: FISCO BCOS 技术文档-版本和兼容性
FISCO BCOS 3.x
接入层:接入层主要负责区块链连接的能力,包括提供P2P能力的“对外网关服务”和提供给SDK访问的“对内网关服务”。在联盟链的体系中,“对外网关服务”管理了机构对外连接的出入口,负责机构级别的安全认证。“对内网关服务”则提供给机构内的客户端(应用端)访问入口。两个网关服务都可以平行扩展、多活部署、负载均衡,满足高可用要求。
调度层:调度层是区块链内核运转调度的“大脑中枢”系统,负责整个区块链系统运行调度,包括网络分发调度、交易池管理、共识机制、计算调度等模块。其中,网络分发模块主要是与接入层实现互联通信功能,处理消息分发逻辑;交易池管理主要负责交易的接收、签名验证、淘汰等功能;共识机制负责交易排序、区块打包以及对区块结果进行分布式共识,确保一致性;计算调度则完成交易验证(核心是智能合约的验证)的调度处理,实现并行验证,是整个系统吞吐量的关键。
计算层:这里主要负责交易验证,需要将交易解码放入合约虚拟机中执行,得到交易执行结果。交易验证是整个区块链的核心,尤其是基于智能合约的区块链系统,交易验证的计算可能需要花费较大的CPU开销。因此,如何实现并行化交易验证,通过集群化模式实现交易验证计算的平行扩展是非常重要的。
存储层:存储层负责落盘存储交易、区块、账本状态等数据,存储层重点关注如何支撑海量数据的存储,采用分布式存储集群的方式可实现存储容量可扩展。分布式存储业界已有许多稳定可复用的开源组件(如TiKV),这层将复用成熟组件。
管理层:管理层是为整个区块链系统各模块实现可视化管理的平台,包括部署、配置、日志、网络路由等管理功能。FISCO BCOS 3.0系统架构基于开源微服务框架Tars构建,这层的能力复用成熟的Tars-Framwork管理组件。
硬件推荐配置 | |
---|---|
CPU | 2.4GHz * 8核 |
内存 | 8GB |
存储 | 4TB |
网络带宽 | 10Mb |
本文使用硬件
CPU: Intel® CoreTMI7-10875H CPU @ 2.30GHz * 8核
内存 : 虚拟机8GB
存储 : 虚拟机100GB
本文使用软件系统
FISCO-BCOS v3.0.1 | 推荐版本 | 最低版本 | 说明 |
---|---|---|---|
Console | 3.0.1 | 3.0.0 | |
Java SDK | 3.0.1 | 3.0.0 | |
CPP SDK | 3.0.0 | 3.0.0 | |
Solidity | 0.8.11 | 最低 0.4.25,最高 0.8.11 | 需根据合约版本下载编译器(控制台) |
WBC-Liquid | 1.0.0-rc3 | 1.0.0-rc3 |
参考链接: 搭建第一个区块链网络
搭建Air版本FISCO BCOS联盟链
安装centos依赖
sudo yum install -y curl openssl openssl-devel wget
输出结果:
已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.ustc.edu.cn * extras: mirrors.ustc.edu.cn * updates: mirrors.ustc.edu.cn 软件包 wget-1.14-18.el7_6.1.x86_64 已安装并且是最新版本 正在解决依赖关系 --> 正在检查事务 ---> 软件包 curl.x86_64.0.7.29.0-59.el7 将被 升级 ---> 软件包 curl.x86_64.0.7.29.0-59.el7_9.1 将被 更新 --> 正在处理依赖关系 libcurl = 7.29.0-59.el7_9.1,它被软件包 curl-7.29.0-59.el7_9.1.x86_64 需要 ---> 软件包 openssl.x86_64.1.1.0.2k-19.el7 将被 升级 ---> 软件包 openssl.x86_64.1.1.0.2k-25.el7_9 将被 更新 --> 正在处理依赖关系 openssl-libs(x86-64) = 1:1.0.2k-25.el7_9,它被软件包 1:openssl-1.0.2k-25.el7_9.x86_64 需要 ---> 软件包 openssl-devel.x86_64.1.1.0.2k-25.el7_9 将被 安装 --> 正在处理依赖关系 zlib-devel(x86-64),它被软件包 1:openssl-devel-1.0.2k-25.el7_9.x86_64 需要 --> 正在处理依赖关系 krb5-devel(x86-64),它被软件包 1:openssl-devel-1.0.2k-25.el7_9.x86_64 需要 --> 正在检查事务 ---> 软件包 krb5-devel.x86_64.0.1.15.1-54.el7_9 将被 安装 --> 正在处理依赖关系 libkadm5(x86-64) = 1.15.1-54.el7_9,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 --> 正在处理依赖关系 krb5-libs(x86-64) = 1.15.1-54.el7_9,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 --> 正在处理依赖关系 libverto-devel,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 --> 正在处理依赖关系 libselinux-devel,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 --> 正在处理依赖关系 libcom_err-devel,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 --> 正在处理依赖关系 keyutils-libs-devel,它被软件包 krb5-devel-1.15.1-54.el7_9.x86_64 需要 ---> 软件包 libcurl.x86_64.0.7.29.0-59.el7 将被 升级 ---> 软件包 libcurl.x86_64.0.7.29.0-59.el7_9.1 将被 更新 ---> 软件包 openssl-libs.x86_64.1.1.0.2k-19.el7 将被 升级 ---> 软件包 openssl-libs.x86_64.1.1.0.2k-25.el7_9 将被 更新 ---> 软件包 zlib-devel.x86_64.0.1.2.7-20.el7_9 将被 安装 --> 正在处理依赖关系 zlib = 1.2.7-20.el7_9,它被软件包 zlib-devel-1.2.7-20.el7_9.x86_64 需要 --> 正在检查事务 ---> 软件包 keyutils-libs-devel.x86_64.0.1.5.8-3.el7 将被 安装 ---> 软件包 krb5-libs.x86_64.0.1.15.1-50.el7 将被 升级 --> 正在处理依赖关系 krb5-libs(x86-64) = 1.15.1-50.el7,它被软件包 krb5-workstation-1.15.1-50.el7.x86_64 需要 ---> 软件包 krb5-libs.x86_64.0.1.15.1-54.el7_9 将被 更新 ---> 软件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 将被 安装 ---> 软件包 libkadm5.x86_64.0.1.15.1-50.el7 将被 升级 ---> 软件包 libkadm5.x86_64.0.1.15.1-54.el7_9 将被 更新 ---> 软件包 libselinux-devel.x86_64.0.2.5-15.el7 将被 安装 --> 正在处理依赖关系 libsepol-devel(x86-64) >= 2.5-10,它被软件包 libselinux-devel-2.5-15.el7.x86_64 需要 --> 正在处理依赖关系 pkgconfig(libsepol),它被软件包 libselinux-devel-2.5-15.el7.x86_64 需要 --> 正在处理依赖关系 pkgconfig(libpcre),它被软件包 libselinux-devel-2.5-15.el7.x86_64 需要 ---> 软件包 libverto-devel.x86_64.0.0.2.5-4.el7 将被 安装 ---> 软件包 zlib.x86_64.0.1.2.7-18.el7 将被 升级 ---> 软件包 zlib.x86_64.0.1.2.7-20.el7_9 将被 更新 --> 正在检查事务 ---> 软件包 krb5-workstation.x86_64.0.1.15.1-50.el7 将被 升级 ---> 软件包 krb5-workstation.x86_64.0.1.15.1-54.el7_9 将被 更新 ---> 软件包 libsepol-devel.x86_64.0.2.5-10.el7 将被 安装 ---> 软件包 pcre-devel.x86_64.0.8.32-17.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ============================================================================================ Package 架构 版本 源 大小 ============================================================================================ 正在安装: openssl-devel x86_64 1:1.0.2k-25.el7_9 updates 1.5 M 正在更新: curl x86_64 7.29.0-59.el7_9.1 updates 271 k openssl x86_64 1:1.0.2k-25.el7_9 updates 494 k 为依赖而安装: keyutils-libs-devel x86_64 1.5.8-3.el7 base 37 k krb5-devel x86_64 1.15.1-54.el7_9 updates 273 k libcom_err-devel x86_64 1.42.9-19.el7 base 32 k libselinux-devel x86_64 2.5-15.el7 base 187 k libsepol-devel x86_64 2.5-10.el7 base 77 k libverto-devel x86_64 0.2.5-4.el7 base 12 k pcre-devel x86_64 8.32-17.el7 base 480 k zlib-devel x86_64 1.2.7-20.el7_9 updates 50 k 为依赖而更新: krb5-libs x86_64 1.15.1-54.el7_9 updates 810 k krb5-workstation x86_64 1.15.1-54.el7_9 updates 821 k libcurl x86_64 7.29.0-59.el7_9.1 updates 223 k libkadm5 x86_64 1.15.1-54.el7_9 updates 179 k openssl-libs x86_64 1:1.0.2k-25.el7_9 updates 1.2 M zlib x86_64 1.2.7-20.el7_9 updates 90 k 事务概要 ============================================================================================ 安装 1 软件包 (+8 依赖软件包) 升级 2 软件包 (+6 依赖软件包) 总下载量:6.6 M Downloading packages: No Presto metadata available for updates 警告:/var/cache/yum/x86_64/7/base/packages/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm 的公钥尚未安装 (1/17): keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm | 37 kB 00:00:00 curl-7.29.0-59.el7_9.1.x86_64.rpm 的公钥尚未安装 (2/17): curl-7.29.0-59.el7_9.1.x86_64.rpm | 271 kB 00:00:00 (3/17): krb5-libs-1.15.1-54.el7_9.x86_64.rpm | 810 kB 00:00:00 (4/17): krb5-devel-1.15.1-54.el7_9.x86_64.rpm | 273 kB 00:00:00 (5/17): krb5-workstation-1.15.1-54.el7_9.x86_64.rpm | 821 kB 00:00:00 (6/17): libcurl-7.29.0-59.el7_9.1.x86_64.rpm | 223 kB 00:00:00 (7/17): libkadm5-1.15.1-54.el7_9.x86_64.rpm | 179 kB 00:00:00 (8/17): libcom_err-devel-1.42.9-19.el7.x86_64.rpm | 32 kB 00:00:00 (9/17): libsepol-devel-2.5-10.el7.x86_64.rpm | 77 kB 00:00:00 (10/17): libselinux-devel-2.5-15.el7.x86_64.rpm | 187 kB 00:00:00 (11/17): libverto-devel-0.2.5-4.el7.x86_64.rpm | 12 kB 00:00:00 (12/17): openssl-1.0.2k-25.el7_9.x86_64.rpm | 494 kB 00:00:00 (13/17): openssl-libs-1.0.2k-25.el7_9.x86_64.rpm | 1.2 MB 00:00:00 (14/17): zlib-1.2.7-20.el7_9.x86_64.rpm | 90 kB 00:00:00 (15/17): zlib-devel-1.2.7-20.el7_9.x86_64.rpm | 50 kB 00:00:00 (16/17): pcre-devel-8.32-17.el7.x86_64.rpm | 480 kB 00:00:00 (17/17): openssl-devel-1.0.2k-25.el7_9.x86_64.rpm | 1.5 MB 00:00:00 -------------------------------------------------------------------------------------------- 总计 4.8 MB/s | 6.6 MB 00:00:01 从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥 导入 GPG key 0xF4A80EB5: 用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" 指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 软件包 : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda) 来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在更新 : zlib-1.2.7-20.el7_9.x86_64 1/25 正在更新 : krb5-libs-1.15.1-54.el7_9.x86_64 2/25 正在更新 : 1:openssl-libs-1.0.2k-25.el7_9.x86_64 3/25 正在更新 : libkadm5-1.15.1-54.el7_9.x86_64 4/25 正在更新 : libcurl-7.29.0-59.el7_9.1.x86_64 5/25 正在安装 : zlib-devel-1.2.7-20.el7_9.x86_64 6/25 正在安装 : libcom_err-devel-1.42.9-19.el7.x86_64 7/25 正在安装 : libverto-devel-0.2.5-4.el7.x86_64 8/25 正在安装 : libsepol-devel-2.5-10.el7.x86_64 9/25 正在安装 : pcre-devel-8.32-17.el7.x86_64 10/25 正在安装 : libselinux-devel-2.5-15.el7.x86_64 11/25 正在安装 : keyutils-libs-devel-1.5.8-3.el7.x86_64 12/25 正在安装 : krb5-devel-1.15.1-54.el7_9.x86_64 13/25 正在安装 : 1:openssl-devel-1.0.2k-25.el7_9.x86_64 14/25 正在更新 : curl-7.29.0-59.el7_9.1.x86_64 15/25 正在更新 : krb5-workstation-1.15.1-54.el7_9.x86_64 16/25 正在更新 : 1:openssl-1.0.2k-25.el7_9.x86_64 17/25 清理 : 1:openssl-1.0.2k-19.el7.x86_64 18/25 清理 : krb5-workstation-1.15.1-50.el7.x86_64 19/25 清理 : curl-7.29.0-59.el7.x86_64 20/25 清理 : libcurl-7.29.0-59.el7.x86_64 21/25 清理 : libkadm5-1.15.1-50.el7.x86_64 22/25 清理 : krb5-libs-1.15.1-50.el7.x86_64 23/25 清理 : 1:openssl-libs-1.0.2k-19.el7.x86_64 24/25 清理 : zlib-1.2.7-18.el7.x86_64 25/25 验证中 : libselinux-devel-2.5-15.el7.x86_64 1/25 验证中 : keyutils-libs-devel-1.5.8-3.el7.x86_64 2/25 验证中 : zlib-1.2.7-20.el7_9.x86_64 3/25 验证中 : 1:openssl-1.0.2k-25.el7_9.x86_64 4/25 验证中 : pcre-devel-8.32-17.el7.x86_64 5/25 验证中 : libsepol-devel-2.5-10.el7.x86_64 6/25 验证中 : libverto-devel-0.2.5-4.el7.x86_64 7/25 验证中 : libkadm5-1.15.1-54.el7_9.x86_64 8/25 验证中 : 1:openssl-libs-1.0.2k-25.el7_9.x86_64 9/25 验证中 : 1:openssl-devel-1.0.2k-25.el7_9.x86_64 10/25 验证中 : zlib-devel-1.2.7-20.el7_9.x86_64 11/25 验证中 : krb5-devel-1.15.1-54.el7_9.x86_64 12/25 验证中 : curl-7.29.0-59.el7_9.1.x86_64 13/25 验证中 : krb5-workstation-1.15.1-54.el7_9.x86_64 14/25 验证中 : libcom_err-devel-1.42.9-19.el7.x86_64 15/25 验证中 : krb5-libs-1.15.1-54.el7_9.x86_64 16/25 验证中 : libcurl-7.29.0-59.el7_9.1.x86_64 17/25 验证中 : libkadm5-1.15.1-50.el7.x86_64 18/25 验证中 : 1:openssl-libs-1.0.2k-19.el7.x86_64 19/25 验证中 : zlib-1.2.7-18.el7.x86_64 20/25 验证中 : krb5-workstation-1.15.1-50.el7.x86_64 21/25 验证中 : 1:openssl-1.0.2k-19.el7.x86_64 22/25 验证中 : libcurl-7.29.0-59.el7.x86_64 23/25 验证中 : curl-7.29.0-59.el7.x86_64 24/25 验证中 : krb5-libs-1.15.1-50.el7.x86_64 25/25 已安装: openssl-devel.x86_64 1:1.0.2k-25.el7_9 作为依赖被安装: keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-54.el7_9 libcom_err-devel.x86_64 0:1.42.9-19.el7 libselinux-devel.x86_64 0:2.5-15.el7 libsepol-devel.x86_64 0:2.5-10.el7 libverto-devel.x86_64 0:0.2.5-4.el7 pcre-devel.x86_64 0:8.32-17.el7 zlib-devel.x86_64 0:1.2.7-20.el7_9 更新完毕: curl.x86_64 0:7.29.0-59.el7_9.1 openssl.x86_64 1:1.0.2k-25.el7_9 作为依赖被升级: krb5-libs.x86_64 0:1.15.1-54.el7_9 krb5-workstation.x86_64 0:1.15.1-54.el7_9 libcurl.x86_64 0:7.29.0-59.el7_9.1 libkadm5.x86_64 0:1.15.1-54.el7_9 openssl-libs.x86_64 1:1.0.2k-25.el7_9 zlib.x86_64 0:1.2.7-20.el7_9 完毕!
“sudo” : 意为以管理员身份运行
参考链接: sudo 命令
“yum” : 是一个在CentOS中的Shell前端软件包管理器。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
参考链接: yum 命令
“install” : 安装命令
参考链接: install命令
“-y” : 当安装过程提示选择全部为"yes"
“curl”
“openssl”
“openssl-devel”
“wget”
创建操作目录
cd ~ && mkdir -p fisco && cd fisco
下载安装脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.0.1/build_chain.sh && chmod u+x build_chain.sh
输出结果:
######################################################################## 100.0%
搭建4节点非国密联盟链
请确保机器的30300-30303,20200-20203,8545-8548端口没有被占用。
在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链:
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200
其中-p选项指定起始端口,分别是p2p监听端口、rpc监听端口
输出结果:
[INFO] Downloading tassl binary from https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/tassl-1.1.1b/tassl-1.1.1b-linux-x86_64.tar.gz... --2022-10-06 15:31:40-- https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/tassl-1.1.1b/tassl-1.1.1b-linux-x86_64.tar.gz 正在解析主机 osp-1257653870.cos.ap-guangzhou.myqcloud.com (osp-1257653870.cos.ap-guangzhou.myqcloud.com)... 112.49.57.187, 112.49.57.178, 112.49.57.151, ... 正在连接 osp-1257653870.cos.ap-guangzhou.myqcloud.com (osp-1257653870.cos.ap-guangzhou.myqcloud.com)|112.49.57.187|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:1780655 (1.7M) [application/x-gzip] 正在保存至: “tassl-1.1.1b-linux-x86_64.tar.gz” 100%[==================================================>] 1,780,655 3.29MB/s 用时 0.5s 2022-10-06 15:31:41 (3.29 MB/s) - 已保存 “tassl-1.1.1b-linux-x86_64.tar.gz” [1780655/1780655]) ._tassl-1.1.1b-linux-x86_64 tar: 忽略未知的扩展头关键字‘LIBARCHIVE.xattr.com.apple.quarantine’ tassl-1.1.1b-linux-x86_64 [INFO] Downloading fisco-bcos binary from https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.0.1/fisco-bcos-linux-x86_64.tar.gz ... ######################################################################## 100.0% [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] Generate uuid success: a710aa05-ecd6-49c9-909b-7bad5296e0d5 [INFO] Generate uuid success: 573df05f-c6c0-4031-9c47-2e055adc0347 [INFO] Generate uuid success: 40abbb61-3e0c-4a88-9280-94892a707328 [INFO] Generate uuid success: c39ae3d8-7a37-4abb-bc84-857fa210b028 ============================================================== [INFO] GroupID : group0 [INFO] ChainID : chain0 [INFO] fisco-bcos path : bin/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
启动所有节点
bash nodes/127.0.0.1/start_all.sh
输出结果:
try to start node0
try to start node1
try to start node2
try to start node3
node0 start successfully pid=56970
node1 start successfully pid=56972
node2 start successfully pid=56974
node3 start successfully pid=56968
检查进程是否启动
ps aux |grep -v grep |grep fisco-bcos
输出结果:
root 56968 10.2 0.3 1136916 25376 pts/0 Sl 15:33 0:03 /root/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini -g config.genesis
root 56970 9.5 0.2 1132816 20340 pts/0 Sl 15:33 0:03 /root/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini -g config.genesis
root 56972 9.3 0.2 1136916 20304 pts/0 Sl 15:33 0:03 /root/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini -g config.genesis
root 56974 9.4 0.2 1145108 22472 pts/0 Sl 15:33 0:03 /root/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini -g config.genesis
查看每个节点的网络连接数目
以node0为例:
tail -f nodes/127.0.0.1/node0/log/* |grep -i "heartBeat,connected count"
正常情况下会每间隔10秒输出连接信息,从输出日志可看出node0与另外3个节点均有连接,网络连接正常:
info|2022-10-06 15:33:45.671633|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2022-10-06 15:33:55.672023|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2022-10-06 15:34:05.672172|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2022-10-06 15:34:15.672484|[P2PService][Service][METRIC]heartBeat,connected count=3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。