用于区块链的数据处理方法、设备及计算机可读存储介质与流程

文档序号:15497939发布日期:2018-09-21 22:03阅读:225来源:国知局

本公开内容涉及区块链技术,更为具体地涉及用于区块链的数据处理方法、用于区块链的数据处理设备以及相应的用于实施上述方法的计算机可读存储介质。



背景技术:

区块链作为近几年兴起的新兴技术,得到了广泛的讨论和研究。区块链是一种以块结构存储数据,使用密码学保证传输和访问安全,能够实现数据一致性存储、反篡改、去中心的技术体系。

智能合约是一个可以在区块链上准确运行的计算机程序。用户通过使用智能合约进行交易、共享数据、建立信任、并由区块链技术的特性保障数据的存储、读取、执行整个过程透明可跟踪、不可篡改。

由于区块链属于对等网络,用户可访问区块链上任一节点或任一组织的节点获取区块及交易数据。

现有技术中公开了线下存储数据本身、线上存储摘要即哈希值的方式。但是,现有技术中的该存储方案中的链上数据和链下数据不存在关联关系。



技术实现要素:

基于对于以上技术问题以及技术现状的理解,本公开内容的发明人提出了一种标准化的区块链上和链下相结合地来对大文件进行存储的方法,以解决上述问题。

本公开内容的第一方面提供了一种用于区块链的数据处理方法,所述数据处理方法包括:

接收用于存储数据的请求,其中,所述用于存储数据的请求包括与待存储的所述数据相关联的信息;

从所述区块链中获取存储规则,其中,所述存储规则包括链下存储判断规则和上链数据格式;

基于所述信息和所述链下存储判断规则,确定是否将所述数据的至少一部分存储在所述区块链上和链下存储器中;

在确定将所述数据存储在所述区块链上和所述链下存储器中时,基于所述数据和所述上链数据格式,生成所述数据的元数据;以及

将所述元数据存储在所述区块链上,并且将所述数据存储在所述链下存储器中。

本公开内容的第二方面提供了一种用于区块链的数据处理设备,其包括:

处理器;以及

存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:

接收用于存储数据的请求,其中,所述用于存储数据的请求包括与待存储的所述数据相关联的信息;

从所述区块链中获取存储规则,其中,所述存储规则包括链下存储判断规则和上链数据格式;

基于所述信息和所述链下存储判断规则,确定是否将所述数据的至少一部分存储在所述区块链上和链下存储器中;

在确定将所述数据存储在所述区块链上和所述链下存储器中时,基于所述数据和所述上链数据格式,生成所述数据的元数据;以及

将所述元数据存储在所述区块链上,并且将所述数据存储在所述链下存储器中。

最后,本公开内容的第三方面提供了一种有形的计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据本公开内容的第一方面所述的方法。

依据本公开内容的本公开内容所提出的数据处理方法,实现了大文件在区块链上及链下的系统化和标准化的存储方案。此外,本公开的一些实施例中,区块链上每个节点都会安装内置智能合约,且该合约的接口是公开的,用户能够通过访问或调用智能合约的方式获取文件存储规则并完成存储,随着区块链的推广应用,本公开中的技术方案会体现出较大技术价值和商业价值。

附图说明

结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:

图1示出了用于区块链的数据处理方法100的流程图;

图2示出了依据本公开内容的用于区块链的数据处理方法的一个实施例200的示意图;以及

图3示出了用于区块链的数据处理设备300的示意图。

具体实施方式

以下参考附图详细描述本公开的各个示例性实施例。虽然以下所描述的示例性方法、装置包括在其它组件当中的硬件上执行的软件和/或固件,但是应当注意,这些示例仅仅是说明性的,而不应看作是限制性的。例如,考虑在硬件中独占地、在软件中独占地、或在硬件和软件的任何组合中可以实施任何或所有硬件、软件和固件组件。因此,虽然以下已经描述了示例性的方法和装置,但是本领域的技术人员应容易理解,所提供的示例并不用于限制用于实现这些方法和装置的方式。

此外,附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。

在详细介绍依据本公开内容的具体的技术方案之前,将首先介绍本公开内容所基于的技术问题,例如对于一个10kb的大文件,如果需要对其进行链上存储,则随着时间的推移,越来越多的大文件都将会被存储在区块链上,那么整个区块链的链上数据将会急剧膨胀,最终导致区块链的链上数据过多过大,从而不利于区块链网络的运行;另一方面,如果对该数据仅仅进行链下存储,则该数据存在被篡改的可能性,数据安全得不到保证。

