区块上链方法、相关装置和介质与流程

摘要: 本公开涉及区块链,特别是涉及一种区块上链方法、相关装置和介质。背景技术:1、在区块链技术中,一般是将每个待上链内容作为独立的个体进行打包上链的。但是,在某一些区...
区块上链方法、相关装置和介质与流程

本公开涉及区块链,特别是涉及一种区块上链方法、相关装置和介质。

背景技术:

1、在区块链技术中,一般是将每个待上链内容作为独立的个体进行打包上链的。但是,在某一些区块链场景下,常常会出现一系列待上链内容与同一个任务有关。例如,针对一个团购任务,由用户a提交到区块链网络的团购发起内容、和由用户b提交到区块链网络的的团购加入内容是不同的待上链内容,但这两个待上链内容属于同一个任务,只有当该团购任务成功之后,用户a提交的团购发起内容、用户b提交的团购加入内容才是有效的待上链内容。

2、在相关技术中,常常会对与多个待上链内容关联的任务中每个被提交到区块链网络的待上链内容都上链,并依赖于智能合约来记录与多个待上链内容关联的任务的任务进程信息。例如,针对一个需要三个用户参与的团购任务,该团购任务需要分成stepa,stepb和stepc三部分操作的;当用户a提交了团购发起内容,则区块链网络会对团购发起内容进行上链处理,并在智能合约中标记该团购任务的任务进程为stepa;同样地,当用户b提交了团购加入内容,则区块链网络会对团购加入内容进行上链处理,并在智能合约中标记该团购任务的任务进程为stepb。如果在团购任务的有效期限内没有第三个用户加入该团购任务,则该团购任务失败,需要在智能合约中标记该团购任务的任务进程为失败,并对用户a提交的团购发起内容以及用户b提交的团购加入内容所关联的读写数据进行回滚。这一方式虽然可以及时地对任务结果进行回滚,但往往无法对区块链上记录的无效待上链内容进行彻底删除,会导致区块链资源被占用,内容上链的准确性较差。

技术实现思路

1、本公开实施例提供了一种区块上链方法、相关装置和介质,它能够减少区块链资源的占用,并提高内容上链的准确性。

2、根据本公开的一方面,提供了一种区块上链方法,所述方法包括:

3、获取当前上链轮次中的待上链内容集,其中,所述待上链内容集中包括多个候选任务各自对应的待上链内容序列,所述待上链内容序列由关联于所述候选任务的多个待上链内容排列而成,每个待上链内容包括任务进程标识;

4、针对每个所述候选任务对应的待上链内容序列,将所述待上链内容序列中的各个待上链内容的所述任务进程标识、与所述候选任务的结束进程标识相比较,在各个候选任务中确定无效任务;

5、在所述无效任务对应的所述待上链内容序列中,删除首个待上链内容之后的待上链内容,将所述首个待上链内容替换成首个待上链内容概要信息,并将失效标记附加到所述首个待上链内容概要信息;

6、将带失效标记的所述首个待上链内容概要信息打包到目标区块,并将所述目标区块记录到区块链。

7、根据本公开的一方面,提供了一种区块上链装置,所述装置包括:

8、获取单元,用于获取当前上链轮次中的待上链内容集,其中,所述待上链内容集中包括多个候选任务各自对应的待上链内容序列,所述待上链内容序列由关联于所述候选任务的多个待上链内容排列而成,每个待上链内容包括任务进程标识;

9、确定单元,用于针对每个所述候选任务对应的待上链内容序列,将所述待上链内容序列中的各个待上链内容的所述任务进程标识、与所述候选任务的结束进程标识相比较,在各个候选任务中确定无效任务;

10、处理单元,用于在所述无效任务对应的所述待上链内容序列中,删除首个待上链内容之后的待上链内容,将所述首个待上链内容替换成首个待上链内容概要信息,并将失效标记附加到所述首个待上链内容概要信息;

11、上链单元,用于将带失效标记的所述首个待上链内容概要信息打包到目标区块,并将所述目标区块记录到区块链。

12、可选地,所述确定单元用于:

13、确定每个候选任务的任务有效期限;

