一种区块链上的数据同步方法和系统技术方案

技术编号:17734019 阅读:4629 留言:0更新日期:2018-04-18 11:28
本申请公开了一种区块链上的数据同步方法,所述方法包括:中间件获取智能合约对应的数据结构定义;根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据;将所述待同步数据写入业务数据库。通过智能合约对应的数据结构定义,计算出待同步数据的地址并直接调用区块链提供的接口获取数据并存储到业务数据库。该方法避免了编写和调用大量仅用于数据同步的智能合约接口,提升了区块链性能。本申请还提供一种区块链上的数据同步系统,具有上述有益效果。

A data synchronization method and system on a block chain

【技术实现步骤摘要】
一种区块链上的数据同步方法和系统
本专利技术涉及区块链领域,特别涉及一种区块链上的数据同步方法和系统。
技术介绍
区块链上的数据与智能合约绑定,每个智能合约是一段运行在区块链上程序,具有独立的存储区域。智能合约能够读写属于自己的存储区域内的数据,但无法操作其他智能合约存储区域内的数据。基于区块链的应用经常需要对数据进行大量的、复杂的查询操作,此类操作难以通过智能合约来实现。为了解决这一问题,可以在业务应用层与区块链之间引入中间件。中间件维护了一个传统的关系型(或非关系型)数据库,以供上层的业务应用进行查询操作。同时,中间件不断地将区块链上的数据同步到数据库中,保证数据库中的数据与区块链上一致。现有的数据同步方案的总体思路如下:首先,在智能合约中设计一套用于获取数据的接口。简单结构的数据可以通过接口批量获取。针对复杂的数据类型,需要多个接口配套使用。然后,同步进程按照一定的规则调用智能合约中的接口,获取数据。对于复杂结构的数据,需要经过多次调用。例如,获取结构体数组类型的数据时,需要先获取其长度,再逐条获取数组的内容。最后,将获取到的数据写入到业务数据库中。上述方案具有以下缺点:智能合约中需要包含大量数据同步接口。这些接口的作用仅仅是为了数据同步,与实际业务逻辑并无关系。这些接口的存在使得智能合约的代码量增大,从而增大了区块链的存储开销。智能合约中不能包含结构过于复杂的数据。数据结构复杂度的增加,会使相应的数据同步接口的设计变得复杂;智能合约对接口的返回值的数量及类型均有所限制,这导致数据同步的过程中需要多次重复调用接口;每一次对接口的调用,区块链都会启动一次虚拟机,用于执行接口中的逻辑。这带来一定的性能开销。
技术实现思路
本申请的目的是提供一种区块链上的数据同步方法和系统,解决现有技术中将数据由区块链数据库同步到业务数据库时对于智能合约中接口的高度依赖性,以及这些接口带来的存储开销和性能开销问题。为解决上述技术问题,本申请提供一种区块链上的数据同步方法,技术方案如下:中间件获取智能合约对应的数据结构定义;根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据;将所述待同步数据写入业务数据库。可选的,所述数据结构定义的生成方式包括:根据所述智能合约中的基本信息和寻址逻辑规则生成所述数据结构定义;其中,所述数据结构定义包括数据的基本信息和寻址规则。可选的,所述利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据包括:利用所述地址,判断所述待同步数据在区块链数据库中的地址是否由指定skip关键字的字段计算得到;若否,则调用区块链存储区数据获取接口获取所述待同步数据;若是,则不获取由所述指定skip关键字的字段计算得到的地址对应的待同步数据。可选的,该方法还包括:将所述数据结构定义保存在区块链上。可选的,将所述待同步数据写入业务数据库包括:根据所述数据结构定义中的所述基本信息将获取的所述待同步数据解析为正确的数据类型;将解析为正确的数据类型的所述待同步数据写入所述业务数据库。本申请还提供一种区块链上的数据同步系统,所述系统包括:获取定义模块,用于中间件获取智能合约对应的数据结构定义;地址计算模块,用于根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;数据获取模块,用于利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据;数据同步模块,用于将所述待同步数据写入业务数据库。可选的,该系统还包括:数据结构定义生成模块,用于根据所述智能合约中的基本信息和寻址逻辑规则生成所述数据结构定义;其中,所述数据结构定义包括数据的基本信息和寻址规则。可选的,所述数据获取模块包括:判断子模块,用于利用所述地址,判断所述待同步数据在区块链数据库中的地址是否由指定skip关键字的字段计算得到;数据获取子模块,用于当所述待同步数据在区块链数据库中的地址不是由指定skip关键字的字段计算得到时,调用区块链存储区数据获取接口获取所述待同步数据;数据屏蔽子模块,用于当所述待同步数据在区块链数据库中的地址是由指定skip关键字的字段计算得到时,不获取由所述指定skip关键字的字段计算得到的地址对应的待同步数据。可选的,该系统还包括:存储模块,用于将所述数据结构定义保存在区块链上。可选的,所述数据同步模块包括:数据处理子模块,用于根据所述数据结构定义中的基本信息将获取的所述待同步数据解析为正确的数据类型;数据写入子模块,用于将解析为正确的数据类型的所述待同步数据写入业务数据库。本申请提供了一种区块链上的数据同步方法,通过中间件获取智能合约对应的数据结构定义,根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;调用区块链提供的数据获取接口获取待同步数据,并将获取到的待同步数据转换为正确的格式后存入业务数据库。显然,本申请避免了调用和在智能合约中编写大量仅用于数据同步的智能合约接口,而且对于复杂结构数据的同步更加方便,提升了区块链性能。本申请还包括一种区块链上的数据同步系统,具有上述有益效果。附图说明为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例所提供的一种区块链上的数据同步方法流程图;图2为本专利技术实施例所提供的另一种区块链上的数据同步方法流程图;图3为本专利技术实施例对应的区块链和中间件的工作关系示意图;图4为本专利技术实施例所提供的一种区块链上的数据同步系统示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参考图1,图1为本专利技术实施例所提供的一种区块链上的数据同步方法流程图,技术方案如下:S101:中间件获取智能合约对应的数据结构定义;每个需要进行数据同步的智能合约均具有对应的数据结构定义。本实施例在此不对数据结构定义的生成方式及过程作限定,它可以有多种生成方法或生成过程。可以根据所述智能合约中的基本信息和寻址逻辑规则生成所述数据结构定义。例如,在智能合约中,会定义一系列的状态变量。状态变量中的值在智能合约每一次调用结束之后,会被写入区块链数据库。部分状态变量具有复杂的自定义类型,如结构体等。数据结构定义中也可以包含这些自定义类型的结构信息。具体的,对应的生成方式可以如下:按照智能合约间的引用关系,解析智能合约的源代码;提取智能合约源代码中所有的自定义类型以及状态变量;将上一步得到的信息进行关联与组织,输出数据结构定义。数据结构定义中包括寻址信息,还可以包括各数据项的基本信息如名称、类型、数据大小等。基本信息的作用是在后续操作中需要根据基本信息的内容对获取到的待同步数据进行类型转换。因此,基本信息中包含和类型转换相关的内容即可,当然也可以含有一些与类型转本文档来自技高网
...
一种区块链上的数据同步方法和系统

