联盟链如何突破吞吐和存储瓶颈 | DoraSpeaker直播实录

 

FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造。开源工作组成员包括博彦科技、华为、深证通、神州数码、四方精创、腾讯、微众银行、亦笔科技和越秀金科等金链盟成员机构。

代码仓库:https://github.com/FISCO-BCOS

 

2019年4月24日晚上7点,DoraHacks社区邀请FISCO BCOS开源社区参与了社群直播活动「DoraSpeaker」。火讯财经主编 赵一丹作为主持人,就《联盟链如何突破吞吐和存储瓶颈》,独家专访了FISCO BCOS高级架构师 莫楠。来自北京、西安、南京等地的150余位hacker小伙伴,一起参与了本次群直播。

本文是直播精彩回顾,如果关于这次分享你有更多的问题想要请教莫楠老师,欢迎留言联系。

Part 1 问答环节

 

第一问:目前区块链要商用落地,在技术方面还是存在重重阻碍和挑战,尤其是易用性、隐私性和可扩展性问题。FISCO BCOS在区块链底层技术和业务架构的整体设计思路是怎样的?在扫清阻挠技术商用的障碍上,做了哪些尝试?

 

莫楠:

FISCO BCOS作为支持“分布式商业”模式的新一代公众联盟链,对于区块链底层技术提出了新的要求,除了标准的区块链特性之外,还有专门服务于公众联盟链的数个特性。

首先,由于公众联盟链并不是单一链条,所以需要具备支持多链并行以及跨链通信的技术,同时需能够支撑来自互联网海量交易请求的能力。
其次,需要具备快速、低成本地组建联盟和建链的能力,便于各个需求方能够高效建立联盟链网络,让企业间建链合作变得像现在建立“聊天群”一样高效便捷。

最后,需要开源和开放,实现联盟成员之间的充分信任。公众联盟链不仅有利于降低企业快速试错的成本,有效提升商业上的容错性,也促进商业社会朝着可信化、透明化的方向深化发展,全面降低合作的操作风险、道德风险、信用风险、信息保护风险。

为此,FISCO BCOS 2.0在扩展性、易用性、隐私隔离等方面开辟了不少新思路,提出了“一体两翼多引擎”架构。

一体,指群组架构,允许网络中存在多个不同的账本,每个账本是一个独立的小组,节点可以选择加入某些小组,参与到该组账本的共识和存储,随着小组数量的增加,系统的吞吐能力能够横向扩展。

群组的需求,是我们在业务的实践中发现的。在区块链仲裁项目中,需要联通多家不同的仲裁机构,而每家仲裁机构之间,并不愿意分享数据。如果为此搭建多条区块链,需要付出非常大的成本,在有了群组架构后,所有仲裁机构都可以在同一条链上,他们属于不同的群组,数据不互通,既保证了隐私,又降低了运维和部署成本。

在群组架构中,各群组独立执行共识流程,这样的设计考虑了性能、隐私性和扩展性。按群组的粒度划分,由群组内参与者决定如何进行共识,一个群组内的共识不受其他群组影响,群组内维护自己的交易事务和数据,使得各群组之间解除耦合,独立运作,也便于进行横向扩展。

两翼,指并行计算模型分布式存储。并行计算模型,包括了一系列的并行化机制,包括交易的验签、执行、编解码、存储等等,重点是执行部分,我们引用了DAG技术,通过自定义交易冲突key,系统能够自动识别交易依赖关系,构建一个依赖拓扑DAG图,然后多线程基于交易的DAG拓扑关系最大化并行执行交易。通过这种方式,我们测试环境得到的数据是整个系统的吞吐量上了一个量级。

分布式存储解决了海量数据存储的问题。目前的区块链底层平台,大多都是采用level DB本机存储数据的模式,存储受限於单机容量限制,当业务量大了,数据膨胀之后,系统将面临致命问题。而分布式存储是将数据存储在远端数据层,实现数据和计算的分离,让数据管理交给“专业”的模块去做。可以说,并行处理模型让联盟链飞得更高,分布式存储让联盟链飞得更远。

多引擎”,指众多功能组件的融合,例如控制台,提供友好的交互式访问终端,通过控制台,可以实现区块链读写,查看数据,发送交易,非常适合刚入门的用户。预编译合约,支持采用C++编写合约,突破EVM的性能瓶颈,还有更多如平台组件、增强虚拟机、MPC套件等等。

 

第二问:多链、分层架构被认为是当前联盟链的主流架构方案。前些日子,FISCO BCOS 2.0中提出了一个全新的思路——群组架构,群组架构相对多链、分层,设计上有什么区别,它的突破性体现在哪些地方?

 

莫楠:

