FISCO BCOS 区块链¶
标签:FISCO BCOS介绍
关键特性
开发工具
FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。
社区以开源链接多方,截止2020年5月,汇聚了超1000家企业及机构、逾万名社区成员参与共建共治,发展成为最大最活跃的国产开源联盟链生态圈。底层平台可用性经广泛应用实践检验,数百个应用项目基于FISCO BCOS底层平台研发,超80个已在生产环境中稳定运行,覆盖文化版权、司法服务、政务服务、物联网、金融、智慧社区等领域。
注解
FISCO BCOS以联盟链的实际需求为出发点,兼顾性能、安全、可运维性、易用性、可扩展性,支持多种SDK,并提供了可视化的中间件工具,大幅缩短建链、开发、部署应用的时间。此外,FISCO BCOS通过信通院可信区块链评测功能、性能两项评测,单链TPS可达两万。
为了支撑海量服务的需求,v3.0稳定版从系统架构、处理流程、执行、存储上进行了相应的设计,并推出3种不同形态满足不同区块链部署场景的差异化需求。
关键特性¶
Air 、Pro、Max:可部署为三种架构形态
轻便Air版:拥有与 v2.0版本相同的形态,所有功能在一个区块链节点中(all-in-one)。该架构简单,可快速部署在任意环境中。你可以用它进行区块链入门、开发、测试、POC验证等工作。
专业Pro版:该架构通过将区块链节点的接入层模块独立为进程,在实现接入层与核心模块分区部署的同时,让区块链核心功模块以多群组方式扩展。该架构实现了分区隔离,可应对将来可能的业务拓展,适合有持续业务扩展的生产环境。
大容量Max版:该架构在Pro版的基础上提供链的核心模块主备切换的能力,并可通过多机部署交易执行器和接入分布式存储TiKV,实现计算与存储的平行拓展。该架构中的一个节点由一系列微服务组成,但它依赖较高的运维能力,适合需要海量计算和存储的场景。
Pipeline:区块流水线,连续且紧凑地生成区块
区块生成过程可拆分成四个阶段:打包、共识、执行、落盘。在过往设计中,系统需等待上一个区块完成四个阶段后才可进入下一个区块的生成。本版本采用流水线设计,让相邻区块的四个阶段前后交叠在一起,减少区块间的等待时间,提高连续出块速度。如:区块103在打包的同时,102在共识,101在执行,100在落盘。相关文档:两阶段并行拜占庭共识
DMC实现交易处理性能的多机拓展
在传统设计中,交易执行只可单机进行。v3.0稳定版采用独创的确定性多合约并行方案(Deterministic Multi-Contract,简称DMC),能够在系统运行时自动进行交易冲突处理,并将多个交易调度到不同机器中并行执行,用户可通过拓展计算实例实现交易处理性能的平行拓展。相关文档:确定性多合约并行
+TiKV:分布式事务性提交,支撑海量存储
v3.0稳定版集成TiKV存储引擎,并且在其基础上二次开发,支持分布式事务性提交,结合DMC多计算实例,充分发挥存储性能,支撑海量数据上链。同时,本版本引入KeyPage机制,参考内存页的缓存机制,将key-value组织成页的方式存取,解决了以往采用key-value的方式存储数据时,存储数据零散的问题,提升数据访问局部性,更适合大批量数据存取。相关文档:基于事务的存储模块
区块链文件系统:所见即所得的合约数据管理
支持通过区块链文件系统管理链上资源,可像操作文件系统一样管理链上的合约,并通过合约的路径进行调用,命令包括:pwd、cd、ls、tree、mkdir、ln。用户可以通过控制台体验该功能。相关文档:区块链合约文件系统
SDK基础库:更方便的全平台国密接入
v3.0稳定版构建了通用国密基础组件,将国密算法、国密通信协议、国产密码机接入协议与FISCO BCOS的区块链基础数据结构封装于其中,基于该基础组件可快速开发出不同平台、不同操作系统和不同编程语言的SDK,大大提升研发效率。相关文档:多语言SDK
交易并行冲突分析工具:自动生成交易冲突变量
在v2.0版本中要实现并行交易,需要在写合约时手动指定交易冲突变量。本版本引入了交易并行冲突分析工具,写合约时无需手动指定交易冲突变量,只需关注自身代码实现,合约编译时工具自动生成交易冲突变量,相应的交易即可自动并行执行。
WBC-Liquid:用Rust写合约
除支持Soldity语言外,本版本也支持用Rust写合约。WBC-Liquid是微众区块链开发的基于Rust的智能合约编程语言,借助Rust语言特性,能够实现比Solidity语言更强大的编程功能。相关文档:Liquid 在线文档
权限治理框架:多方投票治理区块链
本版本内置权限治理框架,直接从区块链实现层提供有效的权限控制。开启权限治理功能后,对区块链的修改需进行多方投票的授权。基于该框架,区块链参与者们能够定制区块链上的治理策略并通过投票的方式不断迭代更新。相关文档:权限治理体系设计
特性继承与升级
v3.0稳定版也继承了 v2.0版本的诸多重要特性并进行升级,包括:
PBFT共识算法:立即一致的共识算法,实现交易秒级确认
Solidity:支持至0.8.11版本
CRUD:采用表结构存储数据,本版本中封装了更易用的接口,对业务开发更友好
AMOP:链上信使协议,借助区块链的P2P网络实现信息传输,实现接入区块链的应用间数据通信
落盘加密:区块链节点的私钥和数据加密存储于物理硬盘中,物理硬件丢失也无法解密
密码算法:内置群环签名等密码算法,可支持各种安全多方计算场景
区块链监控:实现区块链状态的实时监控与数据上报
整体架构 | |
---|---|
架构模型 | 灵活自适应的区块链框架,目前包括轻量级的Air版本FISCO BCOS和适用于复杂业务场景的Pro版本FISCO BCOS |
群组架构 | 支持链内动态扩展多群组 |
分布式存储 | 支持海量数据存储 |
并行计算 | 支持基于DAG(有向无环图)和DMC(确定性合约并行算法)块内交易并行执行 |
节点类型 | 共识节点、观察节点 |
计算模型 | 排序-执行-验证 |
系统性能 | |
峰值TPS | 4万+ TPS(PBFT) |
交易确认时延 | 秒级 |
硬件推荐配置 | |
CPU | 2.4GHz * 8核 |
内存 | 8GB |
存储 | 4TB |
网络带宽 | 10Mb |
账本模型 | |
数据结构 | 链式结构,区块通过哈希链相连 |
是否分叉 | 不分叉 |
记账类型 | 账户模型(非UTXO) |
共识算法 | |
共识框架 | 可插拔设计 |
共识算法 | PBFT |
存储引擎 | |
存储设计 | 支持KV和SQL |
引擎类型 | 支持rocksdb |
CRUD接口 | 提供CRUD接口访问链上数据 |
网络协议 | |
节点间通信 | P2P协议 |
客户端与节点通信 | WebSocket协议 |
消息订阅服务 | AMOP协议 |
智能合约 | |
合约引擎 | 支持WASM和EVM |
合约语言 | 支持Solidity, C++和WBC-Liquid |
引擎特点 | 图灵完备,沙盒运行 |
版本控制 | 基于CNS支持多版本合约 |
密码算法和协议 | |
国密算法 | 支持 |
国密SSL | 支持 |
哈希算法 | Keccak256、SM3 |
对称加密算法 | AES、SM4 |
非对称加密算法 | ECDSA、SM2 |
非对称加密椭圆曲线 | secp256k1、sm2p256v1 |
安全控制 | |
通信安全 | 支持全流程SSL |
准入安全 | 基于PKI身份认证体系 |
证书管理 | 支持证书颁发、撤销、更新 |
权限控制 | 支持细粒度权限控制 |
隐私保护 | |
物理隔离 | 群组间数据隔离 |
场景化隐私保护机制 | 基于WeDPR支持隐匿支付、匿名投票、匿名竞拍、选择性披露等场景 |
跨链协议 | |
SPV | 提供获取SPV证明的接口 |
跨链协议 | 基于WeCross支持同构、异构跨链 |
开发支持 | |
开发建链工具 | 提供Air版本区块链部署工具build_chain, Pro版本区块链部署工具BcosBuilder/pro和Maxb版本部署工具BcosBuilder/max |
合约部署与测试工具 | 交互式控制台 基于Java SDK的控制台 |
SDK语言 | Java(待适配语言:go、nodejs、Rust、Python、iOS、Android) |
快速开发组件 | 提供Spring-boot-starter |
运维支持 | |
动态管理节点 | 支持动态新增、剔除、变更节点 |
动态更改配置 | 支持动态变更系统配置 |
数据备份与恢复 | 提供数据导出与恢复服务组件 |
监控统计 | 输出统计日志,提供监控工具 |