【技术保护点】
一种区块链上的数据同步方法,其特征在于,所述方法包括:中间件获取智能合约对应的数据结构定义;根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据;将所述待同步数据写入业务数据库。

【技术特征摘要】
1.一种区块链上的数据同步方法,其特征在于,所述方法包括:中间件获取智能合约对应的数据结构定义;根据所述数据结构定义中的寻址规则计算出待同步数据在区块链数据库中的地址;利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据;将所述待同步数据写入业务数据库。2.根据权利要求1所述的方法,其特征在于,所述数据结构定义的生成方式包括:根据所述智能合约中的基本信息和寻址逻辑规则生成所述数据结构定义;其中,所述数据结构定义包括数据的基本信息和寻址规则。3.根据权利要求1或2所述的方法,其特征在于,所述利用所述地址,调用区块链存储区数据获取接口获取所述待同步数据包括:利用所述地址,判断所述待同步数据在区块链数据库中的地址是否由指定skip关键字的字段计算得到;若否,则调用区块链存储区数据获取接口获取所述待同步数据;若是,则不获取由所述指定skip关键字的字段计算得到的地址对应的待同步数据。4.根据权利要求3所述的方法,其特征在于,还包括:将所述数据结构定义保存在区块链上。5.根据权利要求4所述的方法,其特征在于,将所述待同步数据写入业务数据库包括:根据所述数据结构定义中的所述基本信息将获取的所述待同步数据解析为正确的数据类型;将解析为正确的数据类型的所述待同步数据写入所述业务数据库。6.一种区块链上的数据同步系统,其特征在于,所述系统包括:获取定义模块,用于中间件获取智能合约对应的数据结构定义;地址计算模块,...

【专利技术属性】
技术研发人员:王加楠张一锋
申请(专利权)人:中钞信用卡产业发展有限公司杭州区块链技术研究院
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1