多链、分层和群组架构,本质上都是为了解决同一个问题——区块链的水平扩展问题。

单链架构是最“古典”的区块链架构,是公有链最早的模型,这个架构下,全部节点在同一个网络,全网广播,全网共识。这个架构最大的问题是无法扩展,无法支持海量的交易请求。无论单节点的性能如何提升,系统都存在“木桶效应”,计算能力、存储能力、网络能力都不具备良好的扩展性。

多链架构利用了传统分布式架构的思路去解决扩展性问题,可以较好地应付业务量增长的问题。但多链架构又暴露出易用性方面的问题,区块链部署和维护的复杂性是该架构的缺陷,企业间维护如此众多条链需要投入较大的运维成本。

FISCO BCOS在多链的架构上,有非常丰富的实践经验,在机构间对账、仲裁和供应链等项目中,广泛利用了该架构,该架构能很好地分隔业务,提升性能,但随之而来的运维成本,让开源工作组的开发和运维同事叫苦不堪。

分层架构将区块链典型的计算和存储分开,计算环节完成合约验证以及共识排序,存储环节进行区块链记账。这个架构提高了一些易用性,有望做到部署后较好地维护,但是这个架构也存在一些问题,比如计算环节的参与机构如何分配,怎样保证公平性以及保护隐私。另外,计算环节也会随着业务量上升成为瓶颈,也同样面临扩展性方面的压力。

群组架构是FISCO BCOS 2.0众多新特性中的主线,创造灵感来源于人人都熟悉的群聊模式——群的建立非常灵活,几个人就可以快速拉个主题群进行交流。同一个人可以参与到自己感兴趣的多个群里,并行地收发信息。现有的群也可以继续增加成员。

采用群组架构的网络中,根据业务场景的不同,可存在多个不同的账本,区块链节点可以根据业务关系选择群组加入,参与到对应账本的数据共享和共识过程中。

机构的区块链节点只需部署一次,通过群组设置即可参与到不同的多方协作业务中,或将一个业务按用户、时间等维度分到各群组,群组架构可快速地平行扩展,在扩大了业务规模同时,极大简化了运维复杂度,降低管理成本。

与前述的分层架构相比,群组架构的最大特征是每个群组都有独立的共识,群组之间的数据相互隔离,不会被一个中心化的Orderer获取,安全性更高。

 

第三问:5G大数据时代下,存储技术需迫切提高,FISCO BCOS在存储技术上有什么解决方案?

 

莫楠:

早期的公链项目,节点主要采用本地的存储策略,通过LevelDB等本地数据库,将数据存储于本地,这种模式受限于本地磁盘大小,当业务量增大时,要进行数据迁移也非常复杂,给数据存储带来较大的成本和维护难度。这种模式并不适用于联盟链。

以今天的视角来看,早期的公链,已经遇到了容量上的瓶颈,全网的全节点正在逐步减少,对生态的影响非常大。

FISCO BCOS 2.0支持分布式的数据存储模型,节点可以选择将数据存储在本地,或将数据存储到远端分布式系统中,克服了本地数据存储的诸多限制。该方案有以下优点:

  • 支持多种存储引擎;

  • 将计算和数据隔离;

  • 数据可以在更安全的隔离区存储,这在很多场景中非常有意义;

  • 分布式存储不仅支持KV形式,还支持SQL方式,使得业务开发更为简便;

  • 优化了数据存储的结构,更节约存储空间。

这是分布式存储的架构图,分布式存储将抽象了世界状态(State)层,用于智能合约读写数据;分布式存储(AMDB)层,抽象了数据的读取和写入接口,用于底层的数据访问;数据库层,实现了多种存储的驱动,使得上层在无需改动代码的情况下,能在多种存储引擎中进行切换。

我简单罗列一下分布式存储中,几个主要的系统表,这些表存储了区块链的核心数据:

 

第四问:区块链技术在现阶段看来,依然是一项门槛稍高的技术。对于普通开发者,甚至是零基础小白来说,FISCO BCOS如何在保证技术优势的前提下,做到零门槛搭链?请您给新手开发者一些实操建议。

 

莫楠:

FISCO BCOS 2.0在易用性上做了很多努力,无论是搭建区块链,还是使用区块链。

在搭建区块链方面,FISCO BCOS 2.0提供了稳定的二进制静态程序和搭链脚本,可以做到“一键安装”,省去了很多编译以及手动安装依赖的工作。

在使用区块链方面,FISCO BCOS 2.0提供了命令行控制台工具,命令行控制台工具不仅可以管理区块链,还可以完成智能合约的部署和调用,实现一站式的管理、开发和调试。

