数据转移处理方法、装置、设备及存储介质与流程

未命名 09-13 阅读:264 评论:0


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.图1是根据一示例性实施例示出的一种数据转移处理方法的实施环境示意图。
27.图2是根据一示例性实施例示出的数据转移处理方法的流程图一。
28.图3是根据一示例性实施例示出的一种客户端向目标背书节点发送当前数据转移请求的流程图。
29.图4是根据一示例性实施例示出的一种数据转移操作所涉及的相关数据的示意图。
30.图5是根据一示例性实施例示出的数据转移处理方法的流程图二。
31.图6是根据一示例性实施例示出的一种可选的结构示意图。
32.图7是根据一示例性实施例示出的区块结构(block structure)的一个可选的示意图。
33.图8是根据一示例性实施例示出的数据转移处理方法的流程图三。
34.图9是根据一示例性实施例示出的数据转移处理方法的流程图四。
35.图10是根据一示例性实施例示出的一种数据转移处理装置框图。
36.图11根据一示例性实施例示出的一种数据转移处理装置框图。
37.图12是根据一示例性实施例提供的一种数据转移处理的服务器的硬件结构框图。
具体实施方式
38.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
39.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
40.首先,对本技术实施例所涉及的技术术语进行介绍:
41.工作量证明机制(proofof work,pow):是区块链的一种共识机制。指的是在区块链系统中,根据每个节点在运算的过程中所做出的贡献来确定权限的一种算法。在基于工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。
42.权益证明机制(proof of stake,pos):权益证明机制,要求证明人提供一定数量加密虚拟资源的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“虚拟资源”交易,交易会按照预先设定的比例把一些虚拟资源发送给矿工本身。权益证明机制根据每个节点拥有虚拟资源的比例和时间,依据算法等比例地降低节点的虚拟资源获取难度,从而加快了寻找随机数的速度。
43.智能合约(smart contract):是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。
44.图1是根据一示例性实施例示出的一种数据转移处理方法的实施环境示意图。如图1所示,该实施环境至少可以包括客户端01、背书节点02、共识节点03等,该客户端01、背书节02、共识节点03之间可以通过有线或无线通信方式进行直接或间接地连接,本技术实施例在此不做限制。
45.具体地,该客户端01可以用于向目标背书节点发送当前数据转移请求。可选地,该客户端01可以包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本技术实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
46.具体地,该背书节点02可以用于响应于当前数据转移请求,执行当前数据转移请求对应的智能合约,得到包括当前数据转移读写集的当前合约执行结果,以及用于发送上述当前合约执行结果至共识节点。
47.具体地,该共识节点03可以用于对当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;以及用于创建当前新区块,将第一当前数据转移操作集打包至当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点。
48.可选地,该背书节点02、共识节点03可以是独立的物理设备、物理服务器。也可以是多个物理服务器构成的服务器集群或者分布式系统。还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
49.需要说明的是,图1仅仅是一种示例。在其他场景中,还可以包括其他实施环境。
50.图2是根据一示例性实施例示出的数据转移处理方法的流程图一。该方法可以用于图1中的实施环境中。本说明书提供了如实施例或流程图上述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,该方法可以包括:
51.s101.客户端向目标背书节点发送当前数据转移请求。
52.可选地,区块链网络中存在背书节点,该背书节点可以指的是在区块链网络选中承担背书任务的节点。其中,“背书”可以理解为承担背书任务的节点为区块链网络的数据转移进行数据转移验证,对验证通过的数据转移操作声明数据转移合法的过程和机制。
53.示例性地,本技术实施例中的数据转移可以为交易,数据转移请求可以为交易请求。
54.可选地,本技术实施例可以通过多种方式向目标背书节点发送当前数据转移请求,在此不做具体限定。
55.在一种实施方式中,在区块链网络中的背书节点为一个的情况下,客户端可以通过有线或无线传输的方式,直接向该背书节点发送该当前数据转移请求。
56.在一个可选的实施例中,图3是根据一示例性实施例示出的一种客户端向目标背书节点发送当前数据转移请求的流程图,如图3所示,上述当前区块链网络中包括多个背书节点,在上述步骤s101中,上述客户端向目标背书节点发送当前数据转移请求,可以包括:
57.s1011.客户端向当前区块链网络发送当前数据转移请求,上述当前数据转移请求中携带智能合约的背书策略和当前数据转移请求对应的数据转移哈希值。
58.s1013.当前区块链网络响应于当前数据转移请求,基于背书策略和数据转移哈希值,从上述多个背书节点中确定出目标背书节点。
59.s1015.当前区块链网络将当前数据转移请求,发送至上述目标背书节点。
60.可选地,在上述步骤s1011中,在当前区块链网络中包括多个背书节点的情况下,客户端可以首先向当前区块链网络发送当前数据转移请求。图4是根据一示例性实施例示出的一种数据转移操作所涉及的相关数据的示意图,如图4所示,该当前数据转移请求可以携带智能合约的背书策略、当前数据转移请求对应的数据转移哈希值、数据转移标识(identity document,id)、需要被调用的智能合约、需要被调用的方法、数据转移相关参数列表(例如,键、键值)、发起数据转移请求的发起者、发起数据转移请求的发起者的签名等。
61.其中,数据转移哈希值指的是区块链网络的数据转移中标记数据转移所需要的字符段,其可以采用一串字母、数字或其他符号来表达。例如,需要从a地址转移若干个资源至b地址,则可以使用a地址进行私钥签名,将这个签名与数据转移合并,再进行哈希值运算,得到该数据转移哈希值。
62.可选地,在区块链网络的全局配置或者在智能合约的函数调用配置中具有“背书策略”的设置,即智能合约的背书策略可以提供一个区块链全局的默认配置,也可以在每一个智能合约中单独设置该智能合约的背书策略。“背书策略”说明了一个数据转移请求广播到背书节点后,需要多少个背书节点执行并对执行结果签名背书才算是合法的。
63.示例性地,智能合约的背书策略可以由合约的管理员(例如,合约安装者)设置,背书策略包括以下三种模式:任意背书策略、全部背书策略、大部分背书策略等三种策略,背书策略可以随时更改。背书策略更改也是通过数据转移来实现,该数据转移被正确打包后新策略即可生效,之后的数据转移将按新策略验证执行。任意背书策略指的是从多个背书节点中选取任意一个背书节点执行相应的智能合约,全部背书策略指的是多个背书节点均执行对应的智能合约,大部分背书策略指的是从多个背书节点中选取一半以上的背书节点执行对应的智能合约。
64.可选地,在上述步骤s1013中,当前区块链网络在接收到该数据转移请求的时候,
可以基于背书策略和数据转移哈希值,从多个背书节点中确定出上述目标背书节点。
65.假设背书策略为任意背书策略,则当前区块链网络可以根据该数据转移哈希值,从多个背书节点中确定出与该数据转移哈希值对应的预设数量个背书节点,并将与该数据转移哈希值对应的预设数量个背书节点中的任意一个背书节点,作为目标背书节点。
66.假设背书策略为全部背书策略,则当前区块链网络可以根据该数据转移哈希值,从多个背书节点中确定出与该数据转移哈希值对应的预设数量个背书节点,并将与该数据转移哈希值对应的预设数量个背书节点,全部作为目标背书节点。
67.假设背书策略为大部分背书策略,则当前区块链网络可以根据该数据转移哈希值,从多个背书节点中确定出与该数据转移哈希值对应的预设数量个背书节点,并将与该数据转移哈希值对应的预设数量个背书节点中的大部分节点,作为目标背书节点。
68.可选地,在上述步骤s1015中,在确定出目标背书节点之后,当前区块链网络可以将该当前数据转移请求发送至该目标背书节点,从而实现将客户端发送的当前数据转移请求,转发至该目标背书节点。
69.本技术实施例中,通过背书策略和上述当前数据转移请求对应的数据转移哈希值确定出执行智能合约的目标背书节点,能够提高目标背书节点的确定精度,从而提高数据转移的精度。
70.s103.上述目标背书节点响应于当前数据转移请求,执行当前数据转移请求对应的智能合约,得到当前合约执行结果;上述当前合约执行结果包括当前数据转移读写集。
71.可选地,由于当前数据转移请求中携带被调用的智能合约,目标背书节点在接收到该当前数据转移请求时,可以执行该当前数据转移请求所携带的智能合约。其中,背书节点执行智能合约可以理解为:背书节点将自身的公钥和其他一些业务相关的信息注册到智能合约中,背书节点将信息注册到智能合约的过程即可理解为背书节点执行该智能合约。示例性地,上述其他一些业务相关的信息可以包括但不限于:证书信息、端口信息、国际互连协议(internet protocol,ip)等。由于背书节点的数量可能为多个,多个背书节点注册到智能合约中,可以在智能合约中形成背书节点列表,该背书节点列表中的背书签名是有效的,若某个背书节点未在智能合约中注册,即不存在于该背书节点列表中,则该背书节点的背书签名是无效的。
72.在一种实施方式中,背书节点的注册方式可以采用按组织的注册方式,通过背书节点合约,可以查询到一个组织对应的背书节点列表。例如,有n家企业联合创建了区块链网络,n为大于或等于1的正整数,该n家企业即为n个组织,可以代表区块链网络中的n个节点,每个组织还可以注册对应的背书节点,这样整个区块链网络中包括2n个节点(即n个共识节点和n个背书节点),每个组织分别对应一个共识节点和一个背书节点。由于每个组织都会有相应的背书节点,通过该按组织的注册方式,可以便捷查询得到某个组织对应的背书节点列表。
73.在另一种实施方式中,背书节点的注册方式可以采用按合约的注册方式,通过背书节点合约,可以查询到一个合约对应的背书节点列表。例如,有n个智能合约,每个智能合约中均可以注册至少一个背书节点,形成每个智能合约对应的背书节点列表,通过按合约的注册方式,可以便捷查询得到某个智能合约对应的背书节点列表。
74.可选地,继续如图4所示,该当前合约执行结果可以包括但不限于:当前数据转移
读写集、数据转移事件日志列表、合约返回值等。
75.示例性地,该当前数据转移读写集可以表征目标背书节点进行读写操作的数据,该当前数据转移读写集可以包括读集和写集。读集可以进一步包括执行的智能合约名称、键、数据转移版本等,读集中的键可以为执行数据转移时读取的变量的键值对。该写集可以进一步包括执行的合约名称、键、键值等,写集中的键可以为执行数据转移时写入的变量的键值对。其中,读写集中所包含的键意味着对其所对应数据的排他性使用,例如在资源转移场景中,读写集中包含发起方账户地址及接受方账户地址。
76.示例性地,该数据转移事件日志列表可以进一步包括数据转移主题、数据转移日志等。
77.s105.上述目标背书节点发送上述当前合约执行结果至共识节点。
78.可选地,在目标背书节点对智能合约进行执行,得到当前合约执行结果之后,可以通过有线或无线传输的方式,将当前合约执行结果广播至共识节点。
79.具体地,共识节点是区块链网络中存在的节点,其可以通过共识机制确定。其中,共识机制指的是通过特殊节点的投票,在很短的时间内完成对数据转移操作的验证和确认;对一笔数据转移操作,如果利益不相干的若干个节点能够达成共识,则可以认为整个区块链网络对此也能够达成共识。
80.可选地,本技术实施例中可以通过多种方式发送上述当前合约执行结果至共识节点,在此不做具体限定。
81.在一个可选的实施例中,图5是根据一示例性实施例示出的数据转移处理方法的流程图二,如图5所示,在上述步骤s105中,上述目标背书节点发送上述当前合约执行结果至共识节点,可以包括:
82.s1051.上述目标背书节点对上述当前合约执行结果和上述当前数据转移请求进行签名,得到携带背书签名的当前数据转移信息。
83.s1053.上述目标背书节点发送上述当前数据转移信息至上述共识节点。
84.可选地,在上述步骤s1051中,目标背书节点可以将当前合约执行结果附加到当前数据转移请求的后面,并对当前合约执行结果和当前数据转移请求进行签名,得到携带背书签名的当前数据转移信息。
85.可选地,在上述步骤s1053中,目标背书节点的数量可能为多个,可以从多个目标背书节点中选取一个目标背书节点作为主节点,主节点在收集到满足背书策略的背书签名后,就可以组装成一个如图4所示的待打包的完整的当前数据转移操作,并将该完整的当前数据转移操作广播至共识节点。如图4所示,在背书签名为多个的情况下,可以形成背书签名列表。示例性地,在数据转移为交易的情况下,该完整的当前数据转移操作可以认为是一个当前的完整交易。
86.本技术实施例中,通过将当前合约执行结果附加到当前数据转移请求的后面,并对当前合约执行结果和当前数据转移请求进行签名的方式,能够提高数据转移的安全性和可靠性。
87.s107.上述共识节点对上述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;上述当前检测结果包括第一当前数据转移操作集,上述第一当前数据转移操作集为非冲突数据转移操作所组成的集合。
88.在一个可选的实施例中,上述方法还可以包括:在上述共识节点接收到携带背书签名的当前数据转移信息之后,共识节点可以首先验证上述背书签名满足智能合约对应的背书策略。
89.在一种实施方式中,在背书签名不满足背书策略的情况下,表明背书签名不合法,则共识节点不执行数据转移冲突检测操作。
90.在另一种实施方式中,在背书签名满足背书策略的情况下,共识节点将当前数据转移操作放入数据转移池。在提案区块阶段,共识节点从数据转移池中获取一批完整的当前数据转移操作,并校验这一批当前数据转移操作的读写集是否存在冲突数据转移操作。其中,冲突指的是:客户端的多个账户可能并发的提交多个对同一数据集进行修改的数据转移请求,这些应用处理数据发送到区块链网络中进行共识,然后存储到账本时,使得一个区块内存在冲突的数据转移操作。
91.如果存在冲突数据转移操作,则只保留冲突数据转移操作中的一笔数据转移操作(即非冲突数据转移操作),并将其他数据转移操作标记为失效数据转移操作(即冲突数据转移操作)。具体地,可以将非冲突数据转移操作所组成的集合作为第一当前数据转移操作集,将与第一当前数据转移操作集中的数据转移操作相冲突的冲突数据转移操作所组成的集合,作为第二当前数据转移操作集。
92.示例性地,该第一当前数据转移操作集和第二当前数据转移操作集的形式可以为数据转移操作列表。以数据转移为交易为例,则该数据转移操作列表可以为交易列表。
93.例如,当前数据转移读写集进行数据转移冲突检测时发现对数据集1进行修改的数据转移操作的分别为数据转移操作1、数据转移操作2和数据转移操作3,对数据集2进行修改的数据转移操作的分别为数据转移操作4和数据转移操作5,则对于数据集1数据转移操作1、数据转移操作2和数据转移操作3相冲突,可以保留数据转移操作1、数据转移操作2和数据转移操作3中的其中一笔数据转移操作,例如保留数据转移操作1,将数据转移操作2和数据转移操作3标记为与数据转移操作1冲突的冲突数据转移操作。对于数据集2,数据转移操作4和数据转移操作5相冲突,可以保留数据转移操作4和数据转移操作5中的其中一笔数据转移操作,例如保留数据转移操作4,将数据转移操作5标记为与数据转移操作4冲突的冲突数据转移操作。最后,可以将数据转移操作1和数据转移操作4所组成的集合作为第一当前数据转移操作集,将数据转移操作2、数据转移操作3和数据转移操作5所组成的集合作为第二当前数据转移操作集。
94.s109.上述共识节点创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;上述其他节点包括上述目标背书节点。
95.可选地,在上述s109中,共识节点可以创建新区块,将第一当前数据转移操作集打包至当前新区块中进行提案,并使用当前新区块中的共识流程对上述当前新区块进行共识处理。在共识达成之后,共识节点传递打包后的当前新区块至当前区块链网络中的其他节点,以在当前区块链网络中广播该新区块。
96.在一个可选的实施方式中,在当前数据转移读写集不存在读写冲突的情况下,共识节点可以直接在区块链网络中广播该当前新区块。
97.继续如图5所示,在另一个可选的实施方式中,在当前数据转移读写集存在读写冲
突的情况下,在上述s109中,上述传递打包后的当前新区块至当前区块链网络中的其他节点,可以包括:
98.s1091.在确定上述当前检测结果包括第二当前数据转移操作集的情况下,共识节点将第二数据转移操作集附加至打包后的当前新区块,得到携带第二数据转移操作集的当前新区块;上述第二当前数据转移操作集为冲突数据转移操作所组成的集合,上述冲突数据转移操作为与第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作。
99.s1093.共识节点传递携带第二数据转移操作集的当前新区块至其他节点。
100.可选地,在上述步骤s1091-s1093中,在当前数据转移读写集存在读写冲突的情况下,即在上述当前检测结果包括第二当前数据转移操作集的情况下,共识节点可以在当前新区块上附加冲突的第二数据转移操作集,得到携带第二数据转移操作集的当前新区块,并在整个区块链网络中广播该携带第二数据转移操作集的当前新区块。
101.本技术实施例中,由于是打包非冲突数据转移操作所组成的第一当前数据转移操作集至当前新区块中,而冲突数据转移操作不打包至当前新区块中,使得冲突数据转移操作不存在于当前新区块的数据结构中,不影响当前新区块的哈希计算,由于当前新区块中不存在失效的数据转移操作,因此不存在标记失效数据转移操作的问题,避免失效数据转移操作磁盘的占用,从而提高了磁盘的利用率和区块链的性能。
102.在一个可选实施例中,上述方法还可以包括:
103.上述共识节点基于上述打包后的当前新区块,更新上述共识节点的本地数据转移记录。
104.可选地,在共识节点向区块链网络中广播该打包后的当前新区块的同时,共识节点还可以将该打包后的当前新区块纳入自身的本地数据转移记录中,以更新自身的本地数据转移记录,从而实现对共识节点的本地数据转移记录的更新。在数据转移为交易的情况下,该数据转移记录可以为账本。由于打包后的当前新区块中包括非冲突数据转移操作,但不包括冲突数据转移操作,使得更新后的本地数据转移记录中也不包括冲突数据转移操作,避免失效数据转移操作磁盘的占用,提高了磁盘的利用率和区块链的性能。
105.s1011.上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录。
106.可选地,在其他节点接收到打包后的当前新区块之后,可以进行一系列的验证,比如验证区块数据格式是否正确、区块头的哈希值是否小于目标难度、区块时间戳是否在允许范围之内、区块中的数据转移事务是否有效等,在全部校验通过时,其他节点可以将新打包后的当前新区块数据纳入到自身的本地数据转移记录中,实现对本地数据转移记录的更新。
107.示例性地,该其他节点可以为目标背书节点,目标背书节点在接收到打包后的当前新区块后,同样会进行上述一系列验证,在验证通过时,目标背书节点将打包后的当前新区块数据纳入到自身的本地数据转移记录中,实现对本地数据转移记录的更新。
108.继续如图5所示,在一个可选的实施例中,上述其他节点为目标背书节点,在共识节点传递携带第二数据转移操作集的当前新区块至其他节点之后,上述方法还包括:
109.s201.目标背书节点从携带第二数据转移操作集的当前新区块中,提取第二数据转移操作集。
110.s203.目标背书节点将第二数据转移操作集对应的数据转移请求重新作为当前数据转移请求。
111.s205.目标背书节点重复上述响应于当前数据转移请求,执行当前数据转移请求对应的智能合约,得到当前合约执行结果,至上述发送当前合约执行结果至共识节点的操作。
112.s207.上述共识节点重复上述对当前数据转移读写集进行数据转移冲突检测,得到当前检测结果,至上述传递携带第二数据转移操作集的当前新区块至所述其他节点的操作;上述其他节点重复上述基于打包后的当前新区块,更新本地数据转移记录的操作,当上述当前检测结果不包括第二当前数据转移操作集时停止。
113.可选地,在上述步骤s201中,在当前数据转移读写集中存在冲突数据转移操作,即在上述当前检测结果包括第二当前数据转移操作集的情况下,背书节点除了基于打包后的当前新区块更新本地数据转移记录之外,还可以从当前新区块中提取数据转移冲突的第二数据转移操作集。
114.可选地,在上述步骤s203中,由于第二数据转操作集是由共识节点对当前数据转移读写集进行数据转移冲突检测所得到的,而当前数据转移读写集又是由背书节点响应于某一数据转移请求,执行智能合约所得到的,可见,第二数据转操作集与某一数据转移请求相对应,因此可以提取第二数据转操作集对应的数据转移请求,并将该数据转移请求重新作为上述当前数据转移请求。
115.可选地,在上述步骤s205中,对于目标背书节点而言,目标背书节点重新执行响应于当前数据转移请求,执行当前数据转移请求对应的智能合约,得到包括当前数据转移读写集的当前合约执行结果的操作;并重新执行发送当前合约执行结果至共识节点的操作。对于共识节点而言,共识节点重新执行对上述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果的操作;并重新执行创建当前新区块,将上述第一当前数据转移操作集打包至当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点的操作。对于其他节点而言,其他节点重新执行基于打包后的当前新区块,更新其他节点的本地数据转移记录的操作。如此循环往复,直至当前检测结果不包括第二当前数据转移操作集时停止,即当前数据转移读写集不存在冲突数据转移操作时停止。
116.例如,对当前数据转移读写集进行数据转移冲突检测时发现,对数据集1进行修改的数据转移操作的分别为数据转移操作1、数据转移操作2和数据转移操作3,数据转移操作1、数据转移操作2和数据转移操作3相冲突,可以保留数据转移操作1、数据转移操作2和数据转移操作3中的其中一笔数据转移操作,例如保留数据转移操作1,将数据转移操作2和数据转移操作3标记为与数据转移操作1冲突的冲突数据转移操作,并将数据转移操作1作为非冲突的第一当前数据转移操作集,将数据转移操作2和数据转移操作3作为冲突的第二当前数据转移操作集。
117.共识节点重新创建当前新区块(比如当前新区块为第一新区块),将数据转移操作1打包至当前新区块中,并传递携带数据转移操作2和数据转移操作3的当前新区块至目标背书节点,目标背书节点验证第一新区块后基于数据转移操作1更新账本,然后重新执行数据转移操作2和数据转移操作3的智能合约,得到包括当前数据转移读写集的当前合约执行
结果,并重新将当前合约执行结果发送至共识节点,共识节点重新对当前数据转移读写集进行数据转移冲突检测,发现数据转移操作2和数据转移操作3相冲突,则可以将数据转移操作2放入非冲突的第一当前数据转移操作集中,将数据转移操作3放入冲突的第二当前数据转移操作集中。
118.共识节点重新创建当前新区块(比如当前新区块为第二新区块),将数据转移操作2打包至当前新区块中,并传递携带数据转移操作3的当前新区块至目标背书节点,目标背书节点验证第二新区块后基于数据转移操作2更新账本,然后重新执行数据转移操作3的智能合约,得到包括当前数据转移读写集的当前合约执行结果,并重新将当前合约执行结果发送至共识节点。
119.共识节点重新对当前数据转移读写集进行数据转移冲突检测,发现此时不存在冲突的数据转移操作了,则重新创建当前新区块(比如当前新区块为第三新区块),并将数据转移操作3打包到当前新区块中,不再附加冲突交易,广播第三新区块到网络,包括当前背书节点。目标背书节点验证第三新区块后基于数据转移操作3更新账本,无其他冲突交易,停止上述重复的过程。
120.本技术实施例中,将智能合约的执行交由背书节点异步执行,合约执行不影响区块链产块,可以支持复杂耗时的智能合约,能够将区块链的性能提升到很高的水平;且在共识排序时进行读写冲突检测,将冲突的数据转移集广播给背书节点,避免了由于数据转移标记失败而导致的客户端不断重新发起同一个数据转移请求的问题,客户端只需提交一次数据转移请求即可,降低了客户端与节点之间的信息传输频率,从而降低了客户端系统资源的消耗以及网络传输资源的消耗;此外,由于冲突数据转移操作不存在于区块的数据结构中,即区块中不存在失效交易,避免失效数据转移操作磁盘的占用,因此磁盘的利用率更高,区块链网络性能进一步提升。
121.继续如图5所示,在一个可选的实施例中,上述其他节点为上述目标背书节点,上述方法还包括:
122.s301.目标背书节点传递打包后的当前新区块至客户端。
123.s303.客户端基于打包后的当前新区块,更新上述客户端的本地数据转移记录。
124.可选地,目标背书节点在接收到共识节点发送的打包后的当前新区块之后,还可以将打包后的当前新区块传递至客户端,客户端接收该打包后的当前新区块,并对自身的本地数据转移记录进行更新,一方面,精准实现了客户客户端的本地数据转移记录的更新,另一方面,由于背书节点并未向客户端传递冲突的数据转移操作,因此客户端不需要重新发起同一个数据转移请求的问题,只需提交一次数据转移请求即可,降低了客户端与节点之间的信息传输频率,从而降低了客户端系统资源的消耗以及网络传输资源的消耗。
125.需要说明的是,上述数据转移处理方法不仅可以适用于联盟链的场景,还可以适用于公有链的场景。其中,联盟链指的是针对某个特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。公有链指的是任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。
126.与联盟链中背书节点可保证在线,可相互协作的模式不同,公有链中的背书节点无法确保总是在线,而且背书节点之间是竞争关系。在一种实施方式中,可以通过在背书节点注册合约中增加保证金的方式来保证背书节点的高在线率和不作恶,一旦发现作恶的背
书节点将罚没保证金,从而提高区块链网络的安全性。
127.在另一种实施方式中,在公有链中,由于存在可能作恶的节点,背书策略可以选择大多数节点背书的策略。背书节点相互竞争产生区块,在背书签名时可采用pow或者pos的模式选出有效的背书节点签名。因此,在附加背书节点签名到数据转移操作的同时,还可以附加一个背书节点共识的结果信息。例如,在上述步骤s1051中,可以在得到的携带背书签名的当前数据转移信息上附加一个背书节点共识的结果信息,共识节点可以在对背书签名进行验证的时候,还可以验证该背书节点共识的结果信息,在验证通过的情况下,表明背书节点非作恶节点,则共识节点可以执行后续的冲突检测操作,在验证不通过的情况下,表明背书节点为作恶节点,则共识节点不进行后续的冲突检测操作。
128.在一个可选的实施例中,本技术实施例还提供一种数据转移处理系统,该系统可以包括:客户端、目标背书节点、共识节点和其他节点;
129.所述客户端,用于向目标背书节点发送当前数据转移请求。
130.所述目标背书节点,用于响应于所述当前数据转移请求,执行所述当前数据转移请求对应的智能合约,得到当前合约执行结果;所述当前合约执行结果包括当前数据转移读写集;以及用于发送所述当前合约执行结果至共识节点。
131.所述共识节点,用于对所述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;所述当前检测结果包括第一当前数据转移操作集,所述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;以及用于创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;所述其他节点包括所述目标背书节点。
132.所述其他节点,用于基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录。
133.参见图6,图6是根据一示例性实施例示出的一种可选的结构示意图,多个节点之间形成组成的点对点(p2p,peer to peer)网络,p2p协议是一个运行在传输控制协议(tcp,transmission control protocol)协议之上的应用层协议。在区块链系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
134.参见图6示出的区块链系统中各节点的功能,涉及的功能包括:
135.1)路由,节点具有的基本功能,用于支持节点之间的通信。
136.节点除具有路由功能外,还可以具有以下功能:
137.2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
138.3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
139.参见图7,图7是根据一示例性实施例示出的区块结构(block structure)的一个可选的示意图,每个区块中包括本区块存储交易记录的数据转移哈希值(本区块的数据转移哈希值)、以及前一区块的数据转移哈希值,各区块通过数据转移哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(blockchain),本质上
是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
140.图8是根据一示例性实施例示出的数据转移处理方法的流程图三。以共识节点为执行主体,介绍上述数据转移处理方法,如图8所示,该方法可以包括:
141.s401.接收目标背书节点发送的当前合约执行结果;上述当前合约执行结果由上述目标背书节点响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约得到,上述当前合约执行结果包括当前数据转移读写集。
142.s403.对上述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;上述当前检测结果包括第一当前数据转移操作集,上述第一当前数据转移操作集为非冲突数据转移操作所组成的集合。
143.s405.创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中。
144.s407.传递打包后的当前新区块至当前区块链网络中的其他节点,以使上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录;上述其他节点包括上述目标背书节点。
145.在一个可选的实施例中,上述传递打包后的当前新区块至当前区块链网络中的其他节点,以使上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录,包括:
146.在确定上述当前检测结果包括第二当前数据转移操作集的情况下,将上述第二数据转移操作集附加至上述打包后的当前新区块,得到携带第二数据转移操作集的当前新区块;上述第二当前数据转移操作集为冲突数据转移操作所组成的集合,上述冲突数据转移操作为与上述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作。
147.传递上述携带第二数据转移操作集的当前新区块至上述其他节点,以使上述其他节点基于上述携带第二数据转移操作集的当前新区块,更新上述其他节点的本地数据转移记录。
148.在一个可选的实施例中,上述其他节点为上述目标背书节点,在上述传递上述携带第二数据转移操作集的当前新区块至上述其他节点,以使上述其他节点基于上述携带第二数据转移操作集的当前新区块,更新上述其他节点的本地数据转移记录之后,上述方法还包括:
149.重复上述接收目标背书节点发送的当前合约执行结果,至上述传递上述携带第二数据转移操作集的当前新区块至上述其他节点,以使上述其他节点基于上述携带第二数据转移操作集的当前新区块,更新上述其他节点的本地数据转移记录的操作,当上述当前检测结果不包括上述第二当前数据转移操作集时停止;
150.其中,重复过程中的当前合约执行结果为上述目标背书节点将上述第二数据转移操作集对应的数据转移请求重新作为上述当前数据转移请求,并重复上述响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约得到,上述第二数据转移操作集为上述目标背书节点从上述携带第二数据转移操作集的当前新区块中提取得到。
151.在一个可选的实施例中,上述接收目标背书节点发送的当前合约执行结果,包括:
152.接收上述目标背书节点发送的携带背书签名的当前数据转移信息;其中,上述当前数据转移信息由上述目标背书节点对上述当前合约执行结果和上述当前数据转移请求进行签名得到。
153.上述方法还包括:
154.在验证上述背书签名满足上述智能合约对应的背书策略的情况下,执行上述对上述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果的操作。
155.图9是根据一示例性实施例示出的数据转移处理方法的流程图四。以目标背书节点为执行主体,介绍上述数据转移处理方法,如图9所示,该方法可以包括:
156.s501.响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约,得到当前合约执行结果;上述当前合约执行结果包括当前数据转移读写集。
157.s503.发送上述当前合约执行结果至共识节点,以使上述共识节点对上述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;上述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;以及以使上述共识节点创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;上述其他节点包括上述目标背书节点;以及以使上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录。
158.在一个可选的实施例中,上述其他节点为本地目标节点,上述方法还包括:
159.接收上述共识节点传递的携带第二数据转移操作集的当前新区块。
160.其中,上述携带第二数据转移操作集的当前新区块,为在确定上述当前检测结果包括第二当前数据转移操作集的情况下,由上述共识节点将上述第二数据转移操作集附加至上述打包后的当前新区块得到,上述第二当前数据转移操作集为冲突数据转移操作所组成的集合,上述冲突数据转移操作为与上述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作。
161.在一个可选的实施例中,上述方法还包括:
162.从上述携带第二数据转移操作集的当前新区块中,提取上述第二数据转移操作集。
163.将上述第二数据转移操作集对应的数据转移请求重新作为上述当前数据转移请求。
164.重复上述响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约,得到当前合约执行结果,至上述发送上述当前合约执行结果至共识节点的操作;以使上述共识节点重复上述对上述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果的操作;以及以使上述共识节点重复创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点的操作;以及使上述其他节点重复上述基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录的操作,当上述当前检测结果不包括上述第二当前数据转移操作集时停止。
165.在一个可选的实施例中,上述发送上述当前合约执行结果至共识节点,包括:
166.对上述当前合约执行结果和上述当前数据转移请求进行签名,得到携带背书签名
的当前数据转移信息。
167.发送上述当前数据转移信息至上述共识节点。
168.在一个可选的实施例中,上述其他节点为本地目标节点,上述方法还包括:
169.传递上述打包后的当前新区块至上述客户端,以使上述客户端基于上述打包后的当前新区块,更新上述客户端的本地数据转移记录。
170.在一个可选的实施例中,上述当前区块链网络中包括多个本地节点,上述响应于客户端发送的当前数据转移请求,包括:
171.本地目标节点响应于上述当前区块链网络发送的当前数据转移请求。
172.其中,上述本地目标节点为上述当前区块链网络响应于上述客户端发送的上述当前数据转移请求,基于上述当前数据转移请求中携带的背书策略和上述当前数据转移请求对应的数据转移哈希值,从上述多个本地节点中确定得到。
173.图10是根据一示例性实施例示出的一种数据转移处理装置框图。如图10所示,该装置可以至少包括:
174.当前合约执行结果接收模块601,用于接收目标背书节点发送的当前合约执行结果;上述当前合约执行结果由上述目标背书节点响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约得到,上述当前合约执行结果包括当前数据转移读写集。
175.冲突检测模块603,用于对上述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;上述当前检测结果包括第一当前数据转移操作集,上述第一当前数据转移操作集为非冲突数据转移操作所组成的集合。
176.打包模块605,用于创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中。
177.传递模块607,用于传递打包后的当前新区块至当前区块链网络中的其他节点,以使上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录;上述其他节点包括上述目标背书节点。
178.可选地,上述传递模块607,包括:
179.附加单元,用于在确定上述当前检测结果包括第二当前数据转移操作集的情况下,将上述第二数据转移操作集附加至上述打包后的当前新区块,得到携带第二数据转移操作集的当前新区块;上述第二当前数据转移操作集为冲突数据转移操作所组成的集合,上述冲突数据转移操作为与上述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作;
180.第一区块传递单元,用于传递上述携带第二数据转移操作集的当前新区块至上述其他节点,以使上述其他节点基于上述携带第二数据转移操作集的当前新区块,更新上述其他节点的本地数据转移记录。
181.可选地,上述其他节点为上述目标背书节点,上述装置还包括:
182.第一重复模块,用于重复上述接收目标背书节点发送的当前合约执行结果,至上述传递上述携带第二数据转移操作集的当前新区块至上述其他节点,以使上述其他节点基于上述携带第二数据转移操作集的当前新区块,更新上述其他节点的本地数据转移记录的操作,当上述当前检测结果不包括上述第二当前数据转移操作集时停止;
183.其中,重复过程中的当前合约执行结果为上述目标背书节点将上述第二数据转移操作集对应的数据转移请求重新作为上述当前数据转移请求,并重复上述响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约得到,上述第二数据转移操作集为上述目标背书节点从上述携带第二数据转移操作集的当前新区块中提取得到。
184.可选地,上述当前合约执行结果接收模块,用于接收上述目标背书节点发送的携带背书签名的当前数据转移信息;其中,上述当前数据转移信息由上述目标背书节点对上述当前合约执行结果和上述当前数据转移请求进行签名得到;
185.上述装置还包括:
186.执行模块,用于在验证上述背书签名满足上述智能合约对应的背书策略的情况下,执行上述对上述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果的操作。
187.图11根据一示例性实施例示出的一种数据转移处理装置框图。如图11示,该装置可以至少包括:
188.当前数据转移请求响应模块701,用于响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约,得到当前合约执行结果;上述当前合约执行结果包括当前数据转移读写集。
189.共识节点发送模块703,用于发送上述当前合约执行结果至共识节点,以使上述共识节点对上述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;上述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;以及以使上述共识节点创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;上述其他节点包括上述目标背书节点;以及以使上述其他节点基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录。
190.可选地,上述其他节点为本地目标节点,上述装置还包括:
191.当前新区块接收模块,用于接收上述共识节点传递的携带第二数据转移操作集的当前新区块;
192.其中,上述携带第二数据转移操作集的当前新区块,为在确定上述当前检测结果包括第二当前数据转移操作集的情况下,由上述共识节点将上述第二数据转移操作集附加至上述打包后的当前新区块得到,上述第二当前数据转移操作集为冲突数据转移操作所组成的集合,上述冲突数据转移操作为与上述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作。
193.可选地,上述装置还包括:
194.提取模块,用于从上述携带第二数据转移操作集的当前新区块中,提取上述第二数据转移操作集。
195.重新确定模块,用于将上述第二数据转移操作集对应的数据转移请求重新作为上述当前数据转移请求。
196.第二重复模块,用于重复上述响应于客户端发送的当前数据转移请求,执行上述当前数据转移请求对应的智能合约,得到当前合约执行结果,至上述发送上述当前合约执
行结果至共识节点的操作;以使上述共识节点重复上述对上述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果的操作;以及以使上述共识节点重复创建当前新区块,将上述第一当前数据转移操作集打包至上述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点的操作;以及使上述其他节点重复上述基于上述打包后的当前新区块,更新上述其他节点的本地数据转移记录的操作,当上述当前检测结果不包括上述第二当前数据转移操作集时停止。
197.可选地,上述共识节点发送模块,包括:
198.签名模块,用于对上述当前合约执行结果和上述当前数据转移请求进行签名,得到携带背书签名的当前数据转移信息。
199.节点发送单元,用于发送上述当前数据转移信息至上述共识节点。
200.可选地,上述其他节点为本地目标节点,上述装置还包括:
201.第二区块传递单元,用于传递上述打包后的当前新区块至上述客户端,以使上述客户端基于上述打包后的当前新区块,更新上述客户端的本地数据转移记录。
202.可选地,上述当前区块链网络中包括多个本地节点,上述当前数据转移请求响应模块,用于基于本地目标节点响应于上述当前区块链网络发送的当前数据转移请求;
203.其中,上述本地目标节点为上述当前区块链网络响应于上述客户端发送的上述当前数据转移请求,基于上述当前数据转移请求中携带的背书策略和上述当前数据转移请求对应的数据转移哈希值,从上述多个本地节点中确定得到。
204.需要说明的是,本技术实施例提供的装置实施例与上述方法实施例基于相同的发明构思。
205.本技术实施例还提供了一种数据转移处理的电子设备,该电子设备包括处理器和存储器,存储器中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现如上述任一实施例提供的数据转移处理方法。
206.本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可设置于终端之中以保存用于实现方法实施例中一种数据转移处理方法的至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现如上述方法实施例提供的数据转移处理方法。
207.可选地,在本说明书实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
208.本说明书实施例存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用程序以及数据转移处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
209.本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或
计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例提供的数据转移处理方法。
210.本技术实施例所提供的数据转移处理方法实施例可以在终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图12是根据一示例性实施例提供的一种数据转移处理的服务器的硬件结构框图。如图12所示,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)810(中央处理器810可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器830,一个或一个以上存储应用程序823或数据822的存储介质820(例如一个或一个以上海量存储设备)。其中,存储器830和存储介质820可以是短暂存储或持久存储。存储在存储介质820的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器810可以设置为与存储介质820通信,在服务器800上执行存储介质820中的一系列指令操作。服务器800还可以包括一个或一个以上电源860,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口840,和/或,一个或一个以上操作系统821,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
211.输入输出接口840可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器800的通信供应商提供的无线网络。在一个实例中,输入输出接口840包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口840可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
212.本领域普通技术人员可以理解,图12所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器800还可包括比图12中所示更多或者更少的组件,或者具有与图12所示不同的配置。
213.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
214.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
215.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
216.以上仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:
1.一种数据转移处理方法,其特征在于,所述方法包括:接收目标背书节点发送的当前合约执行结果;所述当前合约执行结果由所述目标背书节点响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约得到,所述当前合约执行结果包括当前数据转移读写集;对所述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;所述当前检测结果包括第一当前数据转移操作集,所述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中;传递打包后的当前新区块至当前区块链网络中的其他节点,以使所述其他节点基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录;所述其他节点包括所述目标背书节点。2.根据权利要求1所述的方法,其特征在于,所述传递打包后的当前新区块至当前区块链网络中的其他节点,以使所述其他节点基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录,包括:在确定所述当前检测结果包括第二当前数据转移操作集的情况下,将所述第二数据转移操作集附加至所述打包后的当前新区块,得到携带第二数据转移操作集的当前新区块;所述第二当前数据转移操作集为冲突数据转移操作所组成的集合,所述冲突数据转移操作为与所述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作;传递所述携带第二数据转移操作集的当前新区块至所述其他节点,以使所述其他节点基于所述携带第二数据转移操作集的当前新区块,更新所述其他节点的本地数据转移记录。3.根据权利要求2所述的方法,其特征在于,所述其他节点为所述目标背书节点,在所述传递所述携带第二数据转移操作集的当前新区块至所述其他节点,以使所述其他节点基于所述携带第二数据转移操作集的当前新区块,更新所述其他节点的本地数据转移记录之后,所述方法还包括:重复所述接收目标背书节点发送的当前合约执行结果,至所述传递所述携带第二数据转移操作集的当前新区块至所述其他节点,以使所述其他节点基于所述携带第二数据转移操作集的当前新区块,更新所述其他节点的本地数据转移记录的操作,当所述当前检测结果不包括所述第二当前数据转移操作集时停止;其中,重复过程中的当前合约执行结果为所述目标背书节点将所述第二数据转移操作集对应的数据转移请求重新作为所述当前数据转移请求,并重复所述响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约得到,所述第二数据转移操作集为所述目标背书节点从所述携带第二数据转移操作集的当前新区块中提取得到。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述接收目标背书节点发送的当前合约执行结果,包括:接收所述目标背书节点发送的携带背书签名的当前数据转移信息;其中,所述当前数据转移信息由所述目标背书节点对所述当前合约执行结果和所述当前数据转移请求进行签名得到;所述方法还包括:
在验证所述背书签名满足所述智能合约对应的背书策略的情况下,执行所述对所述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果的操作。5.一种数据转移处理方法,其特征在于,所述方法包括:响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约,得到当前合约执行结果;所述当前合约执行结果包括当前数据转移读写集;发送所述当前合约执行结果至共识节点,以使所述共识节点对所述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;所述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;以及以使所述共识节点创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;所述其他节点包括所述目标背书节点;以及以使所述其他节点基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录。6.根据权利要求5所述的方法,其特征在于,所述其他节点为本地目标节点,所述方法还包括:接收所述共识节点传递的携带第二数据转移操作集的当前新区块;其中,所述携带第二数据转移操作集的当前新区块,为在确定所述当前检测结果包括第二当前数据转移操作集的情况下,由所述共识节点将所述第二数据转移操作集附加至所述打包后的当前新区块得到,所述第二当前数据转移操作集为冲突数据转移操作所组成的集合,所述冲突数据转移操作为与所述第一当前数据转移操作集中的数据转移操作相冲突的数据转移操作。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:从所述携带第二数据转移操作集的当前新区块中,提取所述第二数据转移操作集;将所述第二数据转移操作集对应的数据转移请求重新作为所述当前数据转移请求;重复所述响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约,得到当前合约执行结果,至所述发送所述当前合约执行结果至共识节点的操作;以使所述共识节点重复所述对所述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果的操作;以及以使所述共识节点重复创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点的操作;以及使所述其他节点重复所述基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录的操作,当所述当前检测结果不包括所述第二当前数据转移操作集时停止。8.根据权利要求5至7中任一项所述的方法,其特征在于,所述发送所述当前合约执行结果至共识节点,包括:对所述当前合约执行结果和所述当前数据转移请求进行签名,得到携带背书签名的当前数据转移信息;发送所述当前数据转移信息至所述共识节点。9.根据权利要求5至7中任一项所述的方法,其特征在于,所述其他节点为本地目标节点,所述方法还包括:传递所述打包后的当前新区块至所述客户端,以使所述客户端基于所述打包后的当前新区块,更新所述客户端的本地数据转移记录。
10.根据权利要求5至7中任一项所述的方法,其特征在于,所述当前区块链网络中包括多个本地节点,所述响应于客户端发送的当前数据转移请求,包括:本地目标节点响应于所述当前区块链网络发送的当前数据转移请求;其中,所述本地目标节点为所述当前区块链网络响应于所述客户端发送的所述当前数据转移请求,基于所述当前数据转移请求中携带的背书策略和所述当前数据转移请求对应的数据转移哈希值,从所述多个本地节点中确定得到。11.一种数据转移处理装置,其特征在于,所述装置包括:当前合约执行结果接收模块,用于接收目标背书节点发送的当前合约执行结果;所述当前合约执行结果由所述目标背书节点响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约得到,所述当前合约执行结果包括当前数据转移读写集;冲突检测模块,用于对所述当前数据转移读写集进行数据转移冲突检测,得到当前检测结果;所述当前检测结果包括第一当前数据转移操作集,所述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;打包模块,用于创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中;传递模块,用于传递打包后的当前新区块至当前区块链网络中的其他节点,以使所述其他节点基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录;所述其他节点包括所述目标背书节点。12.一种数据转移处理装置,其特征在于,所述装置包括:当前数据转移请求响应模块,用于响应于客户端发送的当前数据转移请求,执行所述当前数据转移请求对应的智能合约,得到当前合约执行结果;所述当前合约执行结果包括当前数据转移读写集;共识节点发送模块,用于发送所述当前合约执行结果至共识节点,以使所述共识节点对所述当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;所述第一当前数据转移操作集为非冲突数据转移操作所组成的集合;以及以使所述共识节点创建当前新区块,将所述第一当前数据转移操作集打包至所述当前新区块中,并传递打包后的当前新区块至当前区块链网络中的其他节点;所述其他节点包括所述目标背书节点;以及以使所述其他节点基于所述打包后的当前新区块,更新所述其他节点的本地数据转移记录。13.一种数据转移处理方法的电子设备,其特征在于,所述电子设备包括处理器和存储器,存储器中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现如权利要求1至10中任一项所述的数据转移处理方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至10中任一项所述的数据转移处理方法。15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程被处理器执行时实现权利要求1至10中任一项所述的数据转移处理方法。

技术总结
本申请提供一种数据转移处理方法、装置、电子设备及存储介质,应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,该方法包括:接收目标背书节点发送的包括当前数据转移读写集的当前合约执行结果;对当前数据转移读写集进行数据转移冲突检测,得到包括第一当前数据转移操作集的当前检测结果;第一当前数据转移操作集为非冲突数据转移操作所组成的集合;创建当前新区块,将第一当前数据转移操作集打包至当前新区块中;传递打包后的当前新区块至当前区块链网络中的其他节点,以使其他节点基于打包后的当前新区块,更新其他节点的本地数据转移记录。本申请实施例可以提高磁盘的利用率和区块链的性能。和区块链的性能。和区块链的性能。


技术研发人员:曾毅
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.03
技术公布日:2023/9/12
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