此外,区块链采用分布式存储模式,目前对数据的存储存在两方面的问题。

第一方面的问题在于读写数据大小受限。具体而言,区块链对上链数据有严格的大小限制,不能很好地解决大文件存储。

第二方面的问题在于存储容量难以预估。具体而言,区块链上每个节点都可获得全链提交的数据,维护全量数据备份。随着时间的推移,节点所保存的数据量将以不可控的方式增加。

对于大文件存储,目前链下数据保存是一种常见方式。然而,目前并没有一种针对大文件的系统化、标准化的链上链下存储解决方案。也就是说现有技术中所提到的链下的数据存储并没有系统化的流程。对大文件的处理目前仍然以链下存储位置为主,没有进行链上信息处理,现有技术并未规定链下与链上数据如何进行关联,如何判断数据应链上还是链下存储,以及如何对这种链上链下存储的数据进行读取。

为了解决上述技术问题,本公开内容的构思如下,即本公开提出一种用于区块链的链上链下数据处理方法,以解决所读取或者写入的链上数据的大小受到限制的问题。同时该用于区块链的链上链下数据处理方法能够控制上链数据量,以缓解区块链节点存储容量增长过快的压力。

具体而言,该链上链下数据处理方法中会定义存储规则智能合约,以限定上链数据规则及上链数据格式;此外,在执行区块链写操作时,根据预先定义的规则判断数据是否直接存储至区块链。在数据不直接存储在区块链上的情况下,根据存储规则智能合约来确定存储至区块链上的上链数据的元数据的格式。与此同时,链下数据也可包含链上数据的相关信息,如区块链节点信息,上链时间等。链上数据可保证反篡改和数据完整性,同时链下数据的存在也可有效控制上链数据的规模。

与之相对应地,在执行区块链读操作时,可支持同时读取链上和链下数据。可选地,写操作接口可进一步支持数据压缩或批量数据提交,以进一步减少上链数据量。

以下将结合图1来具体描述依据本公开内容的用于区块链的数据处理方法100。图1示出了依据本公开内容的用于区块链的数据处理方法100的一个实施例的流程图。从图中可以看出,依据本公开内容的用于区块链的数据处理方法100包括以下步骤:

首先,在方法步骤110中接收用于存储数据的请求,其中,所述用于存储数据的请求包括与待存储的所述数据相关联的信息,例如待存储的数据的大小或格式等信息;例如,该用于存储数据的请求可以表示需要存储交易数据。当然,该用于存储数据的请求可以表示需要对一个复合数据进行存储,该复合数据例如包括pdf格式的合同文档以及相应的交易数据;

接下来,在方法步骤120中,该用于区块链的数据处理方法将会从所述区块链中获取存储规则,其中,所述存储规则包括链下存储判断规则和上链数据格式;例如,存储规则中可以规定交易数据可以被存储在区块链上,而超过1kb大小的pdf格式的文档将仅进行链下存储,链上将保存包括其摘要哈希值的元数据;

然后,在方法步骤130中基于所述信息和所述链下存储判断规则,确定是否将所述数据的至少一部分存储在所述区块链上和链下存储器中,基于所述信息和所述链下存储判断规则确定是否将所述数据的至少一部分存储在所述区块链上和链下存储器中可以进一步包括根据所述信息所包括的待存储数据的大小信息与所述链下存储判断规则中所指定的文件大小阈值信息之间的关系确定是否将所述数据的至少一部分存储在所述区块链上和链下存储器中。;并且在方法步骤140中在确定将所述数据存储在所述区块链上和所述链下存储器中时,基于所述数据和所述上链数据格式,生成所述数据的元数据。例如,如果该用于存储数据的请求表示需要存储交易数据,而存储规则中可以规定交易数据可以被存储在区块链上,那么将会把交易数据存储在区块链上,此外,将会根据交易数据生成相对应的元数据,并将该元数据存储在区块链上。再比如,如果用于存储数据的请求可以表示需要对包括pdf格式的合同文档以及相应的交易数据的复合数据进行存储,而存储规则中规定超过1kb大小的pdf格式的文档将仅进行链下存储,链上将保存包括其摘要哈希值的元数据,那么该用于区块链的数据处理方法将会计算其摘要哈希值,然后根据存储规则中所包含的上链数据格式来生成相应的元数据;

