简讯 | 区块链实验室自主研发一款区块链数据库——师大链

发布时间:2019-05-10浏览量:197


近期,数据学院区块链课题组取得重要科研进展。两年多来,该团队在张召副教授和金澈清教授的带领下一直致力于有效融合数据管理技术和区块链技术的研究,克服现有区块链系统在数据管理方面的薄弱性,使得区块链系统能够满足现代企业应用中的功能和性能需求。课题组研发的师大链(SEBDB)旨在兼容SQL语言,让企业用户能够像使用关系数据库一样方便、简捷地使用区块链数据。项目组核心成员朱燕超博士在数据库领域顶级会议ICDE 2019上报告了师大链的核心思想(SEBDB: Semantics Empowered BlockChain Database),该论文也是在本次大会上内地科研机构发表的唯一一篇区块链方面的论文。区块链数据库系统有助于将区块链技术延伸到物联网、智能制造和供应链等诸多行业领域。

1557498278685048286.jpg

图1:论文作者参加ICDE 2019的会场合影

区块链技术可以在不可信多方之间构建信任关系,便于数据分享、流通、交易与保护。然而,与广泛应用在传统领域中的数据库管理系统(DBMS)相比,现有的区块链系统还存在如下几方面的局限性:

(1)数据语义仍然不够丰富。在区块链系统中,数据可分为两类,本地维护的状态数据以及需要多方达成共识的历史区块数据。现有的区块链系统能较为灵活地管理状态数据,而区块数据的语义仍不够丰富,一般用原始文件或者键值对数据模型进行描述,因此难以支持更加复杂的面向区块数据的查询。

(2)查询优化工作较为薄弱。由于区块数据存储在键值对数据库或者原始文件中,这类存储引擎提供的数据访问接口单一,难以高效响应来自应用层的复杂查询请求。为提升查询处理性能,通常需要在应用层完成查询优化工作,导致各应用程序重复构建数据访问的公共模块,而最终的优化效果很大程度上依赖于应用程序开发人员的编码能力。

(3)缺乏面向轻客户端的可验证查询。区块链系统中的轻客户端分为两类,一类有可信任的全节点,另外一类没有可信任的全节点。来自前者的查询可以直接在其可信任的全节点上完成,而来自后者的查询需要在多个全节点上验证查询结果。现有区块链系统大多只支持验证来自轻客户端的交易和状态是否存在之类的简单查询,还无法支持验证来自区块数据的复杂查询。

(4)缺乏统一的数据访问接口。现有的区块链系统中区块数据缺少统一的模型表达,因此对于区块数据的访问无法定义统一的接口,很多都是代码级的API,对用户很不友好。这不仅使得应用程序开发人员的学习成本高、开发进度慢,还会使得开发好的应用程序难以实现不同区块链平台之间的无缝迁移。

1557498312138027632.png

图2:添加关系语义


1557498331793094066.png

图3:索引结构

针对上述四点局限性,本实验室自主研发的区块链数据库(师大链)在保持区块链系统去中心化、防篡改、可追溯特性的基础上还具有高效的数据管理能力。具体来说,包括如下四点特性:

(1)为区块数据添加关系语义。区块数据中记录的主要是交易数据,对于支持智能合约的区块链2.0平台,一笔交易对应一次智能合约的调用,此类交易数据表现出结构化特征。基于此,师大链为区块数据添加了关系语义。一个区块链应用一般包含多种交易类型,师大链根据每种交易类型的参数为其添加关系语义,每种交易类型对应一个关系表,关系的属性对应该交易类型包含的参数,而关系中的元组则对应具体的交易执行(如图1所示)。

(2)为查询优化构建基础设施。师大链通过支持关系模型中的各种基本算子来响应应用层的复杂查询。由于交易数据按照发生时间顺序保存在区块之中,这导致跟同一关系表相关的所有交易有可能会分散存储在物理上不连续的多个区块中。为了提高查询效率,师大链设计了可以高效响应各种查询类型的索引机制(如图2所示),并基于这些索引对传统关系算子和面向区块链应用的特殊算子进行优化,从而避免了应用层为查询优化所做的诸多重复性工作。

(3)支持来自轻客户端的可验证查询。为了确认来自无可信任全节点的轻客户端的查询结果的正确性,需要在多个节点之间进行校验,如果采用在多个节点上分别执行,然后对执行结果投票的方法,系统负载太重,并且查询响应太慢。师大链设计了基于层次索引和默克尔树的精巧的可验证结构,可以在多节点间验证查询结果的正确性和完整性,并能保证查询验证的执行效率。

(4)提供SQL-like查询语言。由于师大链为区块数据添加了语义模型,这为系统提供SQL语言的数据访问接口提供了基础。师大链提供SQL-like的查询语言以及JDBC和REST两种访问接口。这使得基于数据库管理系统的应用程序开发人员可以很容易地切换到基于师大链的应用程序开发中,有效降低了应用开发人员的学习成本。

1557498357449063135.png

图4: 师大链系统架构


师大链系统采用C++语言开发,1.0版本的代码行数在7万行左右。该系统面向动态成员的联盟链环境,支持区块交易数据上用户自定义模式,并基于此设计了追溯、聚集、趋势分析、链上链下联动查询等功能。师大链支持PBFT、Kafka等多种共识算法,以及SM2和SM3国密算法。

师大链系统架构主要分为五层,包括应用层,查询处理层,存储层,共识层以及网络层(如图3所示)。

应用层负责客户端连接管理,用户权限管理。师大链支持通过图灵完备的语言编写智能合约以支持复杂的去中心化应用。

查询处理层负责查询语句的解析,逻辑计划与物理计划的生成与优化。师大链支持从多种链下数据库读取数据以支持链上链下的联合查询。

