写点什么

起“底”联盟链:FISCO BCOS 与 Fabric 之较

2018 年 9 月 27 日

在国家政策的鼓励下,区块链技术的研发与推广正在不断升温,技术、标准、平台、框架都在持续发展,这其中,既有来自国外的布道者,也有源自国内的探索者。做为区块链三大部署形态之一的联盟链,因其与现实场景的高度契合性,正在出现越来越多的落地实例。

为便于广大开发者、区块链爱好者了解联盟链中较为常见的两个开源设计,本文拟对 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 还是在总结前人经验的基础上进行了很多有益的、符合国内环境的改良:

  1. AMOP 协议。又提到这个协议是因为其在解决多次协商场景方面确实有帮助,笔者在尝试用 Fabric 设计金融机构的同业交易市场业务模型时就遇到过这个问题。
  2. 国密支持。这个优点相信做过 Fabric 的都有感受,因为在 Fabric 中进行国密替换不是件容易事,而国内,尤其是金融行业在这方面有强烈需求。
  3. 支持多种 CA。未来在电子合同、金融交易等方面,都需要有第三方 CA 的支持,能够支持多种 CA 对于确保区块链交易的法律地位是非常必要的。

除此之外,合约命名服务(CNS)、区块链数据仓库等也提供了一些为应用考虑的便利设计。

总结

Fabric 做为先行者,已经在联盟链方面具有了世界范围的领先优势,其架构比较成熟,也有数百个各类案例,其中包括马士基、沃尔玛等国际知名企业和海尔、邮储、中信等一众国内用户。

FISCO BCOS 做为后发者,利用自身优势,从金融行业出发走向跨领域应用,做了很多符合国内需要的独特设计。今年 2 月份广州仲裁委基于在 FISCO BCOS 上运行的“仲裁链”出具了业内首个裁决书,这是个有一定社会价值的案例。随着 FISCO BCOS 推广力度的上升,相信会逐步有更多的落地案例出现,为各行业的开发者提供应用指导。

近期举办的「金链盟中国区块链应用大赛」,就是基于 FISCO BCOS 开发应用,提供资金、资源、技术辅导、投资人、媒体等支持和对接帮助,有兴趣的伙伴可以到大赛官网了解一下 https://con.geekbang.org/

作者简介:付晓岩,中国建设银行资深业务架构师,负责业务架构设计、项目管理,热衷新技术探索与实践,具有丰富的银行业务经验和企业级项目业务架构设计经验。2000 年加入建行,曾长期参加建行“新一代核心业务系统”建设,主导客户关系、金融市场、同业、资管、养老金等多个领域核心系统的业务架构设计。从 2017 年开始探索区块链技术及其应用,并发表《关于使用区块链技术建设行业级同业交易平台的探讨》、《数字货币可能诱发的现金社会经济活动的模拟与思考》等多篇文章。

2018 年 9 月 27 日 09:251261
用户头像
钰湚 企业级业务架构设计倡导者

发布了 54 篇内容, 共 43.2 次阅读, 收获喜欢 357 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

Github连夜下架!阿里新产Java全栈面试突击小册太香了

Java架构之路

Java 程序员 架构 面试 编程语言

区块链版「滴滴+Uber」,让出行带来收益

CECBC区块链专委会

移动互联网

一体化智能安全防御 京东云星盾安全加速正式发布

京东科技开发者

互联网 网络安全

Golang interface 模型

Alihanniba

golang 源码分析 模型 简易架构图

融云企业通信中台解决方案 助力禁毒支队高效协同办公

融云 RongCloud

已拿到8个Offer!阿里巴巴Java面试参考指南(泰山版)

Crud的程序员

Java 编程 架构

漫画Nginx的subfilter

运维研习社

nginx 4月日更

建立自己的领导风格

石云升

领导力 28天写作 职场经验 管理经验 4月日更

为什么要用 Redis 实现事务的 ACID

escray

redis 极客时间 学习笔记 Redis 核心技术与实战 4月日更

C/C++ Linux后端进BAT的学习路线(腾讯官方认证)丨Linux服务器开发

Linux服务器开发

腾讯 后端开发 Linux服务器开发 BAT

Tidb模型

Alihanniba

架构· TiDB 简易架构图

【得物技术】前端工程师要知道的Nginx知识

得物技术

nginx 负载均衡 前端 得物技术 知识

Golang map 模型

Alihanniba

golang 源码分析 模型 简易架构图

数字货币,已成为理解现代经济不可排斥的一个因素

CECBC区块链专委会

数字经济

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

云流

Java 编程 程序员 架构 面试

架构实战营模块一作业

日照时间长

架构实战营

3.2 Go语言从入门到精通:包管理工具之GOPATH

xcbeyond

Golag Go语言从入门到精通 Go 语言 4月日更

后端选择java,还是python?

cdhqyj

Java Python 后端 计算机 语言

有趣的技术知识 3 | GitHub超火科学上网加速器!

Java_若依框架教程

翻墙 佛跳墙 科学上网

找到适合您的数字化转型策略的3个步骤

龙归科技

数字化转型 企业

为什么拥有云原生数据平台对电信公司很重要?

VoltDB

云原生 5G VoltDB 电信

1800 美金?Apache ShardingSphere 带薪远程实习招募啦!| 2021 Google 编程之夏

京东科技开发者

Apache 开源 ShardingSphere

架构实战营-模块一作业

西伯利亚鼯鼠

架构实战营

聪明人的训练(二)

Changing Lin

4月日更

关于Object,你所必须知道的!

Chalk

前端 Object 4月日更

如何抓住新社交风口下的音视频通讯大潮?

融云 RongCloud

Golang Map 模型

Alihanniba

golang 模型 源码剖析 简易架构图

Kafka 零拷贝模型

Alihanniba

kafka 模型 简易架构图

Golang channel 模型

Alihanniba

golang 源码分析 模型 简易架构图

基于区块链技术的建筑供应链金融创新

CECBC区块链专委会

区块链

给你看一个开发和运维的效率加速器!

CloudQuery社区

DevOps 运维 运维工程师 dba 数据库管理工具

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

起“底”联盟链:FISCO BCOS 与 Fabric之较-InfoQ