最后,该用于区块链的数据处理方法100将会在方法步骤150中将所述元数据存储在所述区块链上,并且将所述数据存储在所述链下存储器中。如果用于存储数据的请求可以表示需要对包括pdf格式的合同文档以及相应的交易数据的复合数据进行存储,而存储规则中规定超过1kb大小的pdf格式的文档将仅进行链下存储,链上将保存包括其摘要哈希值的元数据,那么能够根据链下数据存储的需求,生成相应元数据(如上链区块链节点数,节点访问地址,智能合约地址及信息等),完成链下数据存储。链下数据存储可与链上数据存储同步完成,也可顺序完成。

优选地,上述的元数据包括表示是否存在链下数据的信息、表示链下数据的大小的信息、摘要信息以及时间信息,其中,所述摘要信息例如是待存储的数据的哈希值。进一步优选地,上述时间信息包括所述元数据的生成时间信息和所述元数据的上链时间信息中的至少一个。此外,所述元数据还包括链下存储服务的访问统一资源定位器(urls)信息。由于该元数据中包含了链下存储服务的访问统一资源定位器信息,所以能够根据该urls信息获取链下存储服务的位置信息,进而能够获取所述数据。

虽然图1中未示出,该用于区块链的数据处理方法100还能够包括读取服务,所述读取服务包括:接收用于读取数据的请求;基于所述用于读取数据的请求,从所述区块链中获取所述数据的元数据;以及当所述元数据表示所述数据存储在所述区块链上时,从所述区块链上获取所述数据;或者当所述元数据表示所述数据存储在所述区块链上和所述链下存储器中时,从所述区块链上以及所述链下存储器中获取所述数据。

可选地或替代地,所述数据处理方法还包括将所述元数据存储在所述链下存储器中以及读取服务,并且其中存储在所述链下存储器中的所述元数据还包括与链上数据相关联的信息,此时,所述读取服务包括:接收用于读取数据的请求;基于所述用于读取数据的请求,从所述链下存储器中获取所述数据的元数据;以及当所述元数据表示所述数据存储在所述链下存储器中时,从所述链下存储器中获取所述数据;或者当所述元数据表示所述数据存储在所述区块链上和所述链下存储器中时,从所述区块链上以及所述链下存储器中获取所述数据。

优选地,所述存储规则还包括限定适用数据压缩或批量处理的数据信息。从而能够进一步减小区块链上的数据中非有效数据的占比,进而提高区块链上有效数据的传输效率。

本领域的技术人员应当了解,上述的用于区块链的数据处理方法100能够在能够与区块链进行通信的终端(例如智能手机、个人笔记本电脑等)上,中间处理装置,例如baas(blockchainasaservice:区块链即服务)平台上或者区块链的任意一个节点上运行,也能够由上述终端、中间处理装置和节点中的至少两个共同执行。

图2示出了依据本公开内容的用于区块链的数据处理方法的一个实施例200的示意图。从图中可以看出,区块链服务模块210能够包括读接口和写接口,以下首先以写接口为例来介绍依据本公开内容所公开的用于区块链的数据处理方法。

在区块链服务模块210从用户220处接收到向区块链提交数据的请求时,该区块链服务模块210将会借助于该区块链服务模块210所包含的通信模块与区块链网络230中所包含的区块链节点(例如图2中的区块链节点213、232、233、234、235、236、237、238或239中的任何一个或者多个)进行通信,从而读取该区块链节点上所运行的存储规则智能合约中所包含的用于确定将数据存储至区块链链上和/或链下的存储规则,其中,所述存储规则包括上链数据规则和上链数据格式。本领域的技术人员应当了解,此处的九个区块链节点仅仅是示例性的而非限制性的,与区块链服务模块210通信的区块链能够包括更多个或者更少个区块链节点。

接下来,该用于区块链的数据处理方法将会判断所需要写入区块链中的数据是否仅包含存储规则中所规定的进行链上存储的数据,如果所需要写入区块链中的数据仅包含存储规则中所规定的进行链上存储的数据,则对遵循存储规则中所规定的上链数据格式的元数据通过调用区块链中运行的存储智能合约进行链上存储;如果所需要写入区块链中的数据不仅包含存储规则中所规定的进行链上存储的数据,还包括存储规则中所规定的应当进行链下存储的数据,则会生成相应的上链元数据并分别调用区块链中运行的存储智能合约进行链上存储以及调用链下存储服务(图中未示出)进行链下存储。