存储层负责交易数据的存储以及索引的维护。交易根据发生时间顺序组织成区块存储在磁盘上,通过创建索引,可以提高交易数据读取的性能。

共识层负责对交易进行共识。师大链使用可插拔共识模块,在不同应用场景下,用户可以使用不同的共识算法以获得更高的性能。当前,师大链支持PBFT,KAFKA共识机制。

Gossip协议是一种具有良好的扩展性,容错性,去中心化特性以及最终一致性的网络协议,师大链使用Gossip协议支持底层的网络通讯。

研究成果:

(1)Yanchao Zhu#, Zhao Zhang*, Cheqing Jin, Aoying Zhou, Ying Yan. SEBDB: Semantics Empowered BlockChain DataBase. ICDE 2019. (CCF-A)

(2)邵奇峰#, 张召*, 朱燕超, 周傲英 企业级区块链技术综述  软件学报 2019,30(9):0.

(3)邵奇峰#,金澈清,张召,钱卫宁,周傲英. 区块链技术:架构及进展. 计算机学报, 2018,41(05),pp.3-22.

(4)钱卫宁, 邵奇峰, 朱燕超, 金澈清, 周傲英.区块链与可信数据管理:问题与方法 . 软件学报,2018,29(1):150-159

(5)齐学成#,朱燕超,邵奇峰,张召*,金澈清. 基于区块链的仓单管理系统.华东师大学报, 2018,pp.144-153.

未来的工作:

基于师大链1.0平台,区块链实验室下一步的工作重点在于解决联盟链系统在应用于传统行业领域时所面临的公开难题,并将之集成进师大链系统中,具体包括:

(1)研究面向联盟链的高效的确定性共识算法。由于数据是全复制分布,因此在拜占庭网络环境下保证副本之间数据一致性一直是系统性能的瓶颈,而 PoW 系列的共识算法由于其存在分叉不确定性,且算力消耗巨大,并不能满足企业级应用中交易处理高吞吐的需求,而以PBFT( Practical Byzantine-Fault-Tolerant)为代表的确定性共识协议却由于广播式投票方式网络开销太大,能够支持的共识节点有限,一般不超过 20 个。但是,如果改变广播式的投票,协议的安全性又会受到新的威胁。而以 Algorand 为代表的概率性 BFT 共识协议,则通过随机采样的方式只让有限的节点参与共识,这种方法虽然可以通过减少共识节点来提高共识效率,但是只有在样本数量很大的情况下,协议的安全性和活性才能得到保证,一般适用于公有链。因此,在确保所有节点都能公平对等地参与共识过程的前提条件下,提高确定性共识协议的效率,并能保证协议的安全性和活性,是我们要解决的第一个难题。

(2)研究高效安全的智能合约并发执行协议,智能合约是区块链系统的基本逻辑处理单元,一个区块中往往包含一批智能合约的调用,智能合约的执行一般紧跟在以区块为单位的共识完成之后。而共识算法的效率和智能合约的执行速度都是制约系统吞吐率的重要因素,尤其是在共识效率提高、区块中包含智能合约数目增多、系统吞吐提升以后,智能合约的执行性能对系统整体吞吐的影响更为显著。然而,已有的区块链系统为了保证智能合约在各节点单独执行后状态的一致性,简单采用了各节点独立串行执行单个区块中所有智能合约的方法,串行执行的效率太低,也没有充分发挥现代计算机中多核芯片的计算效能。采用智能合约并发执行的方案,是提高其执行效率最直接的手段。然而,智能合约的并发执行,既需要保证拜占庭容错,又需要保证所有副本间的一致性,并不能直接照搬传统数据库中的事务并发控制协议。因此,如何有效利用区块链智能合约特点,提高智能合约并发执行效率,是我们要解决的第二个难题。

(3)研究可验证、可恢复的数据分片机制。现有的区块链系统中,数据以全复制的方式分布,即每个节点都保存一份完整的数据副本,这样的数据分布方式导致系统整体存储容量受单个节点存储容量所限。尤其在系统吞吐普遍要求比较高的企业级应用中,在系统出块速度加快以后,所需存储容量极有可能在短时间内突破单节点存储能力上限。如果采用传统分布式数据库中的分片技术,每个节点只存储数据的一部分,但由于拜占庭节点的存在,数据又有可能会被恶意篡改。那么,在缺少权威节点的去中心化的架构下,如何快速检验出哪些数据被恶意篡改了,并能在找到被篡改的数据以后,快速恢复出正确的数据,是我们要解决的第三个难题。

(4)可信执行环境(TEE)预研:邵奇峰。

源起于比特币的区块链技术是一种多方互不可信、却需共同维护的分布式账本,具有可追溯、防篡改、去中心化等特点。区块链技术的发展历史相对较为短暂,对于如何在传统行业领域有所作为还有很长的路要走。 

在师大链两年多的设计和开发过程中,许多同学付出了辛勤的汗水,感谢师大链核心开发人员:

1557498420793082090.jpg

图5:区块链实验室师生合影

总体架构设计:朱燕超;

存储与索引模块的设计、实现与测试:朱燕超(负责),王润,李青青;

查询模块的设计、实现与测试:戚晓冬(负责),蔡磊,朱燕超;

共识模块与客户端连接模块的设计、实现与测试:庞帅风(负责),郭庆兴;

智能合约模块的设计、实现与测试:孙芃达;

系统基础模块的设计、编码与测试:朱燕超(负责),方敏;

可信执行环境(TEE)预研:邵奇峰。

实验室指导教师:张召副教授(Email:zhzhang@dase.ecnu.edu.cn)