FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。(深圳市金融区块链发展促进会,英文名称为Financial Services Blockchain Consortium (Shenzhen)(缩写为FISCO))
社区以开源链接多方,截至2022年末,FISCO BCOS已支撑300余个产业数字化标杆应用,开源生态圈汇聚超4000家机构 、超90000名个人成员,以及38家认证合作企业、400余名核心贡献者。底层平台可用性经广泛应用实践检验,数百个应用项目基于FISCO BCOS底层平台研发,超300个已在生产环境中稳定运行,覆盖文化版权、司法服务、政务服务、物联网、金融、智慧社区等领域,共同推动最大最活跃国产开源联盟链生态圈的形成。
FISCO BCOS以联盟链的实际需求为出发点,兼顾性能、安全、可运维性、易用性、可扩展性,支持多种SDK,并提供了可视化的中间件工具,大幅缩短建链、开发、部署应用的时间。此外,FISCO BCOS通过信通院可信区块链评测功能、性能两项评测,单链TPS可达两万。
关键特性
整体架构 | |
---|---|
架构模型 | 一体两翼多引擎 |
群组架构 | 支持链内动态扩展多群组 |
分布式存储 | 支持海量数据存储 |
并行计算 | 支持块内交易并行执行 |
节点类型 | 共识节点、观察节点 |
计算模型 | 排序-执行-验证 |
系统性能 | |
峰值TPS | 2万+ TPS(PBFT) |
交易确认时延 | 秒级 |
硬件推荐配置 | |
CPU | 2.4GHz * 8核 |
内存 | 8GB |
存储 | 4TB |
网络带宽 | 10Mb |
账本模型 | |
数据结构 | 链式结构,区块通过哈希链相连 |
是否分叉 | 不分叉 |
记账类型 | 账户模型(非UTXO) |
共识算法 | |
共识框架 | 可插拔设计 |
共识算法 | PBFT、Raft、rPBFT |
存储引擎 | |
存储设计 | 支持KV和SQL |
引擎类型 | 支持leveldb、rocksdb、mysql |
CRUD接口 | 提供CRUD接口访问链上数据 |
网络协议 | |
节点间通信 | P2P协议 |
客户端与节点通信 | JsonRPC,Channel协议 |
消息订阅服务 | AMOP协议 |
智能合约 | |
合约引擎 | 支持Solidity和预编译合约 |
引擎特点 | 图灵完备,沙盒运行 |
版本控制 | 基于CNS支持多版本合约 |
灰度升级 | 支持多版本合约共存、灰度升级 |
生命周期管理 | 支持合约和账户的冻结、解冻 |
密码算法和协议 | |
国密算法 | 支持 |
国密SSL | 支持 |
哈希算法 | Keccak256、SM3 |
对称加密算法 | AES、SM4 |
非对称加密算法 | ECDSA、SM2 |
非对称加密椭圆曲线 | secp256k1、sm2p256v1 |
安全控制 | |
存储安全 | 支持落盘数据加密存储 |
通信安全 | 支持全流程SSL |
准入安全 | 基于PKI身份认证体系 |
证书管理 | 支持证书颁发、撤销、更新 |
权限控制 | 支持细粒度权限控制 |
隐私保护 | |
物理隔离 | 群组间数据隔离 |
隐私保护协议 | 支持群签名、环签名、同态加密 |
场景化隐私保护机制 | 基于WeDPR支持隐匿支付、匿名投票、匿名竞拍、选择性披露等场景 |
跨链协议 | |
SPV | 提供获取SPV证明的接口 |
跨链协议 | 基于WeCross支持同构、异构跨链 |
开发支持 | |
合约开发工具 | WeBASE-IDE,ChainIDE |
开发建链工具 | 提供一键搭链脚本工具 |
合约部署与测试工具 | 交互式控制台 基于Java SDK的控制台 |
SDK语言 | Java、nodejs、go、python |
快速开发组件 | 提供Spring-boot-starter |
压测工具 | SDK内嵌压测工具,支持Caliper |
运维支持 | |
运维建链工具 | 提供企业级联盟链部署工具 |
可视化数据展现 | 区块链浏览器 |
可视化节点管理 | 基于WeBASE,提供节点管理器 |
动态管理节点 | 支持动态新增、剔除、变更节点 |
动态更改配置 | 支持动态变更系统配置 |
数据备份与恢复 | 提供数据导出与恢复服务组件 |
监控统计 | 输出统计日志,提供监控工具 |
监管审计 | 基于WeBASE,提供监管审计入口 |
架构
FISCO BCOS 在2.0中,创新性提出“一体两翼多引擎”架构,实现系统吞吐能力的横向扩展,大幅提升性能,在安全性、可运维性、易用性、可扩展性上,均具备行业领先优势。
一体指代群组架构,支持快速组建联盟和建链,让企业建链像建聊天群一样便利。根据业务场景和业务关系,企业可选择不同群组,形成多个不同账本的数据共享和共识,从而快速丰富业务场景、扩大业务规模,且大幅简化链的部署和运维成本。
两翼指的是支持并行计算模型和分布式存储,二者为群组架构带来更好的扩展性。前者改变了区块中按交易顺序串行执行的做法,基于DAG(有向无环图)并行执行交易,大幅提升性能;后者支持企业(节点)将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。
多引擎是一系列功能特性的总括,比如预编译合约能够突破EVM的性能瓶颈,实现高性能合约;控制台可以让用户快速掌握区块链使用技巧等。
上述功能特性均聚焦解决技术和体验的痛点,为开发、运维、治理和监管提供更多的工具支持,让系统处理更快、容量更高,使应用运行环境更安全、更稳定。
核心模块
FISCO BCOS采用高通量可扩展的多群组架构,可以动态管理多链、多群组,满足多业务场景的扩展需求和隔离需求,核心模块包括:
性能
为提升系统性能,FISCO BCOS从提升交易执行效率和并发两个方面优化了交易执行,使得交易处理性能达到万级以上。
-
基于C++的Precompiled合约:区块链底层内置C++语言编写的Precompiled合约,执行效率更高。
-
交易并行执行:基于DAG算法根据交易间互斥关系构建区块内交易执行流,最大化并行执行区块内的交易。
-
交易生命周期的异步并行处理:共识、同步、落盘等各个环节的异步化以及并行处理。
安全性
考虑到联盟链的高安全性需求,除了节点之间、节点与客户端之间通信采用TLS安全协议外,FISCO BCOS还实现了一整套安全解决方案:
可运维性
联盟链系统中,区块链的运维至关重要,FISCO BCOS提供了一整套运维部署工具,并引入了合约命名服务、数据归档和迁移、合约生命周期管理等工具来提升运维效率。
易用性
FISCO BCOS引入开发部署工具、交互式控制台、区块链浏览器等工具来提升系统的易用性,大幅缩短建链、部署应用的时间。
为了便于不同语言开发者快速开发应用,FISCO BCOS同时支持Java SDK、Node.js SDK、Python SDK和Go SDK
社区开发工具
依托庞大的开源生态,社区内众伙伴秉承“来自开发者,用于开发者”的共建理念,在FISCO BCOS底层平台之上,自主研发多个趁手开发工具并回馈给社区,从不同业务层面需求上降低区块链应用开发难度和成本。以下作部分列举,欢迎更多机构或开发者向社区反馈更多好用的工具。
-
区块链中间件平台WeBASE:面向多种对象,如开发者、运营者,并根据不同的场景,包括开发、调试、部署、审计等,打造丰富的功能组件和实用工具,提供友好的、可视化的操作环境。
-
分布式身份解决方案WeIdentity:基于区块链的分布式多中心的技术解决方案,提供分布式实体身份标识及管理、可信数据交换协议等一系列的基础层与应用接口,可实现实体对象(人或物)数据的安全授权与交换。
-
分布式事件驱动架构WeEvent:实现了可信、可靠、高效的跨机构、跨平台事件通知机制。在不改变已有商业系统的开发语言、接入协议的情况下,实现跨机构、跨平台的事件通知与处理。
-
跨链协作方案WeCross:支持跨链事务交易,满足跨链交易的原子性,对跨链进行治理,可支持多方协作管理,避免单点风险。
-
场景式隐私保护解决方案WeDPR:针对隐匿支付、匿名投票、匿名竞拍和选择性披露等应用方案,提供即时可用场景式隐私保护高效解决方案,助力各行业合法合规地探索数据相关业务。
-
区块链数据治理组件解决方案:稳定、高效、安全的区块链数据治理组件解决方案,分别从底层数据存储层、智能合约数据解析层和应用层三个方面,提供了区块链数据挖掘、裁剪、扩容、可信存储、抽取、分析、审计、对账、监管等数据治理方面的关键能力。
-
区块链多方协作治理组件解决方案:可无缝适配FISCO BCOS的区块链治理组件解决方案。首批开源的四个组件分别从私钥丢失重置、合约权限细粒度管控、私钥和证书的全生命周期管控等方面着手,提供了可部署的智能合约代码、易于使用的SDK和可参考的落地实践Demo等交付物。
-
区块链应用开发组件解决方案:一套开放、轻量的开发组件集,覆盖智能合约的开发、调试、应用开发等环节,包含了Solidity智能合约开发工具库、 智能合约Gradle编译插件、应用开发脚手架。
-
ChainIDE:提供智能合约云端开发工具,帮助开发者节约边际成本,加速推送区块链应用落地。
-
FISCO BCOS区块链工具箱:与WeBase/Remix/VSCode/ChainIDE等IDE协同工作,提升开发体验与开发效率。
-
Ansible for FISCO BCOS 自动化生成企业级部署文件:本项目由为区块链开源项目 FISCO-BCOS 提供了自动化生成企业级配置文件的 ansible playbook。2 群组 3 机构 6 节点的环境,可以在 30 秒内(除下载时间)生成配置,极大简化了部署难度,避免了手工配置容易发生的错误。
FISCO BCOS 2.x 新特性
群组架构
群组架构是FISCO BCOS 2.0众多新特性中的主线,创造灵感来源于人人都熟悉的群聊模式——群的建立非常灵活,几个人就可以快速拉个主题群进行交流。同一个人可以参与到自己感兴趣的多个群里,并行地收发信息。现有的群也可以继续增加成员。
采用群组架构的网络中,根据业务场景的不同,可存在多个不同的账本,区块链节点可以根据业务关系选择群组加入,参与到对应账本的数据共享和共识过程中。该架构的特点是:
-
各群组独立执行共识流程,由群组内参与者决定如何进行共识,一个群组内的共识不受其他群组影响,各群组拥有独立的账本,维护自己的交易事务和数据,使得各群组之间解除耦合独立运作,可以达成更好的隐私隔离;
-
机构的节点只需部署一次,通过群组设置即可参与到不同的多方协作业务中,或将一个业务按用户、时间等维度分到各群组,群组架构可快速地平行扩展,在扩大了业务规模同时,极大简化了运维复杂度,降低管理成本。
分布式存储
FISCO BCOS 2.0新增了对分布式数据存储的支持,节点可将数据存储在远端分布式系统中,克服了本地化数据存储的诸多限制。该方案有以下优点:
-
支持多种存储引擎,选用高可用的分布式存储系统,可以支持数据简便快速地扩容;
-
将计算和数据隔离,节点故障不会导致数据异常;
-
数据在远端存储,数据可以在更安全的隔离区存储,这在很多场景中非常有意义;
-
分布式存储不仅支持Key-Value形式,还支持SQL方式,使得业务开发更为简便;
-
世界状态的存储从原来的MPT存储结构转为分布式存储,避免了世界状态急剧膨胀导致性能下降的问题;
-
优化了数据存储的结构,更节约存储空间。
同时,2.0版本仍然兼容1.0版本的本地存储模式。更多关于存储介绍,请参考 分布式存储操作手册
并行计算模型
2.0版本中新增了合约交易的并行处理机制,进一步提升了合约的并发吞吐量。
1.0版本以及大部分业界传统区块链平台,交易是被打包成一个区块,在一个区块中交易顺序串行执行的。 2.0版本基于预编译合约,实现一套并行交易处理模型,基于这个模型可以自定义交易互斥变量。 在区块执行过程中,系统将会根据交易互斥变量自动构建交易依赖关系图——DAG,基于DAG并行执行交易,最好情况下性能可提升数倍(取决于CPU核数)。
更多并行计算模型的介绍,请参考并行交易的 设计文档 和 使用手册。
预编译合约
FISCO BCOS 2.0提供预编译合约框架,支持采用C++编写合约,其优势是合约调用响应更快,运行速度更高,消耗资源更少,更易于并行计算,极大提升整个系统的效率。FISCO BCOS内置了多个系统级的合约,提供准入控制、权限管理、系统配置、CRUD式的数据存取等功能,这些功能天然集成在底层平台里,无需手动部署。
FISCO BCOS提供标准化接口和示例,帮助用户进行二次开发,便于用户编写高性能的业务合约,并方便地部署到FISCO BCOS里运行。预编译合约框架兼容EVM引擎,形成了“双引擎”架构,熟悉EVM引擎的用户可以选择将Solidity合约和预编译合约结合,在满足业务逻辑的同时获得巨大的效率提升。
另外,还有类似CRUD操作等也由预编译合约实现,更多预编译合约的介绍,请参考 预编译设计文档 和 预编译合约开发文档
CRUD接口
FISCO BCOS 2.0新增符合CRUD接口的合约接口规范,简化了将主流的面向SQL设计的商业应用迁移到区块链上的成本。其好处显而易见:
-
与传统业务开发模式类似,降低了合约开发学习成本;
-
合约只需关心核心逻辑,存储与计算分离,方便合约升级;
-
CRUD底层逻辑基于预编译合约实现,数据存储采用分布式存储,效率更高;
同时,2.0版本仍然兼容1.0版本的合约,更多关于CRUD接口的介绍,请参考 使用CRUD接口 。
控制台
FISCO BCOS 2.0新增控制台,作为FISCO BCOS 2.0的交互式客户端工具。
控制台安装简单便捷,简单配置后即可和链节点进行通信,拥有丰富的命令和良好的交互体验,用户可以通过控制台查询区块链状态、读取和修改配置、管理区块链节点、部署并调用合约。控制台给用户管理、开发、运维区块链带来了巨大的便利,降低了操作繁琐性和使用门槛。
相比于传统的nodejs等脚本工具,控制台安装简单、使用体验更好。详细请查看 基于Java SDK的控制台使用手册 和 基于Web3SDK的控制台使用手册。
虚拟机
2.0版本引入了最新的以太坊虚拟机版本,支持Solidity 0.5版本。同时,引入了EVMC扩展框架,支持扩展不同虚拟机引擎。 底层内部集成支持interpreter虚拟机,未来可扩展支持WASM/JIT等虚拟机。
更多关于虚拟机的介绍,请参考 虚拟机设计文档
密钥管理服务
2.0版本对落盘加密进行了重塑升级,开启落盘加密功能时,依赖KeyManager服务进行密钥管理,安全性更强。
KeyManager在Github开源发布,节点与KeyManager的交互协议是开放的,支持机构设计实现符合自身密钥管理规范的KeyManager服务,比如采用硬件加密机技术。 该部分更详细的文档请参考 使用文档 和 设计文档
准入控制
2.0版本对准入机制进行了重塑升级,包括网络准入机制和群组准入机制,在不同维度对链和数据访问进行安全控制。
采用新的权限控制体系,基于表进行访问权限的设计,另外还支持CA黑名单机制,可以实现对作恶/故障节点的屏蔽。 详情请查看 准入机制设计文档
异步事件
2.0版本同时支持交易上链异步通知、区块上链异步通知以及自定义的AMOP消息通知等机制。
模块重塑
2.0版本对核心模块进行升级重塑,进行模块化的单元测试和端对端集成测试,支持自动化持续集成和持续部署。
更多版本
FISCO BCOS 2.x Releases
FISCO BCOS 1.x Releases
FISCO BCOS 1.3 正式版:
FISCO BCOS 1.2 正式版:
FISCO BCOS 1.1 正式版:
FISCO BCOS 1.0 正式版:
FISCO BCOS 预览版:
查看节点和数据版本
-
查看节点二进制版本:
./fisco-bcos --version
-
数据格式和通信协议的版本:通过配置文件 config.ini的supported_version配置项 获取