一种数据上链方法、系统、设备和计算机可读存储介质与流程

文档序号:31129938发布日期:2022-08-13 05:13阅读:171来源:国知局
一种数据上链方法、系统、设备和计算机可读存储介质与流程

1.本技术涉及区块链技术领域,特别是涉及一种数据上链方法、系统、设备和计算机可读存储介质。


背景技术:

2.区块链技术是是由分布式节点共同参与记账且共同维护一份完整的分布式数据库的技术,且共识机制能够确保区块链上所存储的交易信息的一致性。区块链中存储的数据具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征,利用区块链技术进行数据存储也因此变得普遍起来,将数据存储到区块链中也可以称为数据上链。
3.本技术的申请人在长期的研发过程中发现,在业务系统数据上链的过程中,若区块链平台出现断电、重启、网络异常修复、区块链系统升级等异常情况时,等待上链的数据信息会丢失乃至已经上链的数据也会丢失,影响了数据存储的稳定性。


技术实现要素:

4.本技术主要解决的技术问题是提供一种数据上链方法、系统、设备和计算机可读存储介质,能够提高区块链数据存储的稳定性。
5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种数据上链方法,该方法包括:接收待上链数据;按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据;其中,上链服务模块和/或第三方服务模块存储的待上链数据用于作为区块链平台的备用上链数据。
6.其中,按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据包括:依照预设标准将接收到的待上链数据划分为第一类待上链数据和第二类待上链数据,其中,预设标准包括接收时间和待上链数据的状态;采用上链服务模块存储第一类待上链数据,采用第三方服务模块存储第二类待上链数据。
7.其中,按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据包括:将接收到的待上链数据采用上链服务模块进行存储。
8.其中,按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据包括:将接收到的待上链数据采用第三方服务模块进行存储,将待上链数据的索引信息采用上链服务模块进行存储。
9.其中,该方法还包括:在区块链平台出现异常时,获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储。
10.其中,在区块链平台出现异常时,获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储包括:在区块链平台出现第一类异常时,在第一类异常恢复后,获取上链服务模块和/或第三方服务模块存储的待上链数据进行上链存储,其中,第一类异常表示区块链平台中存储的数据丢失,第一类异常包括区块链系统升级;在区块链平台出现第二类异常时,在第二类异常恢复后,获取上链服务模块和/或第三方服务
模块存储的未在区块链平台中存储的待上链数据进行上链存储,其中,第二类异常表示区块链平台的上链操作暂停,未在区块链平台中存储的待上链数据丢失,第二类异常包括区块链平台断电、重启和网络异常修复。
11.其中,接收待上链数据之后,该方法还包括:选择若干条待上链数据作为目标数据,并放入目标数据池;向区块链平台请求将目标数据上链存储,并将进行上链存储的目标数据移出目标数据池。
12.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种数据上链系统,该数据上链系统包括上链服务模块,上链服务模块用于接收待上链数据;按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据;其中,上链服务模块和/或第三方服务模块存储的待上链数据用于作为区块链平台的备用上链数据。
13.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种数据上链设备,该设备包括处理器和存储器,存储器用于存储程序数据,处理器用于执行程序数据以实现上述任一数据上链方法。
14.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质用于存储程序数据,程序数据能够被执行,用以实现上述任一数据上链方法。
15.在上述方案中,通过将接收到的待上链数据按照预设存储策略,采用上链服务模块和/或第三方服务模块进行存储,从而能够作为区块链平台的备用上链数据,为待上链数据提供备份,使得待上链数据不会由于异常情况而丢失,提高了区块链数据存储的稳定性。
附图说明
16.图1是本技术数据上链方法一实施例的流程示意图;
17.图2是本技术数据上链系统一实施例的示意图;
18.图3是本技术数据上链方法另一实施例的流程示意图;
19.图4是本技术步骤s340另一实施例的流程示意图;
20.图5是本技术数据上链再一实施例的流程示意图;
21.图6是本技术数据上链方法又一实施例的流程示意图;
22.图7是本技术数据上链方法又一实施例的流程示意图;
23.图8是本技术数据上链系统另一实施例的框架示意图;
24.图9是本技术数据上链设备一实施例的框架示意图;
25.图10是本技术计算机可读存储介质一实施例的框架示意图。
具体实施方式
26.为使本技术的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本技术进一步详细说明。
27.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
28.可以理解的是,本技术方法可以包含任一个下述方法实施例以及任意不冲突的下述方法实施例的组合所提供的方法。
29.可以理解的是,本技术中的数据上链方法可以由数据上链设备执行,数据上链设备也可以简称为设备,该数据上链设备可以为具有处理能力的任意设备,例如,手机、平板电脑、计算机等。
30.通常来说,在执行一些业务的过程中,相应的业务系统中会产生业务数据,出于令业务数据无法被篡改等目的,可以将业务数据存储到区块链中。本技术中提供了一种数据上链方法,用于将业务数据存储到区块链中,该数据上链方法由数据上链设备执行,数据上链设备可以与运行业务系统的设备交互,数据上链设备中运行有数据上链系统,通过两设备之间的交互,业务系统可以将需要上链存储的业务数据推送给数据上链系统,以使得数据上链系统对业务数据进行上链。
31.请参阅图1,图1是本技术数据上链方法一实施例的流程示意图,该方法包括:
32.步骤s110:接收待上链数据。
33.一般来说,业务系统中产生业务数据之后,会在打包一条或多条业务数据形成一条数据后,将该条数据作为待上链数据,自动触发该条待上链数据上链,将该条待上链数据推送给数据上链系统,那么数据上链系统则接收待上链数据,该待上链数据即为需要上链的数据,此处涉及的业务数据可以包括结构化数据,也可以包括非结构化数据,另外,业务系统可以将一条或多条业务数据打包作为一条数据,具体数量可以由业务系统设置。具体举例来说,一条待上链数据可以包括一条或多条业务数据,例如,一条待上链数据包括报销人姓名、所属部门、费用归属项目名称、费用发生日期、费用名称、报销金额等多条业务数据。步骤s110的执行受业务系统将待上链数据触发上链的触发,并且也可能会多次执行步骤s110,当业务系统将待上链数据推送给数据上链系统时,数据上链系统即接收待上链数据。
34.步骤s120:按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据。
35.请参阅图2,图2是本技术数据上链系统一实施例的示意图,数据上链系统20包括上链服务模块21,数据上链设备运行数据上链系统20对数据进行操作是通过数据上链系统20的不同模块实现的。其中,上链服务模块21可以用于执行步骤s110和/或步骤s120。
36.其中,上链服务模块和/或第三方服务模块(附图中未示出)存储的待上链数据用于作为区块链平台的备用上链数据。第三方服务模块可以包括云服务器或ipfs(interplanetary file system,星际文件系统)等。
37.需要说明的是,待上链数据为需要存储至区块链平台的数据,通过数据上链系统对待上链数据进行处理,能够将待上链数据存储至区块链平台中,但是在一些情况下,区块链平台中存储的数据可能会出现丢失等情况,或者,业务系统已经触发上链的待上链数据在成功存储到区块链平台上之前也可能会丢失,故本技术上链服务模块和/或第三方服务模块存储的待上链数据可以在出现上述情况时,作为区块链平台的备用上链数据,从而能够为待上链数据提供备份,提高区块链数据存储的稳定性。
38.数据上链系统对待上链数据进行处理,将待上链数据存储至区块链平台中的相关操作可以在接收到待上链数据之后进行,这些相关操作与步骤s120可以是相互独立的,对
待上链数据进行备份并不会影响对待上链数据进行上链。
39.需要说明的是,一旦接收到待上链数据,那么就可以执行步骤s120,并且也可能多次执行步骤s120。
40.在上述方案中,通过将接收到的待上链数据按照预设存储策略,采用上链服务模块和/或第三方服务模块进行存储,从而能够作为区块链平台的备用上链数据,为待上链数据提供备份,使得待上链数据不会由于异常情况而丢失,提高了区块链数据存储的稳定性。进一步来说,待上链数据是业务系统触发上链的,通过上述方式,在区块链平台出现异常时,可以直接使用备份数据,而无需业务系统再次对待上链数据进行触发上链,提高了数据存储的效率。
41.请参阅图3,图3是本技术数据上链方法另一实施例的流程示意图,该方法包括:
42.步骤s310:接收待上链数据。
43.可以理解的是,业务系统产生业务数据之后,会在打包一条或多条业务数据形成一条数据后,将其作为待上链数据,自动触发该数据上链,在一些实施例中,业务系统还可以对需要上链的已打包的数据依照预设编号规则进行编号,预设编号规则可以由用户确定,例如,预设编号规则可以为依照时间顺序依次编号等,而后将完成编号的待上链数据推送给数据上链系统。
44.步骤s310的描述可以参考前述关于步骤s110的相关内容,那么数据上链系统中的上链服务模块可以接收业务系统推送的待上链数据,以及一并接收待上链数据的编号。在数据上链系统中,一条数据可以包括一条或多条业务数据,每条数据对应有状态,数据的状态可以反映数据的处理情况,数据上链系统可以依据数据的状态对数据进行分类,并且依据数据的处理情况对数据的状态进行更新。数据的状态的类别可以依据用户需要而设置,举例来说,数据的状态可以包括待上链、上链中、上链失败、上链成功、上链完成和放弃上链六类,其中,接收到的待上链数据的初始状态可以为待上链。
45.需要说明的是,在数据对应有状态的情况下,在采用上链服务模块和/或第三方服务模块存储待上链数据时,可以将待上链数据与其状态分别存储,也可以将待上链数据与其状态一并对应存储,并且上链服务模块可以根据待上链数据的处理情况而更新状态。
46.需要说明的是,数据上链系统也可以接收多个业务系统发送的待上链数据,对每个业务系统发送的待上链数据分别单独进行处理,本技术中以对一业务系统发送的待上链数据进行处理为例进行说明。
47.步骤s320:依照预设标准将接收到的待上链数据划分为第一类待上链数据和第二类待上链数据。
48.步骤s330:采用上链服务模块存储第一类待上链数据,采用第三方服务模块存储第二类待上链数据。
49.步骤s120可以通过步骤s320和步骤s330来实现,其中,预设标准包括接收时间和待上链数据的状态。
50.具体来说,可以依照接收时间将待上链数据划分为第一类待上链数据和第二类待上链数据,例如,接收时间距离当前时间不超过预设时间的为第一类待上链数据,接收时间距离当前时间超过预设时间的为第二类待上链数据,采用上链服务模块存储第一类待上链数据,采用第三方服务模块存储第二类待上链数据。
51.在另一实施例中,待上链数据的对应有状态,并且状态能够反应数据的处理情况,会随着处理情况的进展而更新,那么待上链数据的状态也可以包括多种,可以按照状态将待上链数据划分为第一类待上链数据和第二类待上链数据,例如,将状态为上链完成的数据作为第二类待上链数据,将状态不为上链完成的数据作为第一类待上链数据,采用上链服务模块存储第一类待上链数据,采用第三方服务模块存储第二类待上链数据。
52.在另一实施例中,按照状态将待上链数据分为第一类待上链数据和第二类待上链数据,将状态不为上链完成的数据作为第一类待上链数据,将所有待上链数据均作为第二类待上链数据,采用上链服务模块存储第一类待上链数据,采用第三方服务模块存储第二类待上链数据。
53.步骤s340:在区块链平台出现异常时,获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储。
54.可以理解的是,步骤s340可以由上链服务模块执行。上链服务模块和/或第三方服务模块中存储的待上链数据作为备用上链数据,在区块链平台出现异常时,区块链平台中存储的数据中的部分或全部丢失和/或已经由业务系统触发上链但是没有存储到区块链平台中的数据丢失,此时启用备用上链数据,获取备用上链数据中与丢失数据对应的部分进行上链存储,从而实现避免区块链平台异常导致的数据丢失,提高数据存储的稳定性。
55.其中,区块链平台可以包括若干区块链节点,本技术中的数据上链设备可以与区块链平台进行交互,也就是与若干区块链节点进行交互,以将数据上链存储。
56.需要说明的是,区块链平台包括若干区块链节点,若存在有一个或多个区块链节点处于异常状态,那么则可以认为区块链平台出现异常。在区块链平台出现异常的情况下,不能够进行上链操作。本技术中所述的在区块链平台出现异常时,实际上是在区块链平台出现异常,在异常恢复之后。
57.在上述方案中,通过将接收到的待上链数据按照预设存储策略,采用上链服务模块和/或第三方服务模块进行存储,从而能够作为区块链平台的备用上链数据,为待上链数据提供备份,使得待上链数据不会由于异常情况而丢失,提高了区块链数据存储的稳定性。进一步来说,通过对待上链数据进行分类,能够适应不同的异常情况,使得区块链平台出现对应异常时,能够快捷获取待上链数据进行上链存储,提高异常情况下的重新上链的效率。
58.可以理解的是,数据上链系统可以判断区块链平台是否出现异常,并且可以判断出现的异常种类,以及能够确定异常当前已经恢复,故数据上链系统能够在区块链平台出现异常并恢复后进行相应的处理。
59.请参阅图4,图4是本技术步骤s340另一实施例的流程示意图,步骤s340包括:
60.步骤s441:在区块链平台出现第一类异常时,在第一类异常恢复后,获取上链服务模块和/或第三方服务模块存储的待上链数据进行上链存储。
61.其中,区块链平台出现的异常包括第一类异常和第二类异常,第一类异常表示区块链平台中存储的数据丢失,故需要获取上链服务模块和/或第三方服务模块中存储的全部待上链数据进行表示存储。具体举例来说,第一类异常包括区块链系统升级等。
62.步骤s442:在区块链平台出现第二类异常时,在第二类异常恢复后,获取上链服务模块和/或第三方服务模块存储且未在区块链平台中存储的待上链数据进行上链存储。
63.其中,第二类异常表示区块链平台的上链操作暂停,从而尚未存储到区块链平台
的待上链数据丢失,在第二类异常恢复之后,获取相应的待上链数据进行上链存储。
64.在一具体的应用场景中,接收时间距离当前时间不超过预设时间的为第一类待上链数据,采用上链服务模块存储,接收时间距离当前时间超过预设时间的为第二类待上链数据,采用第三方服务模块存储。若区块链平台出现异常导致接收时间较晚的待上链数据丢失,那么可以获取上链服务模块中存储的待上链数据作为备份上链数据进行上链存储,若区块链平台出现异常导致接收时间较早的待上链数据丢失,那么可以获取第三方服务模块中存储的待上链数据作为备份上链数据进行上链存储。
65.在一具体的应用场景中,状态为上链完成的数据为第二类待上链数据,采用第三方服务模块存储,状态不为上链完成的数据为第一类待上链数据,采用上链服务模块存储。在区块链平台出现第一类异常时,单独从第三方服务模块或者从上链服务模块以及第三方服务模块获取所有存储的待上链数据进行上链存储;在区块链平台出现第二类异常时,所有状态不为上链完成的数据均为出现第二类异常时丢失的数据,那么可以直接从上链服务模块中获取相应的数据。相比于从第三方服务模块获取待上链数据,从上链服务模块获取待上链数据较为便捷,从而在出现第二类异常时,能够更加方便地获取尚未完成上链的待上链数据。
66.请参阅图5,图5是本技术数据上链再一实施例的流程示意图,该方法包括:
67.步骤s510:接收待上链数据。
68.步骤s520:将接收到的待上链数据采用第三方服务模块进行存储,将待上链数据的索引信息采用上链服务模块进行存储。
69.步骤s120可以通过步骤s520实现,其中,索引信息能够唯一标识待上链数据,具体举例来说,索引信息可以包括待上链数据的编号、任务标识、主键等中的至少一者。采用第三方服务模块存储待上链数据,采用上链服务模块存储索引信息的方式,能够减小上链服务模块的存储压力。
70.步骤s530:在区块链平台出现异常时,获取第三方服务模块存储的待上链数据中的部分或全部进行上链存储。
71.具体来说,根据上链服务模块中存储的索引信息可以从第三方服务模块中获取对应的数据进行上链存储。
72.在上述方案中,通过将接收到的待上链数据按照预设存储策略,采用上链服务模块和/或第三方服务模块进行存储,从而能够作为区块链平台的备用上链数据,为待上链数据提供备份,使得待上链数据不会由于异常情况而丢失,提高了区块链数据存储的稳定性。进一步来说,利用上链服务模块存储索引信息,利用第三方服务模块存储待上链数据,能够在提高存储稳定性的基础上,降低上链服务模块的存储压力。
73.在一些实施例中,还可以单独采用上链服务模块对接收到的待上链数据进行存储,在区块链平台出现异常时,直接获取上链服务模块中存储的待上链数据中对应的部分或全部,进行上链存储,单独采用上链服务模块进行存储的方式,能够在出现异常时,快捷获取待上链数据进行上链存储,出现异常情况时的重新上链的效率高。
74.可以理解的是,上链服务模块和/或第三方服务模块对待上链数据和/或对应的状态的存储可以是永久存储,也可以基于存储压力考虑和用户需求定期删除保存的待上链数据和/或对应的状态。
75.请参阅图6,图6是本技术数据上链方法又一实施例的流程示意图,该方法包括:
76.步骤s610:接收待上链数据。
77.步骤s620:按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据。
78.步骤s630:在区块链平台出现异常时,获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储。
79.步骤s610-步骤s630的相关描述可以参考前述关于步骤s110、步骤s120和步骤s340相关内容,在此不做赘述。
80.步骤s640:选择若干条待上链数据作为目标数据并放入目标数据池。
81.需要说明的是,步骤s640可以在步骤s610之后的任意步骤执行,数据上链系统当前进行请求上链存储的数据称为目标数据(包括即将进行请求上链存储的数据和正在进行请求上链存储的数据),具体来说,目标数据池用于放置目标数据,数据上链系统对目标数据池中的目标数据进行请求上链存储(上链处理),可以通过目标数据池中的数据数量确定目标数据的数量,以及是否小于第一预设数量,并且数据上链系统能够同时对多条目标数据进行上链处理,同时进行上链的目标数据的最大数量即为第一预设数量,故目标数据的数量小于或等于第一预设数量。当检测到目标数据的数量小于第一预设数量时,此时目标数据池中的当前目标数据的数量可以为零或者不为零,也就代表着数据上链系统尚未达到进行上链处理的能力上限,那么可以从接收到的待上链数据中选择数据作为目标数据以进行上链处理。
82.另外,选择的待上链数据的数量需要小于或等于第一预设数量与当前目标数据的数量之差,那么在执行步骤s640之后,目标数据的数量仍然小于或等于第一预设数量。
83.步骤s650:向区块链平台请求将目标数据上链存储,并将进行上链存储的目标数据移出目标数据池。
84.需要说明的是,目标数据包括若干条数据,步骤s650可以是同时对目标数据中的多条分别向区块链平台请求将其上链存储。若在步骤s640之前,数据上链系统中已有一部分目标数据,数据上链系统尚未对已有目标数据进行上链处理,那么在步骤s650中,在选择待上链数据放入目标数据池之后,数据上链系统可以对目标数据池中的所有数据一并进行上链处理,也就是将目标数据中的每一条分别向区块链平台请求将其上链存储。若在步骤s640之前,数据上链系统中已有一部分目标数据,且对已有目标数据中的部分或全部正在进行上链处理,那么在步骤s650中,在选择待上链数据放入目标数据池之后,数据上链系统可以对目标数据池中的所有数据中尚未进行上链处理的一并进行上链处理,或者选择尚未进行上链处理的一部分进行上链处理。若在步骤s640之前,数据上链系统尚未存在目标数据,那么步骤s650中可以对步骤s640中选择的目标数据一并进行上链处理,或者选择其中的一部分进行上链处理。
85.在对一条目标数据进行请求上链存储之后,就将该条进行上链存储的目标数据移出目标数据池,此时该条数据也就不再作为目标数据。
86.通常来说,现有的数据上链方式是由业务系统触发业务数据上链,向区块链平台请求将业务数据存储到区块链中,一般同时仅能对一条业务数据进行上链,若存在多条业务数据需要上链,那么该多条业务数据需要依序排列,逐个处理。并且,一条数据的上链过
程可以划分为两个阶段,第一阶段为向区块链平台请求将数据上链,第二阶段为确定数据上链情况。对于一条业务数据上链来说,需要对其进行上链操作,并且确定本次上链操作的结果之后,也就是完成该条业务数据的两个阶段之后,该条业务数据的上链才完成,而后才能够对下一条业务数据进行上链,数据上链的效率低。
87.可以理解的是,业务系统触发上链与向区块链平台请求将目标数据上链存储不同,仅仅是将待上链数据(包括若干业务数据)发送给数据上链系统,请求数据上链系统对待上链数据上链(包括向区块链平台请求将目标数据上链存储以及查询上链操作的结果),本技术中的向区块链平台请求将目标数据上链存储为对目标数据进行上链操作,而不包括对目标数据上链操作的结果的查询,且向区块链平台请求将目标数据上链存储并不必然代表目标数据被存储到区块链中,也可能未存储到区块链中,也就是说向区块链平台请求将目标数据上链存储仅包含第一阶段的处理,并不包括第二阶段的处理。
88.在上述方案中,通过接收待上链数据,在目标数据的数量小于第一预设数量时,选择若干条待上链数据作为目标数据,并向区块链平台请求将目标数据上链,能够同时对多条待上链数据进行上链处理,并且无需等待之前的待上链数据的上链结果就可以对之后的待上链数据进行上链处理,提高了数据上链的效率。
89.请参阅图7,图7是本技术数据上链方法又一实施例的流程示意图,该方法包括:
90.步骤s710:接收待上链数据。
91.步骤s720:按照预设存储策略,采用上链服务模块和/或第三方服务模块存储接收到的待上链数据。
92.步骤s730:在区块链平台出现异常时,获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储。
93.步骤s710-步骤s730的相关描述可以参考前述关于步骤s110、步骤s120和步骤s340相关内容,在此不做赘述,其中,步骤s710-步骤s730可以为上链服务模块执行。可以理解的是,数据上链系统能够判断当前区块链平台是否存在异常以及存在何种异常,具体来说,可以由数据上链系统的上链模块执行,若存在异常并恢复后,上链模块触发上链服务模块执行获取上链服务模块和/或第三方服务模块存储的待上链数据中的部分或全部进行上链存储的步骤。
94.步骤s740:上链模块判断目标数据的数量是否小于第一预设数量。
95.数据上链系统20还包括上链模块22,上链模块22可以用于对数据进行上链操作,包括对目标数据的上链操作以及在区块链平台出现异常时对上链服务模块和/或第三方服务模块中存储的待上链数据进行的上链操作。若步骤s740中判断结果为是,则执行步骤s750。
96.步骤s750:上链模块向上链服务模块订阅若干条待上链数据,以作为目标数据。
97.当目标数据的数量小于第一预设数量时,上链模块处理的目标数据的数量尚未达到上限,那么也就可以从需要上链的待上链数据中选择数据作为目标数据放入目标数据池,进行上链,从而充分发挥上链模块的作用。
98.步骤s760:上链服务模块向上链模块发送待上链数据。
99.上链服务模块会依据上链模块的订阅内容,分发对应的待上链数据。
100.步骤s770:上链模块接收上链服务模块发送的待上链数据作为目标数据,并放入
目标数据池。
101.步骤s640可以通过步骤s740-步骤s770实现,基于订阅和分发的方式,上链模块向上链服务模块订阅数据,上链服务模块可以基于上链模块的订阅内容分发数据,从而上链模块可以获取待上链数据作为目标数据,每条目标数据均可以包括一条或多条业务数据,上链模块可以同时对多条目标数据分别进行上链处理。
102.步骤s780:上链模块向区块链平台请求将目标数据上链存储,并将进行上链存储的目标数据移出目标数据池。
103.其中,上链模块分别对每一条目标数据生成各自的数据上链请求,而后将数据上链请求发送给区块链平台,以请求将目标数据上链存储。具体来说,一条目标数据的数据上链请求可以包括目标数据和目标数据的编号。
104.需要说明的是,通常来说,一条数据的上链过程可以划分为两个阶段,第一阶段为向区块链平台请求将数据上链,第二阶段为确定数据上链情况。
105.步骤s780则对应前述第一阶段,在一些实施例中,上链模块向区块链平台请求将目标数据上链存储之后,区块链平台会对每条目标数据生成上链任务标识,并将该任务标识返回给上链模块,其中,任务标识与进行上链的目标数据是一一对应的,上链模块还可以接收区块链平台返回的任务标识,并将任务标识发送给上链服务模块。具体举例来说,任务标识可以为上链任务id,区块链平台可以对每条数据生成上链任务id,那么上链模块还可以接收区块链平台返回的上链任务id,并将上链任务id发送给上链服务模块。
106.需要说明的是,步骤s740-步骤s780可以在步骤s710之后的执行,也可以与步骤s720-步骤s730同时执行。
107.在一些实施例中,数据上链系统可以依据区块链平台返回的任务标识,更新对应的目标数据的状态为上链中,进一步来说,上链模块和/或数据上链模块可以执行上述更新步骤。
108.需要说明的是,目标数据为数据上链系统的上链模块当前进行上链处理的数据,在上链处理(请求上链存储)完成之后,将该条目标数据移出目标数据池,也就不再作为目标数据,并对状态更新为上链中,本次上链处理结束。
109.请参阅图8,图8是本技术数据上链系统另一实施例的框架示意图。
110.本实施例中,数据上链系统80包括上链服务模块81,其中,上链服务模块81可以用于接收待上链数据,按照预设存储策略,采用上链服务模块81和/或第三方服务模块存储接收到的待上链数据,其中,上链服务模块和/或第三方服务模块存储的待上链数据用于作为区块链平台的备用上链数据。
111.请参阅图9,图9是本技术数据上链设备一实施例的框架示意图。
112.本实施例中,数据上链设备90包括存储器91、处理器92,其中存储器91耦接处理器92。具体地,数据上链设备90的各个组件可通过总线耦合在一起,或者数据上链设备90的处理器92分别与其他组件一一连接。该数据上链设备90可以为具有处理能力的任意设备,例如计算机、平板电脑、手机等。
113.存储器91用于存储处理器92执行的程序数据以及处理器92在处理过程中的数据等。例如,待上链数据、数据的状态、索引信息等。其中,该存储器91包括非易失性存储部分,用于存储上述程序数据。
114.处理器92控制数据上链设备90的操作,处理器92还可以称为cpu(central processing unit,中央处理单元)。处理器92可能是一种集成电路芯片,具有信号的处理能力。处理器92还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器92可以由多个成电路芯片共同实现。
115.处理器92通过调用存储器91存储的程序数据,用于执行指令以实现上述任一数据上链方法。
116.请参阅图10,图10是本技术计算机可读存储介质一实施例的框架示意图。
117.本实施例中,该计算机可读存储介质100存储有处理器可运行的程序数据101,该程序数据能够被执行,用以实现上述任一数据上链方法。
118.该计算机可读存储介质100具体可以为u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等可以存储程序数据的介质,或者也可以为存储有该程序数据的服务器,该服务器可将存储的程序数据发送给其他设备运行,或者也可以自运行该存储的程序数据。
119.在一些实施例中,计算机可读存储介质100还可以为如图9所示的存储器。
120.在一些实施例中,数据上链过程的第二阶段为确定数据上链情况,进一步来说可以包括确定上链任务情况,本实施例中对确定上链任务情况的相关步骤进行示例性说明,前述实施例的步骤可以与本实施例的步骤先后执行,或同时执行,该数据上链方法具体可以包括如下步骤:
121.步骤一:选择第一待查询数据。
122.其中,第一待查询数据为数据上链系统当前进行第一查询处理的数据,第一待查询数据为进行请求上链存储的数据,对其进行查询是为了确定其上链任务情况,在一些实施例中,进行请求上链存储的数据对应的状态为上链中,那么步骤一可以为从状态为上链中的数据中选择第一待查询数据。
123.步骤二:向区块链平台查询第一待查询数据的上链任务情况。
124.其中,上链任务情况包括上链成功和上链失败,进一步来说,第一待查询数据为进行请求上链存储的数据,其对应有区块链平台生成的任务标识,例如,任务标识,例如上链任务id,步骤二可以基于任务标识而实现,那么步骤二可以为向区块链平台查询第一待查询数据的任务标识对应的上链任务情况,其中,上链任务情况包括上链成功和上链失败。可以理解的是,第一待查询数据可以包括若干条数据,对每条数据分别进行查询,得到每条数据对应的上链任务情况,另外,数据上链系统可以同时对多条第一待查询数据进行第一查询处理。
125.那么在此基础之上,为了实现数据上链情况的确定,数据上链系统20还可以包括第一查询模块23,用于确定上链任务情况。
126.在一些实施例中,步骤一也可以基于订阅和分发的方式实现。第一查询模块与上链模块类似,同时进行处理的最大数据数量为第二预设数量,那么第一查询模块可以判断第一待查询数据的数量是否小于第二预设数量,若判断结果为是,那么第一查询模块可以向上链服务模块订阅进行请求上链存储的数据以作为第一待查询数据。第一待查询数据也
可以对应有第一待查询数据池,第一待查询数据池中的数据数量也就是第一待查询数据的数量,与上链模块类似,第一查询模块订阅数据的数量小于或等于当前第一待查询数据的数量与第二预设数量之间的差值,因此,第一待查询数据的数量不会超过第二预设数量。上链服务模块基于第一查询模块的订阅内容分发数据,向第一查询模块发送数据和/或数据标识,从而第一查询模块接收上链服务模块发送的数据/数据标识,以确定第一待查询数据。第一查询模块向区块链平台查询第一待查询数据的上链任务情况,并且接收区块链平台返回的第一待查询数据的上链任务情况。
127.在一些实施例中,数据上链系统还可以基于上链任务情况更新数据的状态,这一步骤可以由第一查询模块和/或上链服务模块实现,具体来说,第一查询模块还可以将区块链平台返回的上链任务情况发送给上链服务模块,第一查询模块和/或上链服务模块可以将上链任务情况为上链成功的数据的状态由上链中更新为上链成功,将上链任务情况为上链失败的数据的状态由上链中更新为上链失败。
128.在上述步骤完成之后,数据上链系统对第一待查询数据的本次第一查询处理结束,那么对于完成本次第一查询处理的第一待查询数据也可以移出第一待查询数据池,也就不再作为第一待查询数据。
129.需要说明的是,对于一条数据的上链过程来说,两个阶段是存在一定先后顺序限制的,例如,只有在向区块链平台请求将该数据上链之后,该数据才会对应有上链任务,那么才能够查询其上链任务情况。但是对于数据上链系统来说,上链模块用于向区块链平台请求将数据上链,第一查询模块用于确定数据上链情况,上链模块和第一查询模块两者是相互独立的,上链模块和第一查询模块可以同时工作,可以同时对不同的数据进行处理。并且,上链模块对后续目标数据的处理无需依赖之前的目标数据的上链任务情况,具体来说,上链模块完成了对当前目标数据的处理,其无需等待第一查询模块对当前目标数据作为第一待查询数据完成上链任务情况的查询,可以直接选择待上链数据作为新的目标数据进行工作,本技术提供的数据上链方法,可以同时对多条目标数据进行处理,并且无需等待上链任务情况查询就可以对下一条数据进行处理,提高了数据上链的效率。
130.在一些实施例中,确定上链任务情况仅仅确定一次上链任务是否执行成功,上链任务执行成功不代表该数据最终存储到区块链中,在一些情况下,即便上链任务情况为上链成功,该数据也没有最终存储到区块链中,对于数据上链来说,上链结果取决于区块链中是否存在这一数据。那么数据上链过程的第二阶段为确定数据上链情况,进一步来说除了确定上链任务情况之外,还可以包括确定上链结果。本实施例中对确定上链结果的相关步骤进行示例性说明,前述实施例的步骤与本实施例的步骤可以先后执行,或同时执行,该数据上链方法具体可以包括如下步骤:
131.步骤一:选择第二待查询数据。
132.需要说明的是,确定上链结果的相关步骤为可选步骤,是为了提高数据上链情况确定的准确性而设置,不执行相关步骤不会影响数据上链。并且,确定上链结果是在确定上链任务情况的基础上进行的,进一步判断上链任务情况为上链成功的数据是否存储到区块链中。
133.第二待查询数据为数据上链系统当前进行第二查询处理的数据,第二待查询数据是上链任务情况为上链成功的数据,具体来说可以从上链任务情况为成功的数据中选择数
据以作为第二待查询数据。
134.步骤二:向区块链平台查询第二待查询数据的上链结果。
135.其中,步骤二可以为向区块链平台查询第二待查询数据是否存在,区块链平台会根据第二待查询数据是否存在,返回相应的上链结果,上链结果表示数据是否存储到区块链中,上链结果的形式可以由用户自行设置。可以理解的是,第二待查询数据可以包括若干条数据,对每条数据分别进行查询,得到每条数据对应的上链结果,并且数据上链系统可以同时对多条第二待查询数据进行第二查询处理,同时处理的最大数量为第三预设数量。其中,上链结果可以包括上链完成和上链失败,在一具体的实施场景中,第二查询模块可以依据第二待查询数据的数据标识向区块链平台查询上链结果,区块链平台根据数据标识查找链上是否存在该第二待查询数据,若存在则返回上链完成,若不存在则返回上链失败,其中,数据标识用于唯一标识数据,例如,主键等。或者,上链结果也可以仅包括上链完成,区块链平台对链上存在的第二待查询数据返回上链完成,对于不存在的数据不返回结果。那么数据上链系统对于第一预设时间内未接收到上链完成的上链结果的数据,就可以认为其上链结果为上链失败。其中,第一预设时间可以由用户基于需要而设置。
136.那么在此基础之上,为了实现上链结果的确定,数据上链系统20还可以包括第二查询模块24,用于确定上链结果。
137.在一些实施例中,步骤一也可以基于订阅和分发的方式实现。第二查询模块与第一查询模块、上链模块类似,同时进行处理的最大数据的数量为第三预设数量,那么第二查询模块可以判断第二待查询数据的数量是否小于第三预设数量,若判断结果为是,那么第二查询模块可以向上链服务模块订阅上链任务情况为上链成功的数据以作为第二待查询数据。相应地,第二待查询数据可以对应有第二待查询数据池,第二待查询数据池中的数据数量也就是第二待查询数据的数量,同样地,第二查询模块订阅数据的数量小于或等于当前第二待查询数据的数量与第三预设数量之间的差值,因此,第二待查询数据的数量不会超过第三预设数量。上链服务模块基于第二查询模块的订阅内容分发数据,向第二查询模块发送数据和/或数据标识,从而第二查询模块接收上链服务模块发送的数据和/或数据标识,以确定第二待查询数据。第二查询模块向区块链平台查询第二待查询数据的上链结果。
138.在上述步骤完成之后,数据上链系统对第二待查询数据的本次第二查询处理结束,那么对于完成本次第二查询处理的第二待查询数据也可以移出第二待查询数据池,也就不再作为第二待查询数据。
139.可以理解的是,一条数据可以多次作为目标数据进入目标数据池进行请求上链存储,也可以多次作为第一待查询数据/第二待查询数据进入第一待查询数据池/第二待查询数据池进行第一/二查询处理。
140.其中,第一预设数量、第二预设数量和第三预设数量可以由用户自行调整,三者可以相同也可以不同,本技术中不做具体限制。
141.在一些实施例中,数据上链系统还可以基于上链结果查询更新数据的状态,这一步骤可以由第二查询模块和/或上链服务模块实现,具体来说,第二查询模块接收到区块链平台返回的上链结果之后,第二查询模块还可以将上链结果/根据上链结果更新的状态发送给上链服务模块,那么第二查询模块和上链服务模块均可以基于上链结果更新数据的状态。在一具体的应用场景中,上链结果包括上链完成和上链失败,第二查询模块可以将上链
结果为上链完成的数据的状态由上链成功更新为上链完成,将上链结果为上链失败的数据的状态由上链成功更新为上链失败。在另一具体的应用场景中,上链结果仅包括上链完成,那么第二查询模块可以将上链结果为上链完成的数据的状态由上链成功更新为上链完成。
142.对上链服务模块来说,可以接收第二查询模块发送的上链结果/根据上链结果更新的状态,并相应地更新数据的状态,其过程与第二查询模块更新数据的状态类似。在一些实施例中,上链服务模块还可以将状态更新为上链完成的数据的状态更新为已上链,而后向业务系统返回数据已上链的提示信息,以通知业务系统该数据已上链。
143.在一具体的应用场景中,上链结果仅包括上链完成,那么上链服务模块对一段时间内没有接收到上链结果的数据的状态由上链成功更新为上链失败。
144.同理,对于一条数据上链的过程来说,向区块链平台请求将数据上链、确定上链任务情况、确定上链结果这三个部分是存在先后顺序的,例如,只有在向区块链平台请求将该数据上链之后,该数据才会对应有上链任务,那么才能够查询其上链任务情况,只有在上链任务情况为上链成功时,为了确保数据已经上链,对其进一步确定上链结果。但是对于数据上链系统来说,上链模块用于向区块链平台请求将数据上链,第一查询模块用于确定数据上链情况,第二查询模块用于确定上链结果,上链模块、第一查询模块和第二查询模块之间是相互独立的,上链模块、第一查询模块和第二查询模块可以同时工作,可以同时对不同的数据进行处理。
145.同理,上链模块的工作无需依赖第一查询模块和第二查询模块得到的上链任务情况和上链结果,第一查询模块的工作也无需依赖第二查询模块得到的上链结果,具体来说,第一查询模块对当前第一待查询数据进行处理得到了当前第一待查询数据的上链任务情况,不必等待第二查询模块对当前第一待查询数据进行上链结果的查询,可以直接选择数据作为新的第一待查询数据进行工作。上链模块、第一查询模块和第二查询模块实际都在不断对相应的数据池中的数据进行处理,将处理完成的数据移出,并选择新的数据放入数据池中。相比于现有技术来说,对一条业务数据进行上链,并且依次确定上链任务情况和上链结果之后,本次上链才完成,才能够对下一条业务数据进行处理,本技术提供的数据上链方法,可以同时对多条目标数据进行处理,并且无需等待上链任务情况以及上链结果的查询就可以对下一条数据进行处理,提高了数据上链的效率。
146.除了数据上链系统接收到的初始状态为待上链的待上链数据可以作为目标数据进行上链以外,在一些实施例中,上述状态从上链中转变为上链失败的数据以及上述状态从上链成功转变为上链失败的数据均可以再次作为待上链数据,从而成为目标数据进行上链。进一步地,在选择目标数据时,也就是上链服务模块在进行数据分发时,可以依照预设规则进行,例如,上述三类数据(接收到业务系统发送的初始状态为待上链的待上链数据、状态从上链中转变为上链失败的数据以及上述状态从上链成功转变为上链失败的数据)的状态更新时间依次进行分发。在一具体的实施场景中,对于接收到的待上链数据,接收到时即对应初始状态产生,那么状态更新时间即为接收到该待上链数据的时间;对于其余两类数据,状态更新时间即为状态转变为上链失败的时间,对于状态更新时间越早的数据越先进行分发。
147.需要说明的是,若上述状态从上链中转变为上链失败的数据以及上述状态从上链成功转变为上链失败的数据再次作为待上链数据,由于这些数据已经作为待上链数据并且
由上链服务模块和/或第三方服务模块进行过一次存储备份,那么再次作为待上链数据时也可以无需进行存储备份。
148.同理,选择第一待查询数据以及第二待查询数据时,上链服务模块在进行数据分发时也可以依照预设规则进行,例如,依照数据的状态更新时间依次进行分发。在一具体的实施场景中,对于第一待查询数据来说,状态更新时间为状态转变为上链中的时间,对于第二待查询数据来说,状态更新时间为状态转变为上链成功的时间。
149.另外,在一些实施例中,数据上链系统还可以记录数据上链失败的次数,当状态转变为上链失败时,失败次数加一,并且还可以为上链次数设置上限,例如,上限为第四预设数量,当上链失败次数小于第四预设数量时,每当其状态转变上链失败时,就将其作为待上链数据,从而可以作为目标数据再次上链,当上链失败次数达到第四预设数量时,就不再将该条数据作为待上链数据进行上链,并将该数据的状态更新为放弃上链,并向业务系统返回数据放弃上链的提示信息,以通知业务系统该数据由于多次上链失败故放弃上链。当然也可以不设置上链次数上限,那么对于该条数据,上链失败后始终对其进行再次上链,直到上链成功为止,也就是每当其状态转变为上链失败后,就将其作为待上链数据,等待作为目标数据再次上链。上述步骤可以通过上链服务模块实现,上链服务模块可以根据第一查询模块和第二查询模块发送的上链任务情况的上链结果更新数据的状态,从而可以准确记录数据每次上链的情况。
150.在一些实施例中,上链服务模块在第二预设时间内没有接收到任何上链任务情况/上链结果,那么上链服务模块可以向第一查询模块/第二查询模块发起该条数据的上链任务情况查询请求/上链结果查询请求,或者直接向区块链平台查询该条数据的上链任务情况/上链结果,从而避免传输过程中信息丢失导致数据上链情况的不准确,能够更好地把握数据上链情况。其中,第二预设时间可以由用户基于需要而设置。
151.在上述方案中,通过接收待上链数据,在目标数据的数量小于第一预设数量时,选择若干条待上链数据作为目标数据,并向区块链平台请求将目标数据上链,能够同时对多条数据进行上链处理,并且无需等待之前的数据的上链结果就可以对之后的数据进行上链处理,提高了数据上链的效率,并且能够对数据的上链任务情况和上链结果分别单独进行查询,能够准确把握数据的上链情况。
152.在一些实施例中,数据上链方法还可以包括如下步骤:
153.步骤一:可以理解的是,终端设备为用户使用的设备,终端设备中可以运行有一客户端供用户操作,终端设备可以与数据上链设备通信以获取数据(打包了一条或多条业务数据)的上链情况以及从链上获取数据,那么用户通过该客户端可以实现查看数据的上链情况,以及从链上获取数据。数据上链设备在数据状态变化时,可以向终端设备发送相应的变动通知,以使用户能够在客户端中查看数据的状态,了解数据的上链情况。另外,终端设备可以响应于用户在客户端的操作而生成数据获取请求,并将该数据获取请求发送给数据上链设备,以获取数据。
154.其中,数据获取请求包括待获取数据的数据标识,用于供数据上链系统以及区块链平台确定待获取数据,数据标识可以为任意能够唯一标识数据的数据标识,此处数据标识与前文中的索引信息相似,例如,数据的编号、任务id或主键等。
155.可以理解的是,终端设备也可以同时发送多条数据获取请求,数据上链系统可以
同时对多条数据获取请求进行处理。
156.步骤二:依据数据标识查询待获取数据的上链结果。
157.可以理解的是,获取待获取数据的过程可以划分两个部分,首先确定待获取数据的上链结果以确定其是否已经存储到区块链中,若没有存储到区块链中,则无需向区块链平台获取该数据,直接向终端设备返回未上链的提示信息,若该数据已经存储到区块链中,那么向区块链平台获取该数据。
158.若上链结果为上链完成,那么可以认为待获取数据已经存储到区块链中,则执行步骤三。若上链结果不为上链完成,那么可以认为待获取数据尚未存储到区块链中,则向终端设备发送数据未上链的提示信息,以使用户在客户端中确定该数据未上链。
159.为了实现数据的获取,数据上链系统20还可以包括获取服务模块25、上链校对模块26和数据获取模块27,其中,获取服务模块25可以用于接收客户端发送的数据获取请求,上链校对模块26可以用于查询待获取数据的上链结果,数据获取模块27可以用于向区块链平台获取待获取数据。
160.具体来说,获取服务模块接收数据获取请求,并将数据获取请求中的数据标识发送给上链校对模块,上链校对模块可以利用数据标识向第二查询模块查询待获取数据的上链结果,若上链结果不为上链完成,那么上链校对模块可以向获取服务模块发送数据未上链的提示信息,以使获取服务模块将数据未上链的提示信息反馈给客户端供用户查看。若上链结果为上链完成,那么上链校对模块可以向数据获取模块发送相应的数据获取请求,以使数据获取模块根据数据标识向区块链平台获取待获取数据。
161.步骤三:向区块链平台获取待获取数据,并接收区块链平台发送的获取结果。
162.其中,获取结果包括无权限获取的提示信息或待获取数据,区块链平台会根据待获取数据以及发送数据获取请求的用户的数据获取权限,向数据上链系统返回相应的获取结果。具体来说,区块链平台会判断发送该数据获取请求的用户是否有该数据的获取权限,若有,那么区块链平台会将相应的待获取数据发送给数据上链系统,若没有,那么区块链平台会将无权限获取的提示信息发送给数据上链系统。数据上链系统在接收到区块链平台发送的获取结果之后,还可以将获取结果发送给终端设备,以供用户在客户端中查看相应的获取结果。
163.进一步来说,数据获取模块接收区块链平台返回的获取结果,并将该获取结果发送给获取服务模块,获取服务模块将获取结果发送给终端设备,以供用户在客户端中查看相应的获取结果。
164.在上述方案中,通过首先确定待获取数据的上链情况,在其未上链的情况下,无需向区块链平台进行获取,在其已上链的情况下,向区块链平台获取待获取数据,能够便捷地获取数据,并且也能够同时对多条数据进行获取,提高了区块链上数据获取的效率。
165.以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1