在该实施例中,存储规则智能合约的内容可包含判断数据是否直接存储至区块链(如根据数据格式、大小等)、上链数据的元数据格式(如是否存在链下数据、链下数据的大小、摘要(如哈希值)、生成时间、链下存储服务的访问urls等);可选地,存储规则智能合约的内容还可包含限定适用数据压缩或批量处理的数据信息(如根据格式,大小等)。

在该实施例中,存储规则智能合约为全链共享,以保证链上数据的一致性。而存储智能合约为数据读写的智能合约,可能存在一个或多个,并且存储智能合约可包含存储规则智能合约的信息,如地址,可支持跨合约调用以验证数据是否符合存储规则智能合约中所定义的元数据。

而在区块链服务模块执行读操作时,存在几种实现方式:仅读取链上数据;读取链上数据,根据所包含的元数据,访问链下数据;仅读取链下数据;读取链下数据,根据所包含的元数据,访问链上数据。

而该实施例中的链下存储服务能够提供链下数据读写接口,其中,链下存储服务的具体实现可采用现有技术完成,具体数据库的选择均可根据需求进行选型和实现(如mysql,mongodb,elasticsearch等)。

如上所述,上述的用于区块链的数据处理方法100在其中运行的区块链服务模块210既能够在能够与区块链进行通信的终端(例如智能手机、个人笔记本电脑等)上,中间处理装置,例如baas(blockchainasaservice:区块链即服务)平台上或者区块链的任意一个节点上运行,也能够由上述终端、中间处理装置和节点中的至少两个共同执行

此外,替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开内容的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

图3示出了用于区块链的数据处理设备300的示意性框图。应当理解,数据处理设备300可以被实现为实现图2中的区块链服务模块210的功能。从图3中可以看出用于区块链的数据处理设备300包括中央处理单元(cpu)301(例如处理器),其可以根据存储在只读存储器(rom)302中的计算机程序指令或者从存储单元308加载到随机访问存储器(ram)303中的计算机程序指令,来执行各种适当的动作和处理。在ram303中,还可存储设备300操作所需的各种程序和数据。cpu301、rom302以及ram303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。

数据处理设备300中的多个部件连接至i/o接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的各种方法,例如用于区块链的数据处理方法100或区块链服务模块210能够由处理单元301执行。例如,在一些实施例中,用于区块链的数据处理方法100或区块链服务模块210可以被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由rom302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序被加载到ram303并由cpu301执行时,可以执行上文描述的方法100或200中的一个或多个动作或步骤。

一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

概括地讲,各种存储器上能够存储指令,当所述指令执行时使得所述处理器301执行以下操作:接收用于存储数据的请求,其中,所述请求包括与待存取的数据相关联的信息;获取用于确定将数据存储至区块链链上和/或链下的存储规则,其中,所述存储规则包括上链数据规则和上链数据格式;根据所述存储规则对所述请求进行处理,以获得遵循所述上链数据格式的元数据;以及对所述元数据进行链上存储处理。

虽然上面描述了本公开的各种示例实施例可以在硬件或专用电路中实现,但是上述用于区块链的数据处理设备既可以以硬件的形式来实现,也可以通过软件的形式来实现,这是因为:在20世纪90年代,一个技术改进能够很容易地对该改进属于硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是属于软件上的改进(例如对于方法流程的改进)。然而,随着技术的持续发展,如今的很多方法流程的改进几乎都能够通过将改进的方法流程编程到硬件电路中来实现,换句话说,通过对于硬件电路编程不同的程序从而得到相应的硬件电路结构,即实现了硬件电路结构的改变,故这样的方法流程的改进也可以被视为硬件电路结构的直接改进。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice:pld)(例如现场可编程门阵列(fieldprogrammablegatearray:fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片可编程逻辑器件上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompi1er)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage:hdl),而hdl也并非仅有—种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

用于执行本公开内容的各个方面的计算机可读程序指令或者计算机程序产品也能够存储在云端,在需要调用时,用户能够通过移动互联网、固网或者其他网络访问存储在云端上的用于执行本公开内容的各个方面的计算机可读程序指令,从而实施依据本公开内容的各个方面所公开的技术方案。

以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。

虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1