Hyperledger Fabric 是分布式账本解决方案的平台,该平台以模块化架构为基础,提供高度的机密性,灵活性和可扩展性。它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性。Fabric 最早由 IBM 设计和开发,2015 年将其源代码奉献给了 Linux 基金会的Hyperledger 项目。Fabric最初即被定义为跨行业应用,更注重的是构建基于区块链技术的通用框架。
FISCO BCOS 诞生于 2017 年,由金链盟推出,是标准的国产底层。金链盟是由深圳市金融科技协会、深圳前海微众银行、深证通等二十余家金融机构和科技企业于 2016 年 5 月 31 日共同发起成立的非营利性组织。FISCO BCOS 最初的定位是设计为自主可控的、适用于金融行业的开源区块链底层平台,在设计监管接口时,FSICO BCOS更适合中国企业。随着平台的发展,也逐渐支持了更多金融领域以外的场景。FISCO BCOS 继承自以太坊公链。 虽然在场景和使用上已经和公链完全不同,但从技术上来讲,继承了以太坊的虚拟机,也就是继承了以太坊庞大的生态。
Hyperledger Fabric | FISCO BCOS |
---|---|
继承IBM分布式体系设计 | 继承以太坊公链的技术 |
适合不同领域的通用框架 | 通用框架、更适合应用于金融领域 |
Hyperledger Fabric 保证了区块链中的分布式和不可篡改性的特点,省略了去中心化的共识机制(不支持拜占庭容错)。 Fabric 架构中将参与节点分成了三种角色,即排序节点、背书节点和提交节点。对于每一笔交易,共识状态的过程是由客户端、背书节点、提交节点共同参与完成的;排序节点只负责交易顺序的共识,而不负责状态共识,在交易状态共识和排序可以分别采用不同的策略。排序节点中的共识方式是 Kafka 或者 Raft,由于Kafka部署运维较为棘手,Fabric2.0后不再支持Kafka。目前正在开发Hotstuff去中心化的共识算法的插件,未来将支持拜占庭容错。
FISCO BCOS作为一个分布式账本,可以保证数据的不可篡改同时也可以使用了去中心化的共识机制拜占庭容错,保证了 1/3 的容错率。将链的参与方分成了共识节点、只读节点和游离节点,共识节点即是拥有记账权利的参与方,只读节点是拥有查阅所有数据的参与方。游离节点是完成网络准入但没有加入群组的节点,不参与共识和同步。
Hyperledger Fabric | FISCO BCOS |
---|---|
暂时不支持去中心化共识 | 支持去中心化共识 |
通过不同的角色实现共识,排序采用raft共识 | pbft/raft/rpbft |
背书节点、排序节点、提交节点三者共同参与共识 | 共识节点、只读节点、游离节点 |
Hyperledger Fabric区块链网路的子链是按照“1个通道+ 1个账本+ N个成员 ”的基本组成。通道是两个或多个特定网络成员之间的通信的私有“子网”,用于进行需要数据保密的交易。Fabric中建立一个通道相当于建立了一个子链,支持多链消息传递。但是Fabric的“多链”并不完善,因为它不支持跨链路由、跨链事务,只能跨链读取,更像是在一个单链上做的逻辑分割。实际开发中,通道通常被用于区分不同的业务,或者在复杂、冗长的业务流中区分不同的阶段,跨链机制的建立,只能通过同一个节点加入不同的通道来实现。V1.2版本后提出了私有数据的概念,它允许在通道上定义的组织子集能够背书、提交或查询私有数据,而无需创建单独的通道。为授权节点单独创建隐私数据库,隐私数据不会被暴露到排序节点上。
FISCO BCOS引入多群组架构,支持区块链节点启动多个群组,群组间交易处理、数据存储、区块共识相互隔离,保障区块链系统隐私性的同时,降低了系统的运维复杂度。群组间数据隔离,每个群组独立运行不同的共识算法。多群组架构中群组间共享网络,通过网络准入和账本白名单实现各账本间网络消息隔离。每个群组均运行一个独立的账本。
Hyperledger Fabric | FISCO BCOS |
---|---|
通道隔离 | 群组隔离 |
支持多通道,单通道私有数据隔离 | 支持多群组,群组内数据隔离 |
Fabric的合约通过ChainCode的方式以Docker的方式进行线下部署,通过交易进行激活。ChainCode合约的部署相对较重,Fabric2.0版本后docker镜像将会使用Alpine Linux,相比之前版本更加轻量。支持多种语言,开发者不需要学习新的语言,V2.0后链码可以运行到非Docker自定义环境。
FISCO BCOS支持EVM和预编译合约。借助于Ethereum 智能合约的完善的生态系统,在其基础之上做了定制化,有丰富的合约编写和测试工具。当前支持EVM的语言主要是Solidity,具有图灵完备特性。为了解决Solidity执行效率低,BCOS提供了一个EthCall连接Solidity和C++的编程接口,复杂的业务可以使用C++编写以提高效率。Solidity和EVM目前的功能还无法充分满足各种复杂业务场景的需求,这也是其缺点之一。
Hyperledger Fabric | FISCO BCOS |
---|---|
Docker环境 | EVM环境 |
Go、Java、Nodejs | Solidity智能合约语言 |
Hyperledger Fabric 中策略是基础设施的管理机制。Fabric策略表示成员如何同意或者拒绝网络、通道或者智能合约的变更。包括系统通道配置、用户通道配置、权限控制列表,智能合约背书策略,用户可以在启动前由排序服务创建者建立初始规则和联盟成员,确定网络的治理方式,也可以在任何时间及时修改治理策略。
FISCO BCOS V2.5版本后新增基于角色的权限控制,分为治理方、运维方、监管方和业务方,对各个角色进行权责分离,角色互斥。防止角色既当“裁判员”又当“运动员”的情况。治理方负责区块链治理;运维方负责区块链运维,该角色由委员添加;业务方可以调用该合约的写接口;监管方能够获取链运行中权限变更记录以及需要审计的数据。权限控制的最小粒度为表,基于外部账户进行控制。
Hyperledger Fabric | FISCO BCOS |
---|---|
基于策略的权限控制 | 基于角色的权限控制,权限控制最终体现在账户对表的操作 |
Hyperledger Fabric的区块存储采用文件方式保存。可以方便对区块进行查找的追溯。Fabric的世界状态储存支持LevelDB和CouchDB存储,世界状态存储时不支持历史状态的保存,CouchDB存储支持丰富的条件查询和统计。
FISCO BCOS的区块存储采用MPT(默克尔前缀树)的方式保存。对于世界状态采用了两种存储模式:storage state和MPT state。MPT state支持RocksDB和External存储,MPT存储在保存历史状态的同时,最大化减少存储数据。Storage State 支持RocksDB、MySQL、External,使用storage state存储时,牺牲了部分的可追溯性,但带来了性能上的提升,同时能支持SQL语句的查询和统计。因为世界状态始终是可以通过交易进行还原,所以可以牺牲部分可追溯性而换取性能的提升和状态查询。
Hyperledger Fabric | FISCO BCOS |
---|---|
文件方式保存区块 | MPT保存区块 |
LevelDB、CouchDB保存状态 | MySQL、RocksDB保存状态 |
Hyperledger Fabric在节点数量扩展方面是弱项,已落地项目多是个位数节点,但是可以支持较多的客户端。第三方测评在32核CPU,10节点的情况下,TPS在3400左右。由于环境节点数不同,测试结果仅供参考。
FISCO BCOS采用pbft共识时间复杂度是O(n*n),当超过20个节点以后效率不高。V2.3.0版本提出了rPBFT共识算法,可以在安全性和效率之间动态调整参数,减少节点规模对共识算法的影响,理论上节点数量是不受限制的。中国信通院可信区块链测评,BCOS单链TPS超2万。
Hyperledger Fabric | FISCO BCOS |
---|---|
支持少数节点 | 理论上节点不受限制 |
TPS3400(参考) | TPS20000(参考) |
Hyperledger Fabric的跨链方案,目前国内蚂蚁区块链、腾讯云区块链等厂商都在研究支持,这些厂商都开发了基于云链结合的BaaS系统。跨链更多指的是Fabric框架之间的同构跨链,例如阿里云BaaS上对互操作性做了全面支持。用户可以将阿里云BaaS上的Fabric组织和外部的Fabric组织连接成一个业务通道,共同治理业务网络,完成智能合约的执行和共识。
FISCO BCOS的跨链方案是采用WeCross跨链路由,WeCross由微众银行自主研发并完全开源的分布式商业区块链跨链协作平台。采用哈希时间锁和两阶段事务提交方案,基于默克尔证明机制实现数据互信,通过开发不同联盟链的STUB插件,将不同联盟链数据抽象成统一的资源,实现非侵入式跨链。目前支持FISCO BCOS和Hyperledger Fabric之间的异构跨链。
Hyperledger Fabric | FISCO BCOS |
---|---|
主流BaaS厂商支持 | WeCross跨链方案(开源) |
存在同构跨链方案 | 支持同构、异构跨链 |
Hyperledger Fabric作为底层框架,并没有提供过多了中间组件来支撑应用层的开发,例如官方提供了Hyperledger Explorer区块链浏览器用来查询统计区块信息,BaaS平台可以提供基于区块链的搜索查询、交易提交、数据分析等一系列操作服务,用来帮助开发者更快地验证自己的概念和模型,便于创建、部署、运行和监控区块链。
微众银行也在其基础上开源了中间件平台WeBASE,以此作为连接底层和应用层的桥梁。而在WeBASE的再上一层,微众银行为其加入了实体身份标识与可信数据交换WeIdentity、消息协作WeEvent等应用解决方案,并完全对外开源。这些协议让开发者直接在地基上盖房子,做DAPP,原理与BaaS很相似,降低开发门槛。此外BaaS平台也在逐步支持BCOS框架,例如腾讯云区块链服务平台(TBaaS)v3.1.0 服务平台集成多引擎包含了FISCO BCOS引擎。
Hyperledger Fabric | FISCO BCOS |
---|---|
Hyperledger Explorer区块链浏览器 | WeBASE、WeEvent、WeIdentity、WeCross等解决方案 |
通过Baas平台支撑运维 | Baa平台也再逐步支持 |
Hyperledger Fabric官方目前还不支持国密算法,同济和第三方有支持国密的Patch和方案。主流存在修改Go语言库和修改Fabric底层框架两种国密支持方案。包括Fabric框架、SDK、Fabric-CA等需要全套国密支持,另外为了国内Fabric项目和社区的发展,根据最新Hyperledger Fabric中国工作组的计划,未来会开发支持可插拔国密算法的Fabric版本。
FISCO BCOS作为国产联盟链底层平台,支持国密。国密版FISCO BCOS将交易签名验签、p2p网络连接、节点连接、数据落盘加密等底层模块的密码学算法均替换为国密算法。SDK同样支持国密算法。支持国密SM1、SM2、SM3、SM4等全部标准,构建了全套监管解决方案,
Hyperledger Fabric | FISCO BCOS |
---|---|
中国工作组计划支持国密,存在第三方支持方案 | 支持国密 |
Hyperledger Fabric采用Apache-2.0开源协议,Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
FISCO BCOS采用GPL3.0开源协议,GPL协议的主要内容是只要在一个软件中使用(类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。商用不够友好,
Hyperledger Fabric | FISCO BCOS |
---|---|
Apache-2.0 | GPL3.0 |
Hyperledger Fabric作为先行者,已经在联盟链方面具有了世界范围的领先优势,其架构比较成熟,也有数百个各类案例,其中包括马士基、沃尔玛等国际知名企业,国内招商银行、民生银行、中信银行、京东金融、阿里云Bass、腾讯TBass都是基于此开发的。
FISCO BCOS作为实力与Hyperledger Fabric并肩的国内项目,它是公认的国产联盟链底层开发平台的扛鼎之作。国家信息中心牵头的BSN(Block-chain-based Service Network)也支持FISCO BCOS框架,虽然是底层开发平台,但微众银行也在其基础上开源了多种配套工具和中间件等,在Github上有30多个代码仓库,为FISCO BCOS的广泛应用提供了有力支撑。2019年已公开区块链发明专利217件,位列全球第五;从而发展成为国内最大的开源联盟链社区。