14、针对每个所述候选任务,如果当前时间超过所述候选任务的所述任务有效期限、且所述待上链内容序列中的各个待上链内容的所述任务进程标识与所述结束进程标识都不相同,则将所述候选任务确定为所述无效任务。

15、可选地,所述候选任务的结束进程标识包括用于指示对所述候选任务进行回滚的第一结束子标识;

16、所述确定单元用于:

17、确定每个候选任务的任务有效期限;

18、针对每个所述候选任务,如果当前时间未超过所述候选任务的所述任务有效期限、且所述待上链内容序列中的最后一个待上链内容的所述任务进程标识与所述第一结束子标识相同,则将所述候选任务确定为所述无效任务。

19、可选地,所述候选任务的结束进程标识包括用于指示对所述候选任务进行上链的第二结束子标识;

20、所述区块上链装置还包括识别单元,所述识别单元用于:

21、确定每个候选任务的任务有效期限;

22、针对每个所述候选任务,如果当前时间未超过所述候选任务的所述任务有效期限、且所述待上链内容序列中的最后一个待上链内容的所述任务进程标识与所述第二结束子标识相同,则将所述候选任务确定为待上链任务,以便将所述待上链任务对应的待上链内容序列中的各个待上链内容打包到所述目标区块,使所述待上链任务对应的待上链内容序列中的各个待上链内容记录到区块链。

23、可选地,所述处理单元用于:

24、将所述首个待上链内容的内容结果更新为空,得到更新待上链内容,并基于所述更新待上链内容,确定所述首个待上链内容概要信息;

25、将所述首个待上链内容替换成所述首个待上链内容概要信息;

26、将所述失效标记作为所述首个待上链内容的的状态标识附加到所述首个待上链内容概要信息中。

27、可选地,所述区块上链方法由区块链网络中的多个区块链节点中的目标区块链节点执行;

28、所述上链单元用于:

29、对所述待上链内容集、相对于所述当前上链轮次的上一个上链轮次的上链区块、和所述目标区块进行内容对比,得到增量待上链内容;

30、确定所述待上链内容集的内容总摘要;

31、将所述增量待上链内容、所述内容总摘要、和所述目标区块一并广播到所述区块链网络的其他区块链节点,以使其他区块链节点基于所述增量待上链内容、所述内容总摘要对所述目标区块进行共识验证,并在所述共识验证通过之后,将所述目标区块记录到所述区块链上。

32、可选地,所述确定所述待上链内容集的内容总摘要,包括:

33、基于所述待上链内容集中每个所述待上链内容的内容摘要,确定目标树的最下面一层的各个树节点的摘要值;

34、对所述最下面一层的相邻两个摘要值进行摘要运算,生成一个更上一层的摘要值,该摘要值与相邻两个所述摘要值连接;再对所述更上一层的相邻两个摘要值进行摘要运算,直到生成所述目标树的根节点对应的摘要值为止,将所述根节点对应的摘要值确定为所述待上链内容集的所述内容总摘要。

35、可选地,所述其他区块链节点基于所述增量待上链内容、所述内容总摘要对所述目标区块进行共识验证,包括:

36、基于所述增量待上链内容,对维护的待上链内容集进行更新,得到更新后待上链内容集;

37、确定所述更新后待上链内容集的更新后内容总摘要;

38、如果所述更新后内容总摘要与所述内容总摘要一致,则对所述目标区块的区块高度、区块摘要、和区块签名进行第一验证,得到验证结果;

39、如果各个所述其他区块链节点的所述验证结果符合预设条件,则确定所述目标区块共识验证通过。

40、可选地,所述候选任务对应的所述待上链内容序列通过以下方式生成:

41、针对接收到每个待上链内容,获取所述待上链内容的任务索引、和内容序号;

42、将多个所述任务索引相同的所述待上链内容划分到同一分组,得到每个所述候选任务对应的待上链内容分组;

43、在所述待上链内容分组内,根据所述待上链内容分组内的各个待上链内容的所述内容序号,对各个所述待上链内容进行排序,得到所述候选任务对应的所述待上链内容序列。

44、可选地,所述区块上链装置还包括对象确定单元,所述对象确定单元用于:

