发明内容
本发明实施例提供一种区块链的数据存储方法及区块链系统,用以解决现有技术中区块链上存储数据量较大的问题。
本发明实施例提供的一种区块链的数据存储方法,包括:
区块链系统接收待执行的业务交易;
所述区块链系统调用所述业务交易对应的智能合约,生成交易结果和所述交易结果对应的结果摘要;所述结果摘要用于验证所述交易结果的正确性;
所述区块链系统将所述业务交易的交易标识和所述交易结果对应存储至所述区块链系统的合约存储空间中;
所述区块链系统将所述交易标识和所述结果摘要对应存储至区块链上。
可选的,所述区块链系统接收待执行的业务交易之前,还包括:
所述区块链系统接收部署合约交易;所述部署合约交易中包括所述智能合约的执行交易逻辑和生成摘要逻辑;
所述区块链系统根据所述部署合约交易,部署包含所述执行交易逻辑和所述生成摘要逻辑的智能合约;
所述区块链系统调用所述业务交易对应的智能合约,生成交易结果和所述交易结果对应的结果摘要,包括:
所述区块链系统根据所述执行交易逻辑执行所述业务交易,生成所述交易结果;
所述区块链系统根据所述交易结果和所述生成摘要逻辑,生成所述结果摘要。
可选的,所述交易结果包括M个字段;
所述区块链系统根据所述交易结果和所述生成摘要逻辑,生成所述结果摘要,包括:
所述区块链系统根据所述生成摘要逻辑,从所述M个字段中确定出N个字段,计算所述N个字段组合后的哈希值,将所述哈希值确定为所述结果摘要;其中,N小于等于M。
可选的,所述区块链系统将所述交易标识和所述结果摘要对应存储至区块链上之后,还包括:
所述区块链系统接收查询请求,所述查询请求中包括所述交易标识;
所述区块链系统根据所述交易标识,从所述合约存储空间中获取所述交易结果;
所述区块链系统根据所述交易标识,从所述区块链上获取所述结果摘要;
所述区块链系统将所述交易结果和所述结果摘要打包成查询结果。
可选的,所述合约存储空间用于存储所述区块链系统中所有智能合约生成的交易结果。
上述技术方案中,区块链系统在调用智能合约执行完成业务交易之后,会将生成的交易结果存储在合约存储空间中,并将交易结果的结果摘要存储在区块链上,也就是说,区块链上仅存储交易结果的结果摘要,不存储交易结果,从而减少区块链上数据的存储量,进一步的,在区块链系统中查询数据时,不会从区块链上直接查找数据,而是会从合约存储空间中查询数据,该方式不会影响到区块链系统的正常交易上链,提高区块链的运行效率。
相应的,本发明实施例还提供了一种区块链系统,包括:
接收单元、处理单元、存储单元;
所述接收单元用于接收待执行的业务交易;
所述处理单元用于调用所述业务交易对应的智能合约,生成交易结果和所述交易结果对应的结果摘要;所述结果摘要用于验证所述交易结果的正确性;
所述存储单元用于将所述业务交易的交易标识和所述交易结果对应存储至区块链系统的合约存储空间中;以及将所述交易标识和所述结果摘要对应存储至区块链上。
可选的,所述接收单元还用于在接收待执行的业务交易之前,接收部署合约交易;所述部署合约交易中包括所述智能合约的执行交易逻辑和生成摘要逻辑;
所述处理单元还用于根据所述部署合约交易,部署包含所述执行交易逻辑和所述生成摘要逻辑的智能合约;
所述处理单元具体用于:
根据所述执行交易逻辑执行所述业务交易,生成所述交易结果;
根据所述交易结果和所述生成摘要逻辑,生成所述结果摘要。
可选的,所述交易结果包括M个字段;
所述处理单元具体用于:
根据所述生成摘要逻辑,从所述M个字段中确定出N个字段,计算所述N个字段组合后的哈希值,将所述哈希值确定为所述结果摘要;其中,N小于等于M。
可选的,所述接收单元还用于在所述存储单元将所述交易标识和所述结果摘要对应存储至区块链上之后,接收查询请求;所述查询请求中包括所述交易标识;
所述处理单元还用于根据所述交易标识,从所述合约存储空间中获取所述交易结果;根据所述交易标识,从所述区块链上获取所述结果摘要;将所述交易结果和所述结果摘要打包成查询结果。
可选的,所述合约存储空间用于存储所述区块链系统中所有智能合约生成的交易结果。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链的数据存储方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块链的数据存储方法。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示例性的示出了本发明实施例提供的一种区块链的数据存储方法的流程,该流程可以由区块链系统执行。
如图1所示,该流程具体包括:
步骤101,区块链系统接收待执行的业务交易;
步骤102,区块链系统调用业务交易对应的智能合约,生成交易结果和交易结果对应的结果摘要;
其中,结果摘要用于验证交易结果的正确性;
步骤103,区块链系统将业务交易的交易标识和交易结果对应存储至区块链系统的合约存储空间中;
步骤104,区块链系统将交易标识和结果摘要对应存储至区块链上。
本发明实施例中,智能合约中可以包括执行交易逻辑和生成摘要逻辑,其中,执行交易逻辑用于执行业务交易以生成交易结果,生成摘要逻辑用于根据交易结果生成交易结果对应的结果摘要;也就是说,区块链系统中需要部署智能合约,该智能合约同时具有上述两种逻辑。
具体实现中,区块链系统在接收待执行的业务交易之前,先会接收部署合约交易,该部署合约交易即用于指示区块链系统部署智能合约,且该部署合约交易中包括预先设定的该智能合约的执行交易逻辑和生成摘要逻辑。区块链系统根据该部署合约交易,部署包含执行交易逻辑和生成摘要逻辑的智能合约。
基于上述智能合约的描述,步骤102中,区块链系统会调用智能合约的执行交易逻辑以执行业务交易,生成交易结果,进而调用智能合约的生成摘要逻辑,生成交易结果对应的结果摘要。
本发明实施例中,交易结果指的是调用智能合约执行业务交易所生成的全量交易结果的数据,比如,交易内容、交易发起方、交易接收方、交易地点、交易金额、交易备注等;结果摘要指的是交易结果中的关键字段,即应该保障正确性的字段,比如,交易内容、交易发起方、交易接收方、交易金额等。
生成摘要逻辑可以是从交易结果中确定出关键字段,并根据关键字段生成结果摘要,具体的,假设交易结果包括M个字段,区块链系统可以是根据生成摘要逻辑,从M个字段中确定出N个字段,并计算N个字段组合后的哈希值,将哈希值确定为结果摘要,其中,N小于等于M。举例来说,交易结果中包括100个字段,从交易结果中确定出5个字段,分别为aaa、bbb、ccc、ddd、eee,则将该5个字段组合为aaabbbcccdddeee后,生成结果摘要。
当然,区块链系统在生成结果摘要时,并不限于上述实现方式,还可以是从M个字段中确定出N个字段,并将该N个字段确定为结果摘要;还可以是计算N个字段中各字段的哈希值,并将各字段的哈希值作为结果摘要。此处,生成哈希的加密方式不做限定。
步骤103和步骤104中,每个业务交易都会对应一个交易标识,则区块链系统在生成业务交易对应的交易结果之后,会将业务交易对应的交易结果和交易标识对应存储至合约存储空间中;同理,区块链系统在生成业务交易对应的交易结果的结果摘要之后,会将业务交易对应的结果摘要和交易标识对应存储至区块链上,从而区块链系统在接收到查询请求后,可以根据查询请求中的交易标识分别从合约存储空间和区块链上查询对应的数据。
具体的,区块链系统将交易标识和结果摘要对应存储至区块链上之后,区块链系统还可以接收查询节点发送的查询请求,其中,该查询请求中包括交易标识,区块链系统可以根据交易标识,从合约存储空间中获取交易结果,以及根据交易标识,从区块链上获取结果摘要,区块链系统将交易结果和结果摘要打包成查询结果,将查询结果反馈至查询节点,查询节点可以根据查询结果中的结果摘要验证交易结果的正确性。
此处,查询结果中的交易结果可以是结果摘要对应的交易结果,也就是说,在生成结果摘要时,是根据M个字段中的N个字段生成的,则此时也是获取M个字段中的N个字段,相应的,区块链系统在根据交易标识从合约存储空间中获取交易结果时,可以是获取该交易标识对应的全量交易结果,进而从全量交易结果中确定出结果摘要对应的交易结果;也可以是直接根据交易标识从合约存储空间中获取结果摘要对应的交易结果。
需要说明的是,区块链系统可以同时将交易结果和交易标识、结果摘要和交易标识分别存储至合约存储空间和区块链,也可以先将交易结果和交易标识存储至合约存储空间之后将结果摘要和交易标识存储至区块链,当然还可以先将结果摘要和交易标识存储至区块链之后将交易结果和交易标识存储至合约存储空间。
本发明实施例中,所有智能合约都会对应该合约存储空间,也就是说,区块链系统中所有的智能合约执行完成后的交易结果都会存储在该合约存储空间中,举例来说,区块链系统接收到一个业务交易1,该业务交易1对应智能合约1,则智能合约1在执行完成该业务交易1后会生成交易结果1,并进一步生成该交易结果1的结果摘要1,智能合约将该结果摘要1和业务交易1的交易标识对应存储至区块链以及将交易结果1和业务交易1的交易标识对应存储至合约存储空间中;然后,区块链系统再次接收到一个业务交易2,该业务交易2对应智能合约2,则智能合约2在执行完成该业务交易2后会生成交易结果2,并进一步生成该交易结果2的结果摘要2,智能合约将该结果摘要2和业务交易2的交易标识对应存储至区块链以及将交易结果2和业务交易2的交易标识对应存储至合约存储空间中。
图2示例性的示出了本发明实施例提供的一种区块链系统,该区块链系统包括区块链平台层和智能合约层;区块链平台层中包括交易模块、共识模块、账本模块、网络模块和同步模块;智能合约层中包括智能合约模块、结果摘要模块和存储模块。
结合图2的区块链系统,本发明实施例提供另一种区块链的数据存储方法,具体可以如图3示出的流程图:
步骤301,区块链平台层中的交易模块接收业务交易并打包发送至智能合约层的智能合约模块;
步骤302,智能合约层的智能合约模块接收业务交易,生成交易结果;
步骤303,智能合约层的结果摘要模块生成交易结果的结果摘要,并将结果摘要返回至区块链平台层的账本模块;
步骤304,区块链平台层的账本模块接收到结果摘要后,将结果摘要存储至账本模块中;
步骤305,智能合约层的存储模块存储交易结果。
上述实现方式中,智能合约模块生成业务交易的交易结果之后,结果摘要模块会生成交易结果的结果摘要,然后智能合约模块将交易结果存储至存储模块中,也即存储至合约存储空间中,结果摘要模块将结果摘要存储至区块链平台层的账本模块中,也即存储至区块链上,通过该方式,账本模块仅需要存储结果摘要不需要存储交易结果,从而降低账本模块的存储数据量。
本发明实施例中,区块链系统在调用智能合约执行完成业务交易之后,会将生成的交易结果存储在合约存储空间中,并将交易结果的结果摘要存储在区块链上,也就是说,区块链上仅存储交易结果的结果摘要,不存储交易结果,从而减少区块链上数据的存储量,进一步的,在区块链系统中查询数据时,不会从区块链上直接查找数据,而是会从合约存储空间中查询数据,该方式不会影响到区块链系统的正常交易上链,提高区块链的运行效率。
基于同一发明构思,图4示例性的示出了本发明实施例提供的另一种区块链系统的结构,区块链系统可以执行区块链的数据存储方法的流程。
所述区块链系统,包括:
接收单元401、处理单元402、存储单元403;
所述接收单元401用于接收待执行的业务交易;
所述处理单元402用于调用所述业务交易对应的智能合约,生成交易结果和所述交易结果对应的结果摘要;所述结果摘要用于验证所述交易结果的正确性;
所述存储单元403用于将所述业务交易的交易标识和所述交易结果对应存储至区块链系统的合约存储空间中;以及将所述交易标识和所述结果摘要对应存储至区块链上。
可选的,所述接收单元401还用于在接收待执行的业务交易之前,接收部署合约交易;所述部署合约交易中包括所述智能合约的执行交易逻辑和生成摘要逻辑;
所述处理单元402还用于根据所述部署合约交易,部署包含所述执行交易逻辑和所述生成摘要逻辑的智能合约;
所述处理单元402具体用于:
根据所述执行交易逻辑执行所述业务交易,生成所述交易结果;
根据所述交易结果和所述生成摘要逻辑,生成所述结果摘要。
可选的,所述交易结果包括M个字段;
所述处理单元402具体用于:
根据所述生成摘要逻辑,从所述M个字段中确定出N个字段,计算所述N个字段组合后的哈希值,将所述哈希值确定为所述结果摘要;其中,N小于等于M。
可选的,所述接收单元401还用于在所述存储单元403将所述交易标识和所述结果摘要对应存储至区块链上之后,接收查询请求;所述查询请求中包括所述交易标识;
所述处理单元402还用于根据所述交易标识,从所述合约存储空间中获取所述交易结果;根据所述交易标识,从所述区块链上获取所述结果摘要;将所述交易结果和所述结果摘要打包成查询结果。
可选的,所述合约存储空间用于存储所述区块链系统中所有智能合约生成的交易结果。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链的数据存储方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块链的数据存储方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。