起“底”联盟链:FISCO BCOS 与 Fabric 之较
在国家政策的鼓励下,区块链技术的研发与推广正在不断升温,技术、标准、平台、框架都在持续发展,这其中,既有来自国外的布道者,也有源自国内的探索者。做为区块链三大部署形态之一的联盟链,因其与现实场景的高度契合性,正在出现越来越多的落地实例。
为便于广大开发者、区块链爱好者了解联盟链中较为常见的两个开源设计,本文拟对 Linux 基金会的 Hyperledger Fabric(以下简称 Fabic)”和金链盟的“FISCO BCOS”进行简单的比较,权供大家参考。
一、理念:设计背景与发展路径的区别
Fabric 诞生略早于 FISCO BCOS。IBM 较早意识到了区块链技术中可能蕴含的商机,投入较大力量进行相关研究,并于 2015 年将其设计的 44000 余行源代码奉献给了 Linux 基金会的 Hyperledger 项目,再融合了 R3 的一些设计思路后诞生了 Fabric。
Fabric 最初即被定义为跨行业应用,因此,它注重的是构建基于区块链技术的通用框架。而 FISCO BCOS 最初的定位是设计为自主可控的、适用于金融行业的开源区块链底层平台。虽然 FISCO BCOS 出身自带“人设”,但随着平台的发展,FISCO BCOS 也逐渐支持了更多金融领域以外的场景,是从“一专”到“多能”的发展路线。
FISCO BCOS 诞生于 2017 年,由金链盟推出,是标准的国产底层。金链盟是由深圳市金融科技协会、深圳前海微众银行、深证通等二十余家金融机构和科技企业于 2016 年 5 月 31 日共同发起成立的非营利性组织。
目前,Hyperledger 的会员大约为 140 余个,包括金融业、制造业、科技业等,也说明了其跨行业性,成员中大约 1/4 来自中国。
而金链盟成员超过 100 个机构,覆盖银行、基金、证券、保险、地方股权交易所、科技公司、学术机构等多个行业,成员几乎全部来自中国。因此,在设计监管接口时,FSICO BCOS 更适合中国企业。
二、应用:带给开发者不同的设计思路
Fabric 做为一个通用设计框架,给出了比较完整的设计思路。其应用模型为 MVC-B 模式,MVC 是软件设计中“模型 - 视图 - 控制器”设计模式,B 即为区块链逻辑,包括链码(即智能合约)和交易,其含义即为以链码强化控制器,以交易强化模型,这是将区块链融入原有软件设计方式的指导。架构方面,Fabric 给出的是成员管理服务、区块链服务、链码服务三大组成部分。可见,Fabric 定义了一个基于区块链技术重新构建软件系统的架构方式,其用区块链彻底改变原有行业的良苦用心清晰可见。初次接触 Fabric 设计的人往往会试图用其建立起整个业务系统,笔者自己尝试过的业务设计也会顺着这种思路走,但是在实现中,通常会回到区块链系统与原业务系统结合的方式上。
FISCO BCOS 架构中很实用的一个设计是“AMOP”协议,AMOP 协议在金融机构之间的业务来往中可以提供灵活的互操作性,可以结合区块链来实现复杂的交易场景。比如:A 机构和 B 机构之间进行某种商品交易的价格协商或者份额撮合,其间需要往复多次协商,最终双方商定结果后,再按此结果发起链上交易,写入账本并达成确认,此前的协商则不在账本中记录,通过 AMOP 实现加密的点对点通信。FSICO BCOS 给出的架构设计参考为“A 机构业务系统 -A 机构前置 - 区块链网络中 A 机构节点 - 区块链网络中 B 机构节点 -B 机构前置 - B 机构业务系统”,这可以明显看出两个业务系统即区块链系统、原业务系统之间的分工协作,也就是说 FISCO BCOS 的应用方式更多是希望参与区块链的各方将需要做公共实现的部分放在区块链上,而与原有的业务系统“和谐相处”。这其实与其最初定位于金融行业有关,金融行业普遍信息化程度较高,原有业务系统比较复杂,差异也大,轻易不会接受较大外来改造,因此,这种做“公约数”和“连接器”的思路更容易实现和推广。
业内普遍对区块链应用寄予较大希望的两种模式为:构建新的大型生态和改造现有的大型生态,而实现过程中,由于客观因素的限制,二者目前都没有出现突破。实际应用中,开发者可能还是要把握循序渐进的原则,从把区块链与现有系统结合做起,从改良到改变。
三、跨链:关于通道和多链的比较
Fabric 中一项比较特殊的设计就是通道。通道是 Orderers 提供的服务,每个通道相当于一个消息订阅主题,加入该通道的节点间可以共享信息,而未加入通道的节点则无法共享信息,这为多参与方的设计中如何进行必要的信息隔离提供了方法。Fabric 中每个通道都相当于一个链,一个通道一套账本,自然,跨通道就相当于跨链。但是 Fabric 的“多链”并不完善,因为它不支持跨链路由、跨链事务,只能跨链读取,更像是在一个单链上做的逻辑分割。实际开发中,通道通常被用于区分不同的业务,或者在复杂、冗长的业务流中区分不同的阶段,跨链机制的建立,只能通过同一个节点加入不同的通道来实现。
FISCO BCOS 是明确的多链设计,并且其设计指导中也建议按照业务分开不同的链,还可以为了扩容再按照机构数量进行分组,这种多链设计理论上可以无限扩大。采用多链之后,其节点操作、跨链操作都是基于网络地址,通过路由规则实现的,可以执行跨链读写。设计上建议同一个区块链网络里的多个分组在业务逻辑和配置尽可能高度一致,在商业规则、运营管理上都使用统一策略。
目前多链设计还有一家,就是迅雷链,也是“同构多链”模式。多链模式通常效率会高于单链模式,这也是采取多链设计的原因之一,实测中,FISCO BCOS 的吞吐量高于 Fabric。
性能和跨链一直是区块链技术中的热点话题。Fabric 和 FISCO BCOS 都在这方面做出了积极的尝试,但是也都存在各自的问题,Fabric 是跨链复杂且能力有限,而 FISCO BCOS 虽然解决了能力问题,但是分组机制也增加了业务设计的复杂性。
四、社区:成熟度比较
做为开源项目,社区建设对项目未来的发展非常重要,活跃的社区可以带来新的思维和广泛的需求,扩宽用户的视野,保障项目的健康成长。
IBM 是一家世界 500 强的跨国企业,拥有丰富的咨询经验,加上 Fabric 有众多的国内外项目,因此,建立起了国际化的开源社区,有众多优秀的自愿者参加社区工作,社区经常讨论要做的修改和发展问题,也经常在各地举办 Meetup。
FISCO BCOS 面世时间不久,社区建设也正在大力开展中,目前其社区已经有近千名成员和近百家企业,同时也以技术沙龙的形式举办了多次线下交流活动。
FISCO BCOS 在未来的社区建设中,可以多考虑与监管机构、目标用户的互动,发挥自身优势,多举办一些领域专场而非简单的推广,开展时间持续、参与广泛、合作性质的专项话题,比如 FISCO BCOS 在供应链中的应用等,不局限于 Meetup、沙龙形式,而应当多考虑些不受地域限制的互动形式。国际化方面,应该响应“一带一路”政策,跟随用户走,随着用户延伸,这样既有利于自身发展,也能帮助用户实现其业务目标。
五、不得不说一下国产底层的优势
做为一个后发的国产开源项目,FISCO BCOS 还是在总结前人经验的基础上进行了很多有益的、符合国内环境的改良:
AMOP 协议。又提到这个协议是因为其在解决多次协商场景方面确实有帮助,笔者在尝试用 Fabric 设计金融机构的同业交易市场业务模型时就遇到过这个问题。
国密支持。这个优点相信做过 Fabric 的都有感受,因为在 Fabric 中进行国密替换不是件容易事,而国内,尤其是金融行业在这方面有强烈需求。
支持多种 CA。未来在电子合同、金融交易等方面,都需要有第三方 CA 的支持,能够支持多种 CA 对于确保区块链交易的法律地位是非常必要的。
除此之外,合约命名服务(CNS)、区块链数据仓库等也提供了一些为应用考虑的便利设计。
总结
Fabric 做为先行者,已经在联盟链方面具有了世界范围的领先优势,其架构比较成熟,也有数百个各类案例,其中包括马士基、沃尔玛等国际知名企业和海尔、邮储、中信等一众国内用户。
FISCO BCOS 做为后发者,利用自身优势,从金融行业出发走向跨领域应用,做了很多符合国内需要的独特设计。今年 2 月份广州仲裁委基于在 FISCO BCOS 上运行的“仲裁链”出具了业内首个裁决书,这是个有一定社会价值的案例。随着 FISCO BCOS 推广力度的上升,相信会逐步有更多的落地案例出现,为各行业的开发者提供应用指导。