45、确定所述候选任务关联的任务操作对象;

46、对所述任务操作对象进行状态锁定,以允许所述候选任务对应的所述待上链内容序列的各个待上链内容对所述任务操作对象进行状态读写操作,并不允许所述候选任务以外的待上链内容对所述任务操作对象进行状态读写操作。

47、可选地,所述待上链内容集中还包括与各个候选任务无关的候选待上链内容;

48、所述区块上链装置还包括内容上链单元,所述内容上链单元用于:

49、从所述待上链内容集中取出第一数目个候选待上链内容,并将所述第一数目个候选待上链内容打包到所述目标区块的区块体中,其中,所述第一数目小于预设阈值;

50、所述上链单元用于:

51、对所述待上链任务对应的各个待上链内容的内容总数目加上1,得到第二数目;

52、如果所述第一数目与所述第二数目的和不大于所述预设阈值,则将所述待上链任务对应的待上链内容序列中的各个待上链内容、和带失效标记的所述首个待上链内容概要信息一并打包到所述目标区块的区块体中。

53、可选地,所述区块上链装置还包括打包单元,所述打包单元用于:

54、如果所述第一数目与所述第二数目的和大于所述预设阈值,则确定所述预设阈值与所述第二数目之间的差值,得到第三数目,其中,所述第三数目小于所述第一数目;

55、针对所述第一数目个候选待上链内容中的每个候选待上链内容,基于所述候选待上链内容的内容时间戳和内容上链开销,确定所述候选待上链内容的内容分数;

56、基于所述内容分数,对所述第一数目个候选待上链内容进行排序,得到内容序列;

57、从所述目标区块中移除所述内容序列中除了前第三数目个候选待上链内容以外的其他候选待上链内容;

58、将所述待上链任务对应的待上链内容序列中的各个待上链内容、和带失效标记的所述首个待上链内容概要信息一并打包到所述目标区块的区块体中。

59、可选地,所述基于所述候选待上链内容的内容时间戳和内容上链开销,确定所述候选待上链内容的内容分数,包括:

60、基于所述候选待上链内容的所述内容时间戳,确定第一分数;

61、基于所述候选待上链内容的所述内容上链开销,确定第二分数;

62、基于所述第一分数和所述第二分数,确定所述候选待上链内容的所述内容分数。

63、可选地,所述待上链内容通过以下方式存储到所述待上链内容集中:

64、针对每个提交到区块链网络的待上链内容,确定所述待上链内容关联的对象签名、和所述待上链内容关联的任务操作对象;

65、确定所述任务操作对象的当前状态;

66、如果确定所述对象签名、和所述任务操作对象的所述当前状态符合预设条件,则确定所述待上链内容关联的任务索引,并按照所述任务索引,将所述待上链内容存储到所述待上链内容集中具有所述任务索引的候选任务对应的待上链内容序列。

67、可选地,所述确定所述对象签名、和所述任务操作对象的所述当前状态符合预设条件,包括:

68、获取提交所述待上链内容的对象的对象公钥,并基于所述对象公钥对所述对象签名进行解签,得到解签结果;

69、如果所述解签结果为解签成功、且所述任务操作对象的所述当前状态为未锁定,则确定所述对象签名、和所述任务操作对象的所述当前状态符合预设条件。

70、根据本公开的一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的区块上链方法。

71、根据本公开的一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的区块上链方法。

72、根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的区块上链方法。

73、本公开实施例中,并不是将待上链内容集中各个候选任务对应的待上链内容一一进行上链处理,而是针对每个候选任务,将该候选任务的各个待上链内容的任务进程标识、与该候选任务的结束进程标识进行比较,从而判定该候选任务是否失效,对于失效的候选任务中的各个待上链内容,就可以仅保留首个待上链内容的概要信息,并添加失效标记,删除其它待上链内容就可以了。本公开实施例对于失效的候选任务,只需上链少部分必要的内容,不用像相关技术那样,即使某个任务已失效,也将其所有待上链内容一一进行上链。因此,本公开实施例大大减少了区块链资源的占用,并提高了内容上链准确性。

74、本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。