一种确定交易顺序的方法、设备、系统和存储介质与流程
未命名
08-26
阅读:130
评论: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.第五方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行如第一方面至第一方面的任意一种可能的实现方式中描述的确定交易顺序的方法,或者,第二方面或第二方面的各种可能的实现方式中所描述的确定交易顺序的方法。
27.第六方面,本技术实施例提供一种包括指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面或第一方面的各种可能的实现方式中描述的确定交易顺序的方法,或者,第二方面或第二方面的各种可能的实现方式中所描述的确定交易顺序的方法。
28.第七方面,本技术实施例提供确定交易顺序的装置用于实现上述第一方面或第一方面的任一方面的各种可能的设计中的各种方法。该确定交易顺序的装置可以为上述客户端,或者包含上述客户端的装置,或者应用于客户端中的部件(例如,芯片)。
29.第八方面,本技术实施例提供确定交易顺序的装置用于实现上述第二方面或第二方面的任一方面的各种可能的设计中的各种方法。该确定交易顺序的装置可以为上述第二节点设备,或者包含上述第二节点设备的装置,或者应用于第二节点设备中的部件(例如,芯片)。
30.第七方面或第八方面描述的确定交易顺序的装置包括实现上述方法相应的模块、单元、该模块、单元可以通过硬件实现,软件实现,或者通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或单元。
31.第九方面,本技术实施例提供了确定交易顺序的装置,该确定交易顺序的装置包括:至少一个处理器和通信接口。其中,当该确定交易顺序的装置运行时,该处理器执行该确定交易顺序的装置中存储的计算机执行指令或程序,以使该确定交易顺序的装置执行如上述第一方面或第一方面中任一方面的各种可能的设计中的任一项的方法。例如,该确定交易顺序的装置可以为客户端,或者为应用于客户端中的部件。
32.第十方面,本技术实施例提供了确定交易顺序的装置,该确定交易顺序的装置包括:至少一个处理器和通信接口。其中,当该确定交易顺序的装置运行时,该处理器执行该确定交易顺序的装置中存储的计算机执行指令或程序,以使该确定交易顺序的装置执行如上述第二方面或第二方面中任一方面的各种可能的设计中的任一项的方法。例如,该确定交易顺序的装置可以为第二节点设备,或者为应用于第二节点设备中的部件。
33.应理解,上述第九方面和第十方面中描述的确定交易顺序的装置中还可以包括:总线和存储器,存储器用于存储代码和数据。可选的,至少一个处理器通信接口和存储器相互耦合。
34.第十一方面,本技术实施例提供一种芯片,该芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行计算机程序或指令,以实现第一方面或第一方面的各种
可能的实现方式中所描述的确定交易顺序的方法,或者,第二方面或第二方面的各种可能的实现方式中所描述的确定交易顺序的方法。通信接口用于与芯片之外的其它模块进行通信。
35.第十二方面,本技术实施例提供了一种确定交易顺序的系统,该确定交易顺序的系统包括:客户端、一个或多个节点设备。其中,客户端用于执行第一方面或第一方面的各种可能的实现方式中所描述的确定交易顺序的方法,一个或多个节点设备中的第二节点设备用于执行第二方面或第二方面的各种可能的实现方式中所描述的确定交易顺序的方法。
附图说明
36.图1为本技术实施例提供的一种确定交易顺序的系统的示意图;图2为本技术实施例提供的一种客户端的内部结构示意图;图3为本技术实施例提供的一种确定交易顺序的方法的交互示意图;图4为本技术实施例提供的一种确定交易顺序的装置的结构示意图;图5为本技术实施例提供的另一种确定交易顺序的装置的结构示意图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。在介绍本技术实施例之前,首先对本技术涉及的相关名词进行如下释义:(1)nonce:在区块链系统中,账户发出的每一个交易的nonce具有不同的数值,该nonce的数值代表这笔交易的发起地址所发出的交易数量。通过nonce的数值可以确定在多笔交易中该交易的执行顺序。
38.本技术实施例中提供了三种关于nonce的参数:(a)nonce:用于表示交易的执行顺序,在一个账户中每一笔交易具有不同的nonce值。比如,在先后连续的一笔交易(交易1、交易2和交易3)中,如果交易1的nonce值为1,交易2的nonce值为2,交易3的nonce值为3,则表示交易1~交易3的执行顺序为:交易1
→
交易2
→
交易3。
39.(b)pending nonce:用于反映节点设备针对交易的接收情况。比如,先后连续的一笔交易(交易1、交易2和交易3)中,如果交易2的nonce值为2,且交易2已发送给节点设备,交
易3未发送给节点设备,则pending nonce值为2,表示nonce值为2的交易2以及nonce值为1的交易1已发送给节点设备。
40.(c)commit nonce:用于反映节点设备针对交易的执行情况。比如,在先后连续的一笔交易(交易1、交易2和交易3)中,如果交易2的nonce值为2,且交易2在节点设备中执行,交易3在节点设备中未执行,则commit nonce值为2,表示nonce值为2的交易2以及nonce值为1的交易1在节点设备中执行。
41.(2)共识机制:区块链系统中的节点设备通过投票完成对交易的验证和确认。比如,针对交易的操作,比如确定多笔交易的执行顺序,需要多个节点设备达成共识,以实现后续对多笔交易进行打包、执行。
42.(3)map结构:在map结构中,数据是以键值对{key,value}的形式进行存储的,每一个存储进map结构的数据都是一一对应的。
43.比如,本技术实施例中的map结构为{目标账户,nonce},该map结构用于确定nonce对应的交易是否打包。交易2的nonce为2。在{目标账户,2}=true的情况下,确定目标账户中nonce为2的交易2打包。
44.(4)哈希值(hash code):哈希值是一个十进制的整数,以交易的数据为输入做哈希运算所得到的输出值,用于唯一标识一笔交易。
45.区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,具有去中心化,信息不可篡改,开放性和匿名性等特点,近几年来得到广泛发展和应用。区块链系统中的节点设备在执行多笔交易时,会存在需要根据多笔交易的执行顺序依次执行多笔交易的情况。
46.现有技术中,区块链系统的多个节点设备是根据获取多笔交易的时间顺序来确定多笔交易的执行顺序。比如,区块链系统的一个节点设备依次获取到交易1~交易5。该节点设备也会按照交易1
→
交易2
→
交易3
→
交易4
→
交易5的执行顺序来执行这些交易。可以理解的是,多笔交易的执行顺序不是通过客户端确定的,而是通过接收到多笔交易的节点设备来确定。
47.然而,在客户端将多笔交易发送给区块链系统的多个节点设备的过程中,由于传输过程的不稳定性,可能存在有节点设备获取到的多笔交易的时间顺序与客户端发送多笔交易的时间顺序不同,从而导致多笔交易的执行顺序不符合预期,节点设备无法执行交易。比如,在客户端向节点设备a和节点设备b依次发送交易1~交易5。如果节点设备a获取到的交易的顺序为:交易1
→
交易3
→
交易2
→
交易5
→
交易4,而节点设备b获取到的交易的顺序为交易1
→
交易2
→
交易3
→
交易5
→
交易4。这样可能导致节点设备a和节点设备b对于同一账号的多笔交易确定的执行顺序不同,从而导致区块链系统中的多个节点设备无法对这些交易达到共识,节点设备无法执行交易。
48.其中,节点设备所执行的交易1~交易5存在以下几种情况:情况1、在交易1~交易5中,节点设备执行交易1~交易5时需要按照交易1
→
交易2
→
交易3
→
交易4
→
交易5的执行顺序执行交易1~交易5。
49.在区块链系统中的多个节点设备无法对这些交易达到共识的情况下,节点设备无法执行交易1~交易5。
50.情况2、在交易1~交易5中,执行交易1~交易3时需要按照交易1
→
交易2
→
交易3的
执行顺序执行交易1~交易3,而执行交易4~交易5时可以不按照执行顺序执行交易4~交易5,即交易1~交易3具有前后依赖关系,而交易4~交易5不具有前后依赖关系。
51.在区块链系统中的多个节点设备无法对交易1~交易3达到共识的情况下,节点设备可能无法执行交易1~交易3;但是由于交易4~交易5不具有前后依赖关系,节点设备可以成功执行交易4~交易5;或者,在一种可能存在的情况中,由于节点设备需要执行交易1~交易5,而节点设备无法对交易1~交易3达到共识导致无法执行交易1~交易3的情况下,节点设备可能也无法执行交易4~交易5。
52.基于上述节点设备执行交易时可能存在的情况,本技术实施例提供一种确定交易顺序的方法、设备、系统和存储介质,该方案中客户端在构建同一账号的多笔交易时,通过在交易中携带第二参数的参数值,这样便于接收到多笔交易的不同节点设备可以根据第二参数的参数值确定多笔交易的执行顺序,从而使得即使不同节点设备获取到的交易的顺序不同,也可以基于每笔交易的第二参数的参数值,对同一账户的多笔交易确定出相同的执行顺序,因此该方案用于解决区块链系统的节点设备在执行多笔交易时,由于多笔交易的执行顺序不符合预期,导致节点设备无法执行交易的技术问题。
53.为了说明本技术所述的技术方案,下面通过具体实施例来进行说明。
54.如图1所示,图1为本技术实施例提供的一种确定交易顺序的系统的示意图,该系统包括:客户端100和多个节点设备。多个节点设备包括:第一节点设备200和第二节点设备300。其中,第一节点设备200和第二节点设备300可以分别是多个节点设备中的任意两个设备。
55.示例性的,客户端100可以是电脑、手机等终端设备,本技术实施例对此不作限定。
56.示例性的,区块链系统包括多个节点。多个节点中的至少一个节点可以部署在一台电子设备上,节点可以指电子设备上的软件包,或者,节点也可以指电子设备。电子设备可以是电脑、手机等终端设备,或者服务器,本技术实施例对此不作限定。
57.相应的,节点作为节点设备时,可以是电脑、手机等终端设备,或者服务器,本技术实施例对此不作限定。
58.示例性的,多个节点设备中的至少一个节点设备(比如第一节点设备200和第二节点设备300)可以是区块链系统中的节点设备,也可以是连接到区块链系统的设备。
59.客户端100可以是独立于区块链系统的设备。可选的,客户端100也可以是区块链系统中除第一节点设备200和第二节点设备300外的一个节点设备。本技术实施例对此不做具体限定。
60.由于区块链系统为一种去中心化的分布式数据库,任意两个的节点设备之间具有通信连接。通过该通信连接,两个节点设备之间可以相互发送信息。
61.作为一种示例,客户端100与多个节点设备(比如第一节点设备200和第二节点设备300)之间具有通信连接。通过该通信连接,客户端100可以与多个节点设备之间相互发送信息。
62.示例性的,多个节点设备之间的通信连接,以及客户端100与多个节点设备之间的通信连接,可以是有线通信连接,比如,有线通信连接可以是以太网(ethernet)连接等;也可以是无线通信连接,比如,无线通信连接可以是比如wi-fi(wireless fidelity)连接、蓝牙(bluetooth,bt)连接、近场通信(near field communication,nfc)等,本技术实施例对
此不做具体限定。
63.需要解释的是,区块链系统中的节点设备执行多笔交易(比如交易1、交易2和交易3)之前,由于区块链系统中的共识机制,节点设备需要对多笔交易的执行顺序达成共识,即区块链系统中的各个节点设备所确定的多笔交易的执行顺序一致,比如,各个节点设备确定的多笔交易的执行顺序为:交易1
→
交易2
→
交易3。或者,节点设备需要对多笔交易的执行顺序达成共识,可以为:区块链系统中存在设定数量的节点设备所确定的多笔交易的执行顺序一致。
64.区块链系统中的节点设备在对多笔交易的执行顺序达成共识之后,区块链系统中各个节点设备按照执行顺序打包多笔交易。或者,区块链系统中的至少一个节点设备也可以在按照执行顺序打包多笔交易之后,将多笔打包后的交易发送给区块链系统中的其他未对多笔交易进行打包的节点设备。这样可以实现区块链系统中的各个节点设备中都具有多笔打包后的交易,并按照执行顺序执行多笔打包后的交易,从而实现将多笔打包后的交易存储在区块链系统中,即实现多笔交易上链。
65.作为一种示例,如图2所示,图2为本技术实施例提供的一种客户端100的结构示意图,如图2所示,该客户端100包括:处理器101、通信线路102、至少一个通信接口(图2中示例性的以通信接口103为例进行说明)。
66.处理器101可以是一个通用中央处理器(central processing unit, cpu),微处理器,特定应用集成电路(application-specific integrated circuit asic),或一个或多个用于控制本技术方案程序执行的集成电路。
67.通信线路102可包括一通路,在上述组件之间传送信息。
68.通信接口103,用于与其他装置进行信息交互,例如使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network, ran),无线局域网(wireless local area networks, wlan)等。
69.可选的,客户端100还可以包括存储器104。
70.存储器104可以是只读存储器(read-only memory, rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory, ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory, eeprom)、只读光盘(compact discread-only memory, cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器104可以是独立存在,通过通信线路102与处理器101相连接。存储器104也可以和处理器101集成在一起。
71.其中,存储器104用于存储执行本技术方案的计算机执行指令,并由处理器101来控制执行。处理器101用于执行存储器104中存储的计算机执行指令,从而实现本技术下述实施例提供的一种确定交易顺序的方法。
72.可选的,本技术实施例中的计算机执行指令也可以称之为应用程序代码,本技术实施例对此不作具体限定。
73.在具体实现中,作为一种实施例,处理器101可以包括一个或多个cpu,例如图2中
的cpu0和cpu1。
74.在具体实现中,作为一种实施例,客户端100可以包括多个处理器,例如图2中的处理器101和处理器105。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
75.可选的,本技术实施例中的第一节点设备200和第二节点设备300的结构也可以参考如图2所示的客户端100的结构。
76.在本技术实施例中,一种确定交易顺序的方法的执行主体的具体结构,本技术实施例并未特别限定,只要可以通过运行记录有本技术实施例的一种确定交易顺序的方法的代码的程序,以根据本技术实施例的一种确定交易顺序的方法进行通信即可。例如,本技术实施例提供的一种确定交易顺序的方法的执行主体可以是客户端中能够调用程序并执行程序的功能模块,或者为应用于客户端中的确定交易顺序的装置,例如,芯片。本技术实施例提供的一种确定交易顺序的方法的执行主体可以是第一节点设备中能够调用程序并执行程序的功能模块,或者为应用于第一节点设备中的确定交易顺序的装置,例如,芯片。本技术实施例提供的一种确定交易顺序的方法的执行主体可以是第二节点设备中能够调用程序并执行程序的功能模块,或者为应用于第二节点设备中的确定交易顺序的装置,例如,芯片。本技术对此不进行限定。
77.下述实施例以一种确定交易顺序的方法的执行主体为客户端、第一节点设备和第二节点设备为例进行描述。
78.如图3所示,图3示出了本技术实施例提供的一种确定交易顺序的方法的交互示意图,该方法包括:步骤310、客户端获取目标账户的第一参数的初始参数值。
79.其中,第一参数的参数值用于反映节点设备针对任一交易的接收情况。
80.在实际应用场景中,第一参数可以称之为pending nonce。比如,在第一参数的参数值为3的情况下,说明节点设备已经接收到了3笔交易。
81.示例性的,节点设备可以是区块链系统中的任一节点设备。可选的,节点设备也可以是连接到区块链系统的设备。本技术实施例对此不作具体限制。
82.示例性的,第一参数的初始参数值由客户端已发送给节点设备的交易数量来确定。比如,在客户端获取目标账户的第一参数的参数值之前,目标账户已经有3个交易发送给了节点设备,则客户端获取到的第一参数的初始参数值为3。
83.示例性的,目标账户可以是区块链系统中所登记的多个账户中的任意一个账户。这样,本技术实施例所提供的确定交易顺序的方法可以用于确定任意一个账户中的多笔交易。
84.示例性的,目标账户也可以是区块链系统中所登记的多个账户中通过设定要求分类所确定的至少一个符合设定要求的账户。其中,针对符合设定要求的账户,本技术实施例对此不作具体限制。比如,多个账户可以按照登记时间进行分类,或者,可以按照注册类别进行分类等。举例说明,按照注册类别进行分类的账户可以分为一级账户、二级账户、三级账户等,设定要求可以是二级账户,则目标账户可以是多个账户中的二级账户。这样,本技术实施例所提供的确定交易顺序的方法可以用于确定多个账户中符合设定要求的账户。比
如,目标账户可以是多个账户中优先等级/重要性最高的账户等等,本技术实施例对此不做限定。
85.当然,目标账户也可以是多个账户中支持第一交易排序模式的账户。
86.本技术实施例中目标账户的第一参数的初始参数值可以是系统预设的,也可以是用户自定义设置的,本技术实施例对此不做限定。比如,第一参数的初始参数值可以为0,当然,第一参数的初始值也可以是100,或者1,本技术实施例对此不做限定。
87.当然,第一参数的参数值也可以用字母表示,相邻两笔交易中每笔交易的第一参数的参数值可以是连续递增或者递减的数字或者字母。比如,第一参数的初始参数值可以为a,当第一参数的参数值由初始参数值更新后,第一参数的参数值可以为b,以此类推。比如,第一参数的初始参数值可以为1,当第一参数的参数值由初始参数值更新后,第一参数的参数值可以为2,以此类推。
88.步骤320、客户端根据第一参数的初始参数值,构造目标账户的多笔交易。
89.其中,每笔交易携带有第二参数的参数值,不同交易携带的第二参数的参数值不同。交易的第二参数的参数值用于节点设备确定目标账户的多笔交易的执行顺序。
90.示例性的,多笔交易的执行顺序可以是指区块链系统中的节点设备执行多笔交易时所参考的顺序。本技术实施例中下文所述的多笔交易的执行顺序也可以是指区块链系统中的节点设备执行多笔交易时所参考的顺序。
91.在实际应用场景中,第二参数可以称之为nonce。
92.可选的,每笔交易的第二参数的参数值可以是连续递增(递减)的等差数列或者不连续递增(递减)的数列或者字母,本技术实施例对第二参数的参数值的具体形式不作限定,只要多笔交易的第二参数的参数值可以用于反映多笔交易的执行顺序即可。
93.比如,构造目标账户的多笔交易包括交易1、交易2和交易3时,交易1携带的第二参数的参数值为1,交易2携带的第二参数的参数值为2,交易3携带的第二参数的参数值为3。这样,通过每笔交易的第二参数的参数值,节点设备可以确定交易1、交易2和交易3的执行顺序。比如,确定多笔交易的执行顺序可以按照第二参数的参数值的大小,依次从小到大排列,则交易1、交易2和交易3的执行顺序为:交易1
→
交易2
→
交易3。再比如,确定多笔交易的执行顺序可以按照第二参数的参数值的大小,依次从大到小排列,则交易1、交易2和交易3的执行顺序为:交易3
→
交易2
→
交易1。
94.再比如,在每笔交易的第二参数的参数值之间为具有特定公差(比如2)的连续递增的等差数列:构造目标账户的多笔交易包括交易1、交易2和交易3时,交易1携带的第二参数的参数值为1,交易2携带的第二参数的参数值为3,交易3携带的第二参数的参数值为5。这样,通过每笔交易的第二参数的参数值,节点设备也可以确定交易1、交易2和交易3的执行顺序。比如,确定多笔交易的执行顺序可以按照第二参数的参数值的大小,依次从小到大排列,则交易1、交易2和交易3的执行顺序为:交易1
→
交易2
→
交易3。
95.当然,至于节点设备到底是按第二参数的参数值递增顺序还是递减顺序来确定多笔交易的执行顺序可以由客户端和节点设备共同协商确定,或者由客户端向节点设备指示,或者由客户端按照节点设备的要求的递增顺序或者递减顺序来设置各个交易的第二参数的参数值。
96.可选的,每笔交易的第二参数的参数值还用于反映客户端构造交易的顺序。比如
交易1、交易2和交易3时,交易1携带的第二参数的参数值为1,交易2携带的第二参数的参数值为2,交易3携带的第二参数的参数值为3,可以反映出客户端先构造交易1,然后构造了交易2,再构造了交易3。
97.其中,每笔交易的第二参数的参数值所对应的第一参数的参数值不同。
98.可以理解的是,客户端构造每笔交易时所根据的第一参数的参数值不同。比如,构造交易1时,交易1的第二参数的参数值1所对应的第一参数的参数值可以为初始参数值,比如0;构造交易2时,交易2的第二参数的参数值2所对应的第一参数的参数值为1。
99.可以理解的是,第一参数可以是在客户端构造一笔交易后进行参数值的更新,得到参数值更新后的第一参数。当然,第一参数也可以是在客户端确定一笔交易的第二参数的参数值后,进行参数值的更新,得到参数值更新后的第一参数。
100.示例性的,第一参数的参数值的更新可以通过第一节点设备来实现。其中,第一节点设备可以是区块链系统中的任一节点设备,也可以是连接区块链系统的一个设备。
101.作为一种示例,以多笔交易包括交易1、交易2和交易3为例进行说明:客户端可以在根据第一参数的参数值0,构造交易1。然后,客户端获取参数值更新后的第一参数,更新后的第一参数的参数值为1,构造交易2。然后,客户端再获取更新后的参数值为2的第一参数,构造交易3。
102.作为另一种示例,以多笔交易包括交易1、交易2和交易3为例进行说明:客户端可以在根据不同参数值的第一参数,分别确定交易1、交易2和交易3的第二参数的参数值,然后,客户端再构造交易1、交易2和交易3。比如,客户端可以根据第一参数的参数值0,确定交易1的第二参数的参数值1;然后根据第一参数的参数值1,确定交易2的第二参数的参数值2;接着,根据第一参数的参数值2,确定交易3的第二参数的参数值3。之后,客户端再构造交易1、交易2和交易3,其中,每笔交易的第二参数的参数值不同。
103.步骤330、客户端发送目标账户的多笔交易。相应的,第二节点设备获取目标账户的多笔交易。
104.其中,第二节点设备为区块链系统中的任一节点设备,或者,为区块链系统外的用于管理区块链系统的设备。
105.可选的,客户端也可以将多笔交易发送给第一节点设备和/或第二节点设备。可选的,第一节点设备和第二节点设备可以是区块链系统中的任意两个节点设备,也可以是连接区块链系统的两个设备。
106.当客户端将多笔交易发送给第一节点设备的情况下,第一节点设备也可以将多笔交易发送给第二节点设备,换言之,对于第二节点设备而言,其可以从客户端或者第一节点设备处获取多笔交易。当然,第二节点设备也可以从客户端获取到多笔交易中的一部分交易,然后从第一节点设备获取到多笔交易的其他交易。
107.作为一种示例,客户端可以将多笔交易统一发送给第一节点设备和/或第二节点设备。或者,客户端也可以将多笔交易按照执行顺序依次发送给第一节点设备和/或第二节点设备,或者,客户端也可以将多笔交易依次随机发送给第一节点设备和/或第二节点设备,直到多笔交易发送给第一节点设备和/或第二节点设备。
108.步骤340、第二节点设备在确定多笔交易的执行顺序的情况下,按照执行顺序打包多笔交易,以实现按照执行顺序执行多笔交易。
109.可以理解的是,第二节点设备从客户端获取到的多笔交易的先后顺序,可能与客户端向第二节点设备发送的多笔交易的先后顺序不同。因此,第二节点设备需要通过每笔交易的第二参数的参数值,确定每笔交易在第二节点设备中的执行顺序。
110.作为一种示例,客户端向第二节点设备发送交易1、交易2、交易3,第二节点设备获取到的先后顺序为:交易1、交易3、交易2。由于交易1的第二参数的参数值为1,交易2的第二参数的参数值为2,交易3的第二参数的参数值为3,因此,第二节点设备可以根据第二参数的参数值,确定交易1~交易3的执行顺序。
111.需要解释的是,第二节点设备根据多笔交易的第二参数的参数值,不仅可以确定多笔交易的执行顺序,也可以确定多笔交易中的一个交易之前的交易,以及之后的交易。比如,通过交易3的第二参数的参数值3,可以确定第二参数的参数值为2的交易2和第二参数的参数值为4的交易4。
112.可以理解的是,第二节点设备按照执行顺序打包多笔交易后,可以将多笔交易发送给区块链系统中的其他节点设备。或者,区块链系统中的节点设备可以根据获取到的多笔交易,分别对多笔交易进行打包。然后,在区块链系统中的节点设备确定多笔交易的执行顺序一致的情况下,节点设备对多笔交易的执行顺序达成共识。在达成共识的情况下,区块链系统中的节点设备可以按照执行顺序,执行多笔交易,以实现多笔交易上链。
113.可选的,第二节点设备可以在获取多笔交易中的至少一笔交易的情况下,在获取多笔交易中剩下的交易的同时,打包至少一笔交易。通过这样的方式,可以加快第二节点设备打包多笔交易的速率。
114.本技术实施例提供一种确定交易顺序的方法,通过客户端根据获取目标账户的第一参数的初始参数值,构造目标账户的多笔交易,由于每笔交易携带的第二参数的参数值不同,这样客户端可以利用第二参数的参数值向节点设备指示多笔交易的执行顺序,从而解决了区块链系统中的节点设备在执行多笔交易时,由于多笔交易的执行顺序不符合预期,导致节点设备无法执行交易的技术问题。
115.由于多笔交易中每笔交易的构造方式相同,下述以客户端构造根据第一参数的初始参数值,构造目标账户的任一交易为例描述,上述步骤320的具体实现,客户端构造其余交易的具体实现方式可以参考客户端构造根据第一参数的初始参数值,构造目标账户的任一交易的描述,后续不再赘述。
116.在本技术的一种可能的实现方式中,上述步骤320可以通过以下方式实现:客户端对于多笔交易中的任一交易,根据第一参数的初始参数值,构造目标账户的任一交易,包括以下步骤:步骤321、客户端构造任一交易时,确定第一参数的参数值。
117.其中,第一参数的参数值为初始参数值,或者,第一参数的参数值为上一笔交易构造后第一参数更新后的参数值。
118.可以理解的是,在构造多笔交易中的第一笔交易时,客户端确定第一参数的参数值为初始参数值。在构造多笔交易中除第一笔交易以外的交易时,客户端确定第一参数的参数值为上一笔交易构造后第一参数更新后的参数值。
119.比如,多笔交易为交易1、交易2和交易3,交易1为第一笔交易:客户端构造交易1时,确定第一参数的参数值为初始参数值,比如为0。客户端构造交易3时,确定第一参数的
参数值为上一笔交易即交易2构造后第一参数更新后的参数值,比如为2。
120.步骤322、客户端根据第一参数的参数值,确定任一交易的第二参数的参数值。
121.作为一种示例,在第一参数的参数值为0的情况下,客户端构造交易时,根据第一参数的参数值0,确定客户端已发送该目标账户中的交易的数量为零。则客户端可以确定该交易的第二参数的参数值为1。
122.作为另一种示例,在第一参数的参数值为2的情况下,客户端构造交易时,根据第一参数的参数值2,确定客户端已发送该目标账户中的交易的数量为2,即客户端已发送了该目标账户中的两个交易。则客户端可以确定该交易的第二参数的参数值为3,这样可用于表示该交易为目标账户中的第三个发送出去的交易。
123.步骤323、客户端根据任一交易的第二参数的参数值,构造任一交易。
124.可选的,在本技术的一种可能的实施例中,任一笔交易中还携带有类型指示信息,该类型指示信息用于指示该笔交易所遵循的交易排序模式。比如,类型指示信息可以为第一指示信息,用于指示该笔交易所遵循的交易排序模式为第一交易排序模式。这样,在其他节点设备接收到该交易时,在检测到交易中的指示信息,可以确定该交易所遵循的交易排序模式。
125.关于如何构造交易的方法,客户端除确定交易中包含第二参数的参数值外,构造交易的方法可以参考现有技术,此处不再赘述。
126.在本技术的一种可能的实施例中,上述步骤323之后,本技术实施例所提供的方法还包括:步骤324、客户端向第一节点设备发送任一交易。相应的,第一节点设备接收来自客户端的任一笔交易。
127.步骤325、客户端从第一节点设备处获取第一参数更新后的参数值。
128.需要解释的是,第一节点设备在更新目标账户中的第一参数更新后的参数值后,客户端需要确定目标账户的第一参数的参数值是否更新。
129.可选的,第一节点设备可以将第一参数更新后的参数值发送给客户端,客户端在接收到第一参数更新后的参数值后,更新客户端中所存储的目标账户中的第一参数的参数值。
130.可选的,第一节点设备可以将指示更新第一参数的参数值的指示信息发送给客户端,客户端在接收到指示信息的情况下,更新客户端中的第一参数的参数值。
131.可选的,第一节点设备也可以将第一参数更新后的参数值发送给云端服务器。客户端可以通过获取云端服务器中的信息,确定目标账户中第一参数更新后的参数值。
132.可选的,第一节点设备可以更新目标账户的第一参数的参数值,待第一节点设备更新后,客户端可以重新获取目标账户的第一参数的参数值,从而得到第一参数更新后的参数值。
133.比如,客户端以第一参数的初始参数值0确定第二参数的参数值为1后,构建交易1,然后将交易1发送给第一节点设备,第一节点设备接收到交易1后,将目标账户的第一参数的参数值从初始参数值0更新为参数值1,由于目标账户的第一参数的更新后的参数值存储于第一节点设备,这样客户端可以从该第一节点设备除重新获取目标账户的第一参数的更新后的参数值。
134.下面以一种示例来举例描述上述步骤321~步骤325中客户端如何根据第一参数的初始值,构造目标账户的多笔交易。
135.作为一种示例,以目标账户的第一参数为pending nonce,交易的第二参数为nonce,pending nonce的初始值为0进行描述:(a)、客户端获取目标账户的pending nonce=0。
136.(b)、客户端根据pending nonce=0,确定交易1的nonce=pending nonce+1=1,并构造交易1。
137.(c)、客户端将交易1发送给第一节点设备,第一节点设备更新目标账户的pending nonce的数值,即更新后的pending nonce=1。
138.(d)、第一节点设备将更新后的pending nonce=1发送给客户端。相应的,客户端根据获取的更新后的pending nonce=1,确定交易2的nonce=pending nonce+1=2,并构造交易2。
139.(e)、客户端将交易2发送给第一节点设备,第一节点设备更新目标账户的pending nonce的数值,即更新后的pending nonce=2。
140.(f)、第一节点设备将更新后的pending nonce=2发送给客户端。相应的,客户端根据获取的更新后的pending nonce=2,确定交易3的nonce=pending nonce+1=3,并构造交易3。
141.(g)、客户端将交易3发送给第一节点设备,第一节点设备更新目标账户的pending nonce的数值,即更新后的pending nonce=3。
142.可以理解的是,由于第一节点设备接收到交易3时,更新目标账户中的pending nonce的数值,因此在客户端下一次需要将目标账户中的其他交易发送给第一节点设备时(比如交易4~交易6),客户端根据目标账户中pending nonce=3,可以确定交易4的nonce=4。这样可以实现,目标账户中每笔交易的第二参数的参数值不同。
143.由上述示例可以得到:客户端向第一节点设备发送一个交易,然后第一节点设备接收到该交易后更新目标账户的第一参数的参数值,客户端可以根据更新后的第一参数的参数值,构造下一笔交易。通过这样的方式,客户端可以构造得到第二参数的参数值各不相同的多笔交易。客户端可以将这些交易发送给其他节点设备,比如第二节点设备,第二节点设备也可以根据这些交易的第二参数的参数值,确定这些交易的执行顺序。相比于现有技术中通过节点设备获取多笔交易的时间顺序来确定交易的执行顺序,本方案可以确定多笔交易在多个节点设备中的执行顺序相同。
144.并且,由于第一节点设备在接收到客户端发送的交易时更新目标账户的第一参数的参数值,并将更新后的第一参数的参数值发送给客户端,客户端可以确定下一个交易的第二参数的参数值,而不需要在一个交易执行完成后才确定下一个交易的第二参数的参数值。这样可以减少客户端构造多笔交易的时间。
145.由于在客户端将多笔交易发送给第二节点设备的过程中可能会存在丢失交易的情况,或者第二节点设备在获取到交易后丢失了该交易,因此,在本技术的一种可能的实施例中,本技术实施例所提供的方法还包括:客户端确定第二节点设备执行第一交易之前丢失第一交易,则客户端重新向第二节点设备发送第一交易。
146.其中,第一交易为多笔交易中的任意一笔交易。
147.作为一种示例,多笔交易可以是交易1~交易5,第一交易可以是交易3。在客户端将交易1~交易5发送给第二节点设备的过程中丢失交易3,或者,第二节点设备在获取到交易1~交易5之后丢失了交易3。第二节点设备可以将丢失了交易3的消息发送给客户端,客户端确定第二节点设备丢失交易3时,重新向第二节点设备发送交易3。
148.需要解释的是,客户端在确定第二节点设备丢失第一交易之后,可以将客户端中所缓存的第一交易发送给第二节点设备。客户端也可以重新构造一个第一交易,然后将第一交易发送给第二节点设备。
149.由于客户端与节点设备之间在传输的过程中存在丢失交易的情况,客户端需要将丢失的交易重新发送给节点设备,为了提高传输效率,在本技术的一种可能的实施例中,客户端缓存未被第二节点设备执行的至少一笔交易,至少一笔交易包括第一交易,则客户端重新向第二节点设备发送第一交易,包括:客户端将缓存的第一交易重新发送给第二节点设备。
150.作为一种示例,客户端中缓存有至少一个未被第二节点设备执行的交易可以以第一列表的形式进行描述。其中,第一列表用于未被第二节点设备执行的至少一笔交易。则客户端可以将第一列表中所缓存的第一交易重新发送给第二节点设备。
151.比如,多笔交易为交易1~交易5,其中,每笔交易携带有不同的第二参数的参数值,如表1所示,表1为第一种第一列表的示意表。
152.举例说明,在第二节点设备丢失交易3的情况下,客户端确定第二节点设备丢失交易3,将第一列表中所缓存的交易3重新发送给第二节点设备。
153.作为一种示例,以第一交易为上述实施例中的交易3为例进行说明:在客户端向第二节点设备发送交易1~交易5,而第二节点设备接收到交易1~交易2,以及交易4~交易5的情况下,由于第一节点设备未接收到交易3,无法执行交易3的情况下,第一列表中缓存有交易3。客户端可以将第一列表中缓存的交易3重新发送给第二节点设备,这样可以在第二节点设备丢失交易3的情况下,第二节点设备可以重新获取到交易3,避免由于交易的丢失而无法执行交易的情况。并且,由于客户端通过第一列表,将交易3发送给第二节点设备,而不需要重新构造交易3,从而减少交易执行的时间,提高效率。
154.在本技术的一种可能的实施例中,目标账户还具有第三参数,本技术实施例所提供的方法还包括:第二节点设备执行多笔交易中的任一交易,根据任一交易的第二参数的参数值,更新任一交易的第三参数的参数值。
155.其中,第三参数的参数值用于反映第二节点设备针对任一交易的执行情况。
156.作为一种示例,以第二节点设备执行上述实施例中的交易3为例,第二节点设备根
据交易3的第二参数的参数值为3,更新第三参数的参数值为3。
157.在实际应用场景中,第三参数可以是commit nonce。
158.在本技术的一个可能的实施例,本技术实施例所提供的方法还包括:第二节点设备执行多笔交易中的任一交易,根据任一交易的第二参数的参数值,更新任一交易的第三参数的参数值。
159.在本技术的一种可能的实施例中,本技术实施例所提供的方法还包括:客户端获取第二节点设备针对任一交易的执行结果。客户端根据任一交易的执行结果,更新客户端缓存的交易,更新后的缓存中不包括第二节点设备已执行的交易。
160.作为一种示例,第二节点设备针对任一交易的执行结果,可以是第一指示信息。第一指示信息用于指示客户端,任一交易执行完成。然后,客户端接收到第一指示信息,确定第二节点设备已执行任一交易,然后更新客户端缓存的交易。
161.作为另一种示例,第二节点设备针对任一交易的执行结果,可以是第二节点设备更新第三参数的参数值。第二节点设备将更新后的第三参数的参数值发送给客户端。然后,客户端根据更新后的第三参数的参数值,确定第二节点设备已执行任一交易,然后更新客户端缓存的交易。
162.在本技术的一种可能的实施例中,本技术实施例所提供的方法还包括:客户端根据第三参数的参数值确定第二节点设备针对任一交易的执行结果。
163.作为一种示例,以任一交易为上述实施例中的交易3为例进行说明:客户端发给第二节点设备交易1~交易5,则第一参数的参数值为5。第二节点设备执行交易3,则确定更新后的第三参数的参数值为3。客户端根据更新后的第三参数的参数值,以及第一参数的参数值,确定客户端缓存的交易的第二参数的参数值的区间为(3,5]。客户端通过第二参数的参数值在区间(3,5]中的交易,确定第一列表为如表2所示的第二种第一列表的示意表,第一列表中还包括交易4和交易5,更新后的缓存中不包括第二节点设备已执行的交易(交易1~交易3)。
164.在本技术的一种可能的实施例中,上述步骤340之后,本技术实施例所提供的方法还包括:第二节点设备根据第三参数的参数值和多笔交易的第二参数的参数值,确定每笔交易是否已执行。在确定所述交易未执行的情况下,第二节点设备确定所述交易可进行打包。在确定所述交易已执行的情况下,第二节点设备确定所述交易不可进行打包。
165.作为一种示例,以上述实施例中的交易3为例进行说明:由于第三参数的参数值用于确定交易的执行情况,则第二节点设备可以对比第三参数的参数值和交易的第二参数的参数值的大小,来确定交易3是否已执行。这样可以防止交易重复执行,即检验交易的合法性。
166.比如,交易3的第二参数的参数值为3。在第三参数的参数值为2的情况下,第二节点设备确定第二参数的参数值为2的交易2已执行,交易3未执行,且交易3为交易2之后所执
行的交易,则第二节点设备确定交易3可以进行打包。
167.再比如,在第三参数的参数值为3的情况下,第二节点设备确定第二参数的参数值为3的交易已执行,即交易3已执行,则第二节节点设备确定交易3不可以进行打包。
168.作为一种可能实现的方式,第二节点设备具有第二列表,第二列表按照执行顺序存储多笔交易,则上述步骤330之后,本技术实施例所提供的方法还包括:第二节点设备按照多笔交易的执行顺序,将多笔交易存储在第二列表中。
169.作为一种示例,在第二节点设备确定交易1~交易5的执行顺序为:交易1
→
交易2
→
交易3
→
交易4
→
交易5,第二列表可以参考如表3所示的交易列表。
170.由于第二节点设备在打包交易时,为了确保第二节点设备按照执行顺序依次打包交易,以及避免第二节点设备重复打包交易,需要判断所打包的交易之前的交易是否被打包,因此,在本技术的一种可能的实施例中,上述步骤340包括以下方式:第二节点设备在确定第三交易已被打包的情况下,按照执行顺序打包多笔交易。
171.其中,第三交易携带的第二参数的参数值反映的第三交易的执行顺序早于多笔所述交易中任一交易携带的第二参数的参数值反映的任一所述交易的执行顺序。
172.比如,在多笔交易为上述表1中的交易2~交易5,则交易1为第三交易。其中,交易1携带的第二参数的参数值为1,由交易2~交易5中任一交易携带的第二参数的参数值大于1,则交易1的执行顺序早于交易2~交易5的执行顺序。在第二节点设备确定交易1已被打包的情况下,按照执行顺序打包交易2~交易5。
173.在本技术的一种可能的实施例中,第二节点设备确定交易是否已被打包,包括以下方式:交易携带有第一标识,则第二节点设备确定交易已被打包。交易未携带有第一标识,则第二节点设备确定交易未被打包。
174.其中,第一标识由交易的第二参数的参数值和目标账户的第三参数的参数值得到。
175.作为一种示例,第二节点设备根据交易的第二参数的参数值和目标账户的第三参数的参数值,得到用于确定交易已被打包的第一标识。
176.比如,以交易1为例,交易1的第二参数的参数值为1,在第三参数的参数值1的情况下,则交易1中携带有第一标识。第二节点设备根据交易1中携带有第一标识,确定交易1已被打包。
177.再比如,以交易3为例,交易3的第二参数的参数值为3,在第三参数的参数值为2的情况下,则交易3中不携带有第一标识。第二节点设备根据交易3未携带有第一标识,确定交易3未被打包。
178.当然,可以理解的是,第二节点设备可以通过检测上述实施例中的第三交易是否携带有第一标识,确定第三交易是否被打包。
179.在实际应用场景中,可以通过交易对应的一种map结构是否为“真”来确定交易是否具有第一标识,其中map结构可以是{目标账户,第二参数},第二参数为对应交易的第二参数的参数值。该map结构用于确定第二参数的参数值对应的交易是否打包。比如,在第三交易对应的map结构为“真”的情况下,则第二节点设备确定第三交易具有第一标识。
180.比如,第三交易为交易1(交易1的第二参数的参数值为1),目标账户为a的情况下,第二节点设备确定交易1对应的{a,1}是否为“真”/“true”/“1”。在第二节点设备确定交易1对应的{目标账户,1}为“真”/“true”/“1”情况下,第二节点设备交易1具有第一标识,则第二节点设备确定交易1已打包。
181.在本技术的一种可能的实施例中,客户端支持多种交易排序模式;上述步骤320,包括:在交易排序模式为第一交易排序模式时,客户端根据第一参数的初始参数值,构造目标账户的多笔交易。相应的,上述步骤340包括:第二节点设备检测到多笔交易携带有第一指示信息,则根据每笔交易的第二参数的参数值指示的多笔交易的执行顺序,打包多笔交易。
182.其中,每笔交易携带有第一指示信息,第一指示信息用于指示针对交易采用第一交易排序模式。
183.示例性的,第一指示信息可以是每笔交易中所携带的第一字段,该第一字段用于指示交易采用第一交易排序模式。
184.示例性的,多种交易排序模式包括:第一交易排序模式和第二交易排序模式。其中,第一交易排序模式可以是基于交易发起账户nonce值顺序的时间排序模式。第二交易排序模式可以是基于交易哈希值去重的时间排序模式。
185.需要解释的是,在交易排序模式为第二交易排序模式时,则第二节点设备可以根据获取到的多笔交易的时间先后顺序,确定多笔交易的执行顺序。
186.可以理解的是,由于客户端支持多种交易排序模式,因此可以根据用户的需求,或者多笔交易是否需要按照执行顺序执行等,来确定客户端采用哪种交易排序模式。
187.在本技术的一种可能的实施例中,本技术实施例所提供的方法还包括:在交易排序模式为第二交易排序模式时,客户端构造目标账户的多笔第二交易。第二节点设备获取目标账户的多笔第二交易。第二节点设备在检测到多笔交易携带有第二指示信息,则根据第二节点设备接收到每笔交易的时间确定多笔第二交易的执行顺序。
188.其中,第二交易携带有第二指示信息,第二指示信息用于指示第二交易采用第二交易排序模式。
189.示例性的,第二指示信息可以是每笔交易中所携带的第二字段,该第二字段用于指示针对交易采用第二交易排序模式。
190.示例性的,携带有第一指示信息的交易与携带有第二指示信息的第二交易之间,可以是除指示信息外内容相同的交易。
191.可以理解的是,第二节点设备执行多笔第二交易时,可以按照第二节点设备接收到多笔第二交易的时间先后顺序,来确定多笔交易的执行顺序。换句话说,在多个节点设备所接收到的多笔第二交易的时间先后顺序不一致的情况下,任一节点设备可以按照各自所
接收到多笔第二交易的时间先后顺序,来确定各自执行多笔交易的执行顺序。
192.可以理解的是,在客户端采用第二交易排序模式时,客户端构造多笔第二交易;在客户端采用第一交易排序模式时,客户端构造多笔交易。
193.可以理解的是,由于本技术实施例能够提供两种交易排序模式,可以覆盖多种情况。比如多笔交易在区块链系统中的任一节点设备中需要按照统一的执行顺序执行多笔交易,或者,多笔交易在区块链中的任一节点设备中可以按照各自获取到多笔交易的时间先后顺序执行多笔交易。因此用户可以选择用户所需要的交易排序模式。
194.可以理解的是,第二节点设备也可以在采用一种交易排序模式时切换到另一种交易排序模式来确定交易的执行顺序。比如,在多笔交易包括交易1~交易8。交易1~交易5携带有第一指示信息,交易6~交易8携带有第二指示信息。则第二节点设备获取到交易1~交易8时,第二节点设备可以采用第一交易排序模式确定交易1~交易5的执行顺序,采用第二交易排序模式确定交易6~交易8的执行顺序。
195.可以理解的是,各个设备,例如客户端或者第二节点设备为了实现上述功能,其包括了执行各个功能相应的结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
196.本技术实施例可以根据上述方法示例进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
197.上面结合图1至图3,对本技术实施例的方法进行了说明,下面对本技术实施例提供的执行上述方法的设备进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本技术实施例提供的确定交易顺序的装置可以执行上述一种确定交易顺序的方法中由客户端和第二节点设备执行的步骤。
198.在采用集成单元的情况下,图4示出了上述实施例中所涉及的确定交易顺序的装置,该确定交易顺序的装置可以是客户端也可以是应用于客户端中的装置,比如芯片或者处理电路,该确定交易顺序的装置可以包括:第一获取单元410、构造单元420和发送单元430。
199.在一种可选的实现方式中,确定交易顺序的装置还可以包括存储单元,用于存储确定交易顺序的装置的程序代码和数据。
200.作为一种示例,确定交易顺序的装置为客户端,或者为应用于客户端中的芯片。其中,第一获取单元410,用于获取目标账户的第一参数的初始参数值,第一参数的参数值用于反映节点设备针对任一交易的接收情况。构造单元420,用于根据第一参数的初始参数值,构造目标账户的多笔交易,每笔交易携带有第二参数的参数值,不同交易携带第二参数的参数值不同,第二参数的参数值用于节点设备确定目标账户的多笔交易的执行顺序,每笔交易的第二参数的参数值所对应的第一参数的参数值不同。发送单元430,用于发送目标
账户的多笔交易。
201.其中,存储器用于存储执行本技术方案的计算机执行指令,并由处理器来控制执行。处理器用于执行存储器中存储的计算机执行指令,从而实现本技术下述实施例提供的一种确定交易顺序的方法。
202.可选的,本技术实施例中的计算机执行指令也可以称之为应用程序代码,本技术实施例对此不作具体限定。
203.在采用集成单元的情况下,图5示出了上述实施例中所涉及的确定交易顺序的装置,该确定交易顺序的装置可以是第二节点设备也可以是应用于第二节点设备中的装置,比如芯片或者处理电路,该确定交易顺序的装置可以包括:第二获取单元和510打包单元520。
204.在一种可选的实现方式中,确定交易顺序的装置还可以包括存储单元,用于存储确定交易顺序的装置的程序代码和数据。
205.作为一种示例,确定交易顺序的装置为第二节点设备,或者为应用于第二节点设备中的芯片。其中,第二获取单元510,用于获取目标账户的多笔交易,每笔交易携带有第二参数的参数值,不同交易携带的第二参数的参数值不同,交易的第二参数的参数值用于确定目标账户的多笔交易的执行顺序。打包单元520,用于根据每笔交易的第二参数的参数值指示的多笔交易的执行顺序,打包多笔交易,以实现按照执行顺序执行多笔交易。
206.其中,存储器用于存储执行本技术方案的计算机执行指令,并由处理器来控制执行。处理器用于执行存储器中存储的计算机执行指令,从而实现本技术下述实施例提供的一种确定交易顺序的方法。
207.可选的,本技术实施例中的计算机执行指令也可以称之为应用程序代码,本技术实施例对此不作具体限定。
208.一方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令被运行时,实现如图4由客户端执行的功能,或者实现如图5中由第二节点设备执行的功能。
209.一方面,提供一种包括指令的计算机程序产品,计算机程序产品中包括指令,当指令被运行时,实现如图4中由客户端执行的功能,或者实现如图5中由第二节点设备执行的功能。
210.一方面,提供一种芯片,该芯片应用于客户端或者第二节点设备中,芯片包括至少一个处理器和通信接口,通信接口和至少一个处理器耦合,处理器用于运行指令,以实现如图4中由客户端执行的功能,或者实现如图5中由第二节点设备执行的功能。
211.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计
算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,dvd);还可以是半导体介质,例如,固态硬盘(solid state drive,ssd)。
212.尽管在此结合各实施例对本技术进行了描述,然而,在实施所要求保护的本技术过程中,本领域技术人员通过查看附图、公开内容,以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
213.尽管结合具体特征及其实施例对本技术进行了描述,显而易见的,在不脱离本技术的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本技术的示例性说明,且视为已覆盖本技术范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包括这些改动和变型在内。
技术特征:
1.一种确定交易顺序的方法,其特征在于,应用于客户端,所述方法包括:获取目标账户的第一参数的初始参数值,所述第一参数的参数值用于反映节点设备针对任一所述交易的接收情况;根据所述第一参数的初始参数值,构造所述目标账户的多笔交易,每笔所述交易携带有第二参数的参数值,不同所述交易携带的所述第二参数的参数值不同,所述交易的第二参数的参数值用于所述节点设备确定所述目标账户的多笔所述交易的执行顺序,每笔所述交易的第二参数的参数值所对应的第一参数的参数值不同;发送所述目标账户的多笔所述交易。2.根据权利要求1所述的方法,其特征在于,对于多笔交易中的任一交易,所述根据所述第一参数的初始参数值,构造所述目标账户的任一交易,包括:构造任一所述交易时,确定所述第一参数的参数值,所述第一参数的参数值为所述初始参数值,或者,所述第一参数的参数值为上一笔交易构造后所述第一参数更新后的参数值;根据所述第一参数的参数值,确定任一所述交易的第二参数的参数值;根据任一所述交易的第二参数的参数值,构造任一所述交易。3.根据权利要求1所述的方法,其特征在于,构造任一所述交易之后,所述方法还包括:向第一节点设备发送任一所述交易,以及从所述第一节点设备处获取所述第一参数更新后的参数值,所述第一节点设备为区块链系统中的任一节点设备,或者,为所述区块链系统外的用于管理所述区块链系统的设备。4.根据权利要求1~3任一项所述的方法,其特征在于,所述方法还包括:确定第二节点设备执行第一交易之前丢失所述第一交易,则所述客户端重新向所述第二节点设备发送所述第一交易,所述第一交易为多笔所述交易中的任意一笔交易,所述第二节点设备为区块链系统中的任一节点设备,或者,为所述区块链系统外的用于管理所述区块链系统的设备。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:所述客户端缓存未被所述第二节点设备执行的至少一笔所述交易,至少一笔所述交易包括所述第一交易,相应的,所述客户端重新向所述第二节点设备发送所述第一交易,包括:所述客户端将缓存的所述第一交易重新发送给所述第二节点设备。6.根据权利要求1~3任一项所述的方法,其特征在于,所述目标账户还具有第三参数,所述第三参数的参数值用于反映第二节点设备针对任一所述交易的执行情况,所述第二节点设备为区块链系统中的任一节点设备,或者,为所述区块链系统外的用于管理所述区块链系统的设备,所述方法还包括:根据所述第三参数的参数值确定所述第二节点设备针对任一所述交易的执行结果。7.根据权利要求1~3任一项所述的方法,其特征在于,所述客户端支持多种交易排序模式;所述根据所述第一参数的初始参数值,构造所述目标账户的多笔交易,包括:所述交易排序模式为第一交易排序模式,则根据所述第一参数的初始参数值,构造所述目标账户的多笔所述交易,每笔所述交易携带有第一指示信息,所述第一指示信息用于指示针对所述交易采用第一交易排序模式;或者,所述方法还包括:所述交易排序模式为第二交易排序模式,则所述客户端构造所述目标账户的多笔第二
交易,所述第二交易携带有第二指示信息,所述第二指示信息用于指示针对所述第二交易采用第二交易排序模式;发送多笔所述第二交易。8.一种确定交易顺序的方法,其特征在于,应用于第二节点设备,所述第二节点设备为区块链系统中的任一节点设备,或者,为所述区块链系统外的用于管理所述区块链系统的设备,所述方法包括:获取目标账户的多笔交易,每笔所述交易携带有第二参数的参数值,不同所述交易携带的所述第二参数的参数值不同,所述交易的第二参数的参数值用于确定所述目标账户的多笔所述交易的执行顺序;根据每笔所述交易的第二参数的参数值指示的多笔所述交易的执行顺序,打包多笔所述交易,以实现按照所述执行顺序执行多笔所述交易。9.根据权利要求8所述的方法,其特征在于,所述目标账户还具有第三参数,所述第三参数的参数值用于反映所述交易的执行情况,所述方法还包括:所述第二节点设备执行多笔所述交易中的任一交易,根据任一所述交易的第二参数的参数值,更新任一所述交易的第三参数的参数值。10.根据权利要求8所述的方法,其特征在于,获取目标账户的多笔交易之后,所述方法还包括:根据第三参数的参数值和多笔所述交易的第二参数的参数值,确定每笔所述交易是否已执行,所述第三参数的参数值用于反映所述交易的执行情况;在确定所述交易未执行的情况下,确定所述交易可进行打包;在确定所述交易已执行的情况下,确定所述交易不可进行打包。11.根据权利要求9所述的方法,其特征在于,按照所述执行顺序打包多笔所述交易,包括:在确定第三交易已被打包的情况下,按照所述执行顺序打包多笔所述交易,所述第三交易携带的第二参数的参数值反映的所述第三交易的执行顺序早于所述多笔所述交易中任一所述交易携带的第二参数的参数值反映的所述任一所述交易的执行顺序。12.根据权利要求11所述的方法,其特征在于,确定所述交易是否已被打包,包括:所述交易携带有第一标识,则确定所述交易已被打包,所述第一标识由所述交易的第二参数的参数值和所述目标账户的第三参数的参数值得到;所述交易未携带有第一标识,则确定所述交易未被打包。13.根据权利要求8~12任一项所述的方法,其特征在于,根据每笔所述交易的第二参数的参数值指示的多笔所述交易的执行顺序,打包多笔所述交易,包括:检测到多笔所述交易携带有第一指示信息,则根据每笔所述交易的第二参数的参数值指示的多笔所述交易的执行顺序,打包多笔所述交易,所述第一指示信息用于指示所述交易采用第一交易排序模式;或者,所述方法还包括:获取所述目标账户的多笔第二交易;在检测到多笔所述交易携带有第二指示信息,则根据所述第二节点设备接收到每笔所述交易的时间确定多笔所述第二交易的执行顺序,所述第二指示信息用于指示所述第二交易采用第二交易排序模式。
14.一种客户端,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~7任一项所述的方法。15.一种节点设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求8~13任一项所述的方法。16.一种确定交易顺序的系统,其特征在于,包括:客户端、一个或多个节点设备,所述客户端用于执行如权利要求1~7任一项所述的方法,所述节点设备用于执行如权利要求8~13任一项所述的方法。17.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1~7或者权利要求8~13任一项所述的方法。
技术总结
本申请实施例提供一种确定交易顺序的方法、设备、系统和存储介质,涉及区块链技术领域,该方案包括:获取目标账户的第一参数的初始参数值,第一参数的参数值用于反映节点设备针对任一交易的接收情况。根据第一参数的初始参数值,构造目标账户的多笔交易,每笔交易携带有第二参数的参数值,不同交易携带的第二参数的参数值不同,交易的第二参数的参数值用于节点设备确定目标账户的多笔交易的执行顺序,每笔交易的第二参数的参数值所对应的第一参数的参数值不同。发送目标账户的多笔交易。该方案用于解决区块链系统的节点设备在执行多笔交易时,由于多笔交易的执行顺序不符合预期,导致节点设备无法执行交易的技术问题。导致节点设备无法执行交易的技术问题。导致节点设备无法执行交易的技术问题。
技术研发人员:黄方蕾 尚璇 张珂杰 李兆硕 谢逸俊
受保护的技术使用者:武汉趣链数字科技有限公司
技术研发日:2023.07.25
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