FISCO BCOS只需两步,就可以快速搭建区块链:

  • 使用build_chain.sh一键搭建区块链

  • 使用console,开始体验区块链

如果各位听众有Linux环境的话,可以试着用下面的命令体验:

# 下载build_chain.sh脚本

curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/build_chain.sh && chmod u+x build_chain.sh

#使用build_chain.sh,搭建4节点的区块链

./build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545

#启动所有区块链节点

cd nodes/127.0.0.1

./start_all.sh

#配置及使用控制台

bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)

cp nodes/127.0.0.1/sdk/* console/conf/

接下来执行控制台目录下的start.sh,就可以启动控制台了,控制台启动成功后,可以在屏幕上看到FISCO BCOS的字样,表示启动成功。

在我们线下的高校讲座中,曾经一个学生仅用约1分钟就完成一条链的搭建,以及借助控制台部署合约和查看数据。对于新版本的友好度我们还是很有信心的,欢迎大家体验,对比一下差异性。

我补充一下,FISCO BCOS有9万+字的使用文档,涵盖各种功能特性,可以访问https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/index.html

 

第五问:FISCO BCOS目前有哪些落地的应用案例?它对哪些行业更有适用性?

 

莫楠:

FISCO BCOS已经落地的应用达数十个,场景覆盖政务、金融、公益、医疗、教育、交通、版权、商品溯源、供应链、招聘、农业、社交、游戏等多个领域。

对于行业的适用性需要视具体案例分析,以金融领域的场景应用来说。金融业务合作不同于一般合作,需要频繁地进行数据交换及对账等繁杂工作,因此“对账”是金融机构之间最普遍的需求之一,对账目的时效性和准确度要求尤为苛刻。传统的对账方式是“批量文件对账”:即机构之间会约定好某一个时间点对前一个交易日的所有数据进行汇总,按照约定格式输出成文件,并以某一种技术手段交付给其他机构进行对账。

在这种“批量文件对账”方式下,存在着一些痛点,如:

1、合作行无法实时了解到引发账户变动的贷款借还交易明细信息

2、合作行无法及时了解到账务是否不平

3、合作行需要自己开发对账系统

4、缺乏统一全面的信息视图

 

区块链技术是一种不可篡改的分布式账本技术,区块链技术最大的特征是“分布式账本”,即链上的各个参与机构共同拥有一个账本。区块链上所有的交易信息都会被记录,并且无法篡改,可确保数据的真实透明可追溯,非常适用于金融行业的交易数据同步和对账等场景。传统“批量文件对账”模式长久以来未能解决的问题,正是区块链技术的用武之地。

简单的说,就是各家银行,将自身的账务数据,脱敏上链,在链上进行数据的比对,这样可以在不暴露具体数据的前提下,完成数据的比对,并且利用了区块链去中心化、不可篡改的特性,提升了业务的准确度。

 

第六问:FISCO BCOS作为国内区块链底层平台的领头羊,开源社区伙伴众多,成绩喜人,您和您的团队是如何建设开源社区的?各角色伙伴如何真正参与进来,比如B端机构,C端开发者。

 

莫楠:

FISCO BCOS 开源社区是目前国内较为活跃的区块链开源社区之一,技术项目涵盖底层平台、客户端、管理台、浏览器、密钥安全、国密支持、隐私保护、业务案例等完备的软件架构体系,是经过广泛应用验证、稳定可用、且完全开源、免费使用的社区。目前社区活跃着数千名开发者和关注者,来自全国甚至全世界的几百家企业,社区上也陆续涌现出现许多不错的应用案例。

在金链盟开源工作组的协调下,活跃在社区的贡献者群体内,不但有开源项目的核心开发者,还有个人开发者、各行业的研发及业务团队、大学和研究所等科研机构,共同面向社区提供形式多样的支持,包括在线社群、线下活动、教学培训、项目技术支持、开发者大赛以及产业孵化等,社区目前的活跃度相当高,软件版本迭代速度也很快。

开源工作组的技术团队深度投入到社区建设中,我个人也是社群里的活跃“客服”之一,和团队成员一起每天与开发者进行频繁的交流,解决各种问题和探讨优化方案。

 

今年全年举行FISCO BCOS 巡回 Meetup,基本每周一期。为分布在全国各地的FISCO BCOS社区成员提供一个面对面交流的空间。作为开源开放的社区,欢迎全国各地的朋友参加,最近一期的Meetup在深圳举行 。

 

目前我们开源社区有“体验官”系列计划和代码贡献者工作流程:

(https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md)。

 

欢迎各方参与,共建社区。更多活动大家都可以参见社区动态:

(https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/community.html)。

 

Part 2 现场提问

 

网友1:请问对于无币区块链的看法?

莫楠:

在金融行业采用区块链技术是为了服务实体经济,提升业务规模,运营效率,降低成本和风险,而且要合法合规,金融业的多方协作可以通过业务运营达成共赢,并不依赖原生币的发行和炒卖,大家都看到基于币的运作有一些不规范的行为。所以联盟链可以使得开发者更专注于底层技术、基础设施的建设以及创新业务的开展。

 

网友2:做公众联盟链遇到的问题和挑战,哪些问题是必须解决的?

莫楠:

公众联盟链为分布式商业而生,新型的“分布式商业”模式,按微众银行整理给出的定义,是一种由多个具有对等地位的商业利益共同体所建立的新型生产关系,是通过预设的透明规则进行组织管理、职能分工、价值交换、共同提供商品与服务并分享收益的新型经济活动行为。在主要表现特征上,分布式商业显现出多方参与、共享资源、智能协同、价值整合、模式透明、跨越国界等特点。一个成熟的分布式商业场景具备生产资料由多方持有、产品和服务能力由多方共同构建、商业过程中的相互关系对等,产品和利益分配规则透明等要求。

分布式商业与此前流行的连锁加盟型商业模式及共享商业模式的最大不同之处在于,起到中间链接桥梁作用的不是人或产品、不是信息平台、而只是客观的技术本身。诚然,如果技术不开源,确实也可能演变成新的垄断。因此,发展分布式商业必须始终保持技术开源的态度,各个参与方通过开源社区进行分工合作,就将不再存在话语权集中和垄断的可能性,弱肉强食的“丛林法则”在此就不复存在。这有助于中小微企业真正成为商业价值链的主角,从而激发经济增长动力、广泛提升就业、鼓励创业和创新,实现“反垄断”的人类商业终极理想。

公众联盟链,对于区块链底层技术提出了新的要求,除了标准的区块链特性之外,还有几个方面仍需要重点加强:首先,由于公众联盟链并不是单一链条,所以需要具备支持多链并行以及跨链通信的技术,同时需能够支撑来自互联网海量交易请求的能力。其次,需要具备快速、低成本地组建联盟和建链的能力,便于各个需求方能够高效建立联盟链网络,让企业间建链合作变得像现在建立“聊天群”一样高效便捷。最后,需要开源和开放,实现联盟成员之间的充分信任。公众联盟链不仅有利于降低企业快速试错的成本,有效提升商业上的容错性,也促进商业社会朝着可信化、透明化的方向深化发展,全面降低合作的操作风险、道德风险、信用风险、信息保护风险等。

 

网友3:联盟链涉及到的利益体比较多,没有token怎样权衡利益,维护费用谁来买单,怎样实现激励?

莫楠:

联盟链上的多方参与是一种协作关系,大家首先对业务模型已经有了一定的共识,并通过智能合约来制定公开、透明、高效率的运作规则,大家基于这些规则来进行交易,可以减少互相之间的磨擦,消除信息不对称,更容易取得业务的成功,在追求业务成功的目标前提下,大家会有很强的意愿共同维护网络,共享数据,其实联盟链的维护成本不太高,不需要执行“挖矿”这种高消耗的共识。

联盟链上的参与者,无论是金融业还是其它行业,只要能建立一个高效、安全和去中心的信息交互方式,其产生的效益远大于虚无缥缈的“token”。

以供应链区块链为例,供应链区块链上透明、真实的信息可以解决银行遇到的信息不透明,真实情况难以考据的问题,极大地帮助银行做出正确的贷款决策,银行缺的不是钱和“token”,真实可靠的信息对他们决策的帮助更为重要。

 


 

我们鼓励机构成员、开发者等社区伙伴参与开源共建事业,有你在一起,会更了不起。多样参与方式:

1 进入微信社群,随时随地与圈内最活跃、最顶尖的团队畅聊技术话题(进群请添加小助手微信,微信ID:fiscobcosfan);

2 订阅我们的公众号:“FISCO BCOS开源社区”,我们为你准备了开发资料库、最新FISCO BCOS动态、活动、大赛等信息;

3 来Meetup与开发团队面对面交流,FISCO BCOS正在全国举办巡回Meetup,深圳、北京、上海、成都……欢迎您公众号在菜单栏【找活动】中找到附近的Meetup,前往结识技术大咖,畅聊硬核技术;

4 参与代码贡献,您可以在Github提交Issue进行问题交流,欢迎向FISCO BCOS提交Pull Request,包括但不限于文档修改、修复发现的bug、提交新的功能特性。

代码贡献指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md

 

本文首发于公众号【FISCO BCOS开源社区】,如转载请注明出处,原创不易,谢谢珍惜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章