CN117527832A - 一种区块链的交易排序方法、装置、电子设备和存储介质 - Google Patents
一种区块链的交易排序方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117527832A CN117527832A CN202410006430.8A CN202410006430A CN117527832A CN 117527832 A CN117527832 A CN 117527832A CN 202410006430 A CN202410006430 A CN 202410006430A CN 117527832 A CN117527832 A CN 117527832A
- Authority
- CN
- China
- Prior art keywords
- target
- ordering
- transaction
- state object
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004590 computer program Methods 0.000 claims description 24
- 238000010586 diagram Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及区块链技术领域,提出一种区块链的交易排序方法、装置、电子设备和存储介质。该方法应用于区块链设有的共识节点,包括:当接收到区块链的客户端节点发送的携带目标排序参数的目标交易时,确定目标交易指定的目标状态对象;其中,目标状态对象维护目标交易的相关数据;根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。采用该方法能够对共识节点接收到的交易进行灵活而有效的排序,从而满足各种交易执行顺序的业务需求。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链的交易排序方法、装置、电子设备和存储介质。
背景技术
区块链属于一种分布式***,其各个节点不是实时同步的,在共识算法的协调下,能够保证各个节点在每一个阶段时间点达成最终一致性,这可以确保在一个时间段内***接收到的交易可以被所有节点提交和执行。然而,由于网络的不同步特性,这些交易何时被共识节点接收,共识节点以什么顺序提交和执行这些交易都是无法确定的。由此可见,如何对共识节点接收到的交易进行灵活而有效的排序,成为本领域技术人员需要考虑的技术问题。
发明内容
有鉴于此,本申请实施例提供了一种区块链的交易排序方法、装置、电子设备和存储介质,能够对共识节点接收到的交易进行灵活而有效的排序,从而满足各种交易执行顺序的业务需求。
本申请实施例的第一方面提供了一种区块链的交易排序方法,应用于区块链设有的共识节点,该方法包括:
当接收到区块链的客户端节点发送的携带目标排序参数的目标交易时,确定目标交易指定的目标状态对象;其中,目标状态对象维护目标交易的相关数据;
根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。
在本申请实施例中,区块链的某个客户端节点在发起某个目标交易时,可以设置目标交易指定的目标状态对象以及携带的目标排序参数,目标状态对象维护着目标交易的相关数据。当共识节点接收到目标交易后,可以根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。通过这样设置,假设某个客户端节点想要限制其发起的一部分交易的执行顺序,则只需要设置该部分交易都指定同一个状态对象且分别为每个交易设置相应的不同排序参数,然后将该部分交易都发送给共识节点。共识节点在接收到该部分交易后,由于发现它们都指定同一个状态对象,因此会按照每个交易携带的排序参数对它们进行排序,可见实现了对接收到的交易进行灵活而有效的排序,从而满足各种交易执行顺序的业务需求。
在本申请实施例的一种实现方式中,确定目标交易指定的目标状态对象,包括:
确定于客户端节点登录的用户账户;
将用户账户拥有的状态对象,确定为目标状态对象。
在本申请实施例的一种实现方式中,用户账户拥有多个状态对象,目标交易还携带状态对象标识;将用户账户拥有的状态对象,确定为目标状态对象,包括:
从用户账户拥有的多个状态对象中,查找对应于状态对象标识的一个状态对象,作为目标状态对象。
在本申请实施例的一种实现方式中,目标状态对象还维护排序参数变量;根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,包括:
若目标排序参数与排序参数变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将排序参数变量的数值更新为目标排序参数。
在本申请实施例的一种实现方式中,该方法还包括:
若目标排序参数与排序参数变量的关系不符合预设条件,则拒绝执行目标交易,或者暂停对目标交易的排序。
在本申请实施例的一种实现方式中,排序参数变量包括不同类型的多个变量;在根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序之前,还包括:
根据目标排序参数的类型,确定状态索引;
从不同类型的多个变量中,选取与状态索引对应的目标变量;
若目标排序参数与排序参数变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将排序参数变量的数值更新为目标排序参数,具体为:
若目标排序参数与目标变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将目标变量的数值更新为目标排序参数。
在本申请实施例的一种实现方式中,相关数据为智能合约数据,目标排序参数为优先级参数;根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,包括:
根据优先级参数,确定目标交易在共识节点已接收到的,由各个用户账户发起的指定目标状态对象的所有交易中的排序。
本申请实施例的第二方面提供了一种区块链的交易排序装置,应用于区块链设有的共识节点,该装置包括:
交易接收模块,用于当接收到区块链的客户端节点发送的携带目标排序参数的目标交易时,确定目标交易指定的目标状态对象;其中,目标状态对象维护目标交易的相关数据;
交易排序模块,用于根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。
本申请实施例的第三方面提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例的第一方面提供的区块链的交易排序方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例的第一方面提供的区块链的交易排序方法。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如本申请实施例的第一方面提供的区块链的交易排序方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种区块链***的示意图;
图2是本申请实施例提供的一种区块链的交易排序方法的流程图;
图3是本申请实施例提供的时间戳状态对象的状态更新示意图;
图4是本申请实施例提供的序列号状态对象的状态更新示意图;
图5是本申请实施例提供的用户账户、交易和状态对象的关系示意图;
图6是本申请实施例提供的指定存在多种状态索引的状态对象的多笔交易的执行示意图;
图7是本申请实施例提供的通过代理状态对象执行合约交易的操作示意图;
图8是本申请实施例提供的通过多规则索引的方式决定交易排序优先级的示意图;
图9是本申请实施例提供的一种区块链的交易排序装置的示意图;
图10是本申请实施例提供的一种电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
由于网络存在不同步的特性,区块链***中各个客户端节点发送给共识节点的交易何时被共识节点接收,共识节点以什么顺序提交和执行这些交易都无法确定。为了适应不同交易执行场景的需求,本申请实施例提供了一种区块链的交易排序方法、装置、电子设备和存储介质,能够对共识节点接收到的交易进行灵活而有效的排序。关于本申请实施例更具体的技术实现细节,请参照下文所述的各个实施例。
图1是本申请实施例提供的一种区块链***的示意图,该区块链***设有多个客户端节点和至少一个共识节点,各个节点之间可以相互通信连接。每个客户端节点都可以发起各自的交易,这些交易会被发送至共识节点,由共识节点按照设定的排序规则对这些交易进行排序,最后按序依次提交和执行这些交易。为了满足各种交易执行顺序的业务需求,本申请实施例提出一种基于状态对象的交易排序方法,该方法可应用于区块链***设有的任意一个共识节点,具体的技术实现细节请参照下文所述的方法实施例。
请参阅图2,示出了本申请实施例提供的一种区块链的交易排序方法,包括:
201、共识节点当接收到区块链的客户端节点发送的携带目标排序参数的目标交易时,确定目标交易指定的目标状态对象;
区块链***的每个客户端节点发起的每个交易都会发送至共识节点,由共识节点按照设定的排序规则对接收到的所有交易进行排序,然后依次提交和执行。
由于本申请实施例提供的是一种基于状态对象的交易排序方法,因此先对状态对象进行详细的说明。
状态对象(State Object)属于多规则状态机MRSM(Multi-Rule State Machine)的概念,不同规则的状态机维护其对应规则的状态对象,也即每种状态对象对应于一个状态机。状态对象可用于维护与交易相关的数据变量,每当状态对象维护的数据变量出现一次变化,可视作该状态对象更新了一次状态。状态对象维护的数据变量主要可以分为两类,第一类是交易需要操作的相关数据,第二类是排序参数变量。在实际操作中,共识节点可以通过区块链的账本建立各个状态机,从而维护各个状态对象。
作为一个示例,状态对象维护的数据变量还可以包括区块链的账本数据,也即,可以通过状态对象来维护区块链分布式账本的数据,这样能够提高操作账本数据的灵活性。
在多规则状态机的机制下,状态对象也可以有不同的类型,每种类型的状态对象分别对应一种规则的状态机。以下先说明时间戳状态对象(TemporalState Object)和序列号状态对象(Sequential State Object)。
对于希望通过时间戳限制执行顺序的交易,可以指定时间戳状态对象。时间戳状态对象可以使用B树来实现对应的状态树,对应的状态机通过交易的时间戳排序来执行交易,同时拒绝时间戳落后的交易尝试的状态更新,时间戳状态对象维护的排序参数变量是时间戳变量。如图3所示,为时间戳状态对象的状态更新示意图。在图3中,Tx1、Tx2和Tx3分别是客户端节点发起的指定某个时间戳状态对象的3个交易。ts1是客户端节点为交易Tx1制定的时间戳,ts2是客户端节点为交易Tx3制定的时间戳,ts3是客户端节点为交易Tx2制定的时间戳,其中ts1早于ts2,ts2早于ts3,也即客户端节点希望的交易执行顺序是Tx1、Tx3、Tx2。当共识节点接收到Tx1、Tx2和Tx3后,会按照每个交易制定的时间戳依次对该时间戳状态对象维护的时间戳变量进行更新,如图3所示,该时间戳状态对象维护的时间戳变量会按照ts1、ts2、ts3的顺序更新,时间戳变量每更新一次,可以视作该时间戳状态对象的状态发生了一次更新。
使用时间戳状态对象能够限制一个时间范围内,各个交易按照时间戳的先后顺序排序,也即确定一个交易合法的时间范围用于帮助交易去重。然而,使用时间戳状态对象实际上不能严格规定交易的执行顺序。例如,假设有三笔交易按序更新时间戳状态对象,指定的时间戳分别是ts1、ts2、ts3,其中ts1<ts2<ts3。由于分布式***网络不同步的原因,可能导致共识节点在没有收到ts2的交易时就已经执行了ts1的交易和ts3的交易,所以就不能保证ts3的交易在ts2的交易后执行,也即无法严格规定交易的执行顺序。在通常情况下,区块链各个节点的物理时钟是各不相同的,在没有额外协议统一区块链节点物理时钟的情况下,简单的时间戳只对当前节点有约束力。比如当前节点缓存了ts1~ts2时间范围内的交易,对比新接受交易与缓存内交易来判断交易是否重复,超过范围的交易将不接受并认为时间戳非法。
对于希望强制规定执行顺序的交易,可以指定序列号状态对象。序列号状态对象维护的排序参数变量是序列号变量,其表示当前对象的执行顺序号,只能接收设置下一个序列号的交易来改变其状态。如图4所示,为序列号状态对象的状态更新示意图。在图4中,Tx1、Tx2和Tx3分别是客户端节点发起的指定某个序列号状态对象的3个交易,seq1是客户端节点为交易Tx1制定的序列号,seq2是客户端节点为交易Tx3制定的序列号,seq3是客户端节点为交易Tx2制定的序列号,其中seq1<seq2<seq3,也即客户端节点希望的交易执行顺序是Tx1、Tx3、Tx2。当共识节点接收到Tx1、Tx2和Tx3后,会按照每个交易制定的序列号依次对该序列号状态对象维护的序列号变量进行更新,如图4所示,该序列号状态对象维护的序列号变量会按照seq1、seq2、seq3的顺序更新,序列号变量每更新一次,可以视作该序列号状态对象的状态发生了一次更新。
在多规则状态机的机制下,除了上文描述的时间戳状态对象和序列号状态对象之外,理论上是可以设置无数种类型的状态对象的,每种类型的状态对象分别对应一种规则的状态机。在实际操作中,状态对象的类型可以通过枚举值实现,这样便于规则的扩展。例如,可以通过以下代码定义状态对象的类型。
struct Transaction {
pub_key: bytes
signature: bytes
object_id: bytes
object_kind: StateObjectKind
...
}
enum StateObjectKind{
Temporal(int64)
Sequential(uint64)
...
}
在这段代码中,StateObjectKind表示状态对象的类型,其中Temporal表示时间戳状态对象,Sequential表示序列号状态对象,除此之外还可以定义无数种其它类型的状态对象。
在本申请实施例的一种实现方式中,状态对象可以是和用户账户相互绑定的,也即每个用户账户可以使用各自的状态对象,分别用于限制各自发起的交易的执行顺序。每个用户账户可以拥有一个状态对象,也可以拥有多个状态对象。当某个用户账户只拥有一个状态对象时,则该用户账户发起的所有交易都只能指定该状态对象。当某个用户账户拥有多个状态对象时,则该用户账户可以指定不同的交易分别指向不同的状态对象,这样能够实现只限制部分交易的执行顺序,以及实现不同的交易分别按照不同的规则限制执行顺序。
为了解决扩展性的问题,使一个用户账户能够同时操作不同规则下的状态机,发起不同规则的交易,可以令一个用户账户同时拥有各种不同类型的状态对象,例如可以同时拥有时间戳状态对象和序列号状态对象。对于同时拥有多个状态对象的用户账户来说,当其发起一个交易时,先指定所要操作的状态对象。例如,如果该交易想要指定时间戳状态对象,则可以为该交易设置一个时间戳,如果该交易想要指定序列号状态对象,则可以为该交易设置一个序列号。
在创建状态对象时,可以指明每个状态对象从属的用户账户,每个状态对象可从属于一个用户账户,而一个用户账户可以拥有多个相同类型或者不同类型的状态对象。
如图5所示,为用户账户、交易和状态对象的关系示意图。在图5中,用户账户A拥有时间戳状态对象1、时间戳状态对象2、序列号状态对象1、序列号状态对象2以及其它状态对象。该用户账户可以通过发送多笔交易来同时更改多个状态对象的状态,可以在交易中指定序列号状态对象的序列号来保证单一状态的更改是按序的。另外,由于不同状态对象的状态是相互独立的,例如不同时间戳状态对象维护的时间戳变量是相互独立的,不同序列号状态对象维护的序列号变量是相互独立的,不同规则的状态对象维护的排序参数变量之间更是相互独立的,因此当一个用户账户发起一批交易来同时更改多个不同状态对象的状态时,可以并发执行不同目的对象的交易。
例如,用户账户A在发起更新时间戳状态对象1的状态的交易的同时,还可以发起更新时间戳状态对象2的状态的交易,或者发起更新序列号状态对象1和序列号状态对象2的状态的交易。另外,用户账户A可以通过在交易中制定序列号的方式来按序操作序列号状态对象。如图5所示,用户账户A发起了三笔指定序列号状态对象1的交易,分别是携带序列号seq1的Tx1,携带序列号seq2的Tx2以及携带序列号seq3的Tx3,那么这三笔交易的执行顺序就是Tx1、Tx2、Tx3,即便在这个过程中用户账户A又发起了指定其他状态对象的交易,也不会影响Tx1、Tx2、Tx3的执行顺序。比如,假设用户账户A又发起了指定序列号状态对象2的交易Tx1’和Tx2’,那么这两笔交易的执行顺序就是Tx1’、Tx2’,但是指定不同状态对象的交易的执行顺序在这里是没有限制的。也即,最终的交易执行顺序可能是Tx1->Tx2->Tx1’->Tx3->Tx2’,也可能是Tx1->Tx2->Tx1’->Tx2’->Tx3…以此类推。总的来说,指定不同状态对象的交易的执行过程可以是并行的,在上述例子中,指定序列号状态对象1的交易Tx1、Tx2和Tx3,以及指定序列号状态对象2的交易Tx1’和Tx2’之间是可以并发执行的,例如在通过线程1执行Tx1->Tx2->Tx3的同时,可以通过线程2执行Tx1’->Tx2’。
假设当前某个客户端节点发起了一个交易,称作目标交易,下面具体说明共识节点在接收到目标交易之后,如何对目标交易进行排序。
按照前文的描述,客户端节点在发起目标交易时,可以指定目标交易指定的状态对象,该状态对象用目标状态对象表示。例如,目标状态对象可以是一个时间戳状态对象、一个序列号状态对象,或者一个其它类型的状态对象。目标状态对象通常维护着目标交易的相关数据,当执行目标交易时,目标状态对象中记录的相关数据会进行更新(例如目标交易执行时,相关的各种账户金额会出现变动)。另外,客户端节点还需要为目标交易制定一个排序参数,其用目标排序参数表示,用于决定目标交易在指定目标状态对象的所有交易中的排序。具体的,如果目标交易指定的是时间戳状态对象,则目标排序参数是为目标交易制定的时间戳,如果目标交易指定的是序列号状态对象,则目标排序参数是为目标交易制定的序列号,等等。
客户端节点发起的目标交易会发送至共识节点,共识节点接收到目标交易后,会先确定目标交易指定的状态对象,也即目标状态对象。
在本申请实施例的一种实现方式中,确定目标交易指定的目标状态对象,包括:
(1)确定于客户端节点登录的用户账户;
(2)将用户账户拥有的状态对象,确定为目标状态对象。
按照前文的描述,每个用户账户可以只拥有一个状态对象,针对这种情况,共识节点只需确定于该客户端节点登录的用户账户,即可确定目标交易指定的目标状态对象。在实际操作中,共识节点可以创建并记录每个用户账户各自拥有的状态对象,假设记录用户账户A拥有的状态对象是序列号状态对象1,那么如果确定在客户端节点登录的用户账户是用户账户A,即可将序列号状态对象1确定为目标状态对象。
在本申请实施例的一种实现方式中,用户账户拥有多个状态对象,目标交易还携带状态对象标识;将用户账户拥有的状态对象,确定为目标状态对象,包括:
从用户账户拥有的多个状态对象中,查找对应于状态对象标识的一个状态对象,作为目标状态对象。
在另一种实施方式中,每个用户账户可以拥有多个状态对象,在这种情况下,仅根据登录的用户账户信息无法确定目标状态对象。例如,假设用户账户A拥有时间戳状态对象1、时间戳状态对象2、序列号状态对象1、序列号状态对象2以及其它状态对象,即便可以确定在客户端节点登录的用户账户是用户账户A,但仍然无法确定目标状态对象具体是用户账户A拥有的哪一个状态对象。针对这种情况,客户端节点的用户账户可以制定在目标交易中指定的状态对象的标识,也即状态对象ID,每个状态对象都拥有各自的唯一状态对象标识。这样目标交易中会携带状态对象标识,共识节点在获取到该状态对象标识之后,即可从用户账户A拥有的所有状态对象中,查找出与该状态对象标识对应的那个状态对象,作为目标状态对象。
202、共识节点根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。
共识节点在确定目标交易指定的目标状态对象后,可以获取目标交易中携带的目标排序参数,基于目标排序参数,确定目标交易在该共识节点已接收到的指定目标状态对象的所有交易中的排序。例如,如果目标排序参数是时间戳,则共识节点可以将该时间戳与共识节点已接收到的指定目标状态对象的所有交易的时间戳进行比较,按照时间戳的先后顺序对包含目标交易在内的所有指定目标状态对象的交易进行排序。如果目标排序参数是序列号,则共识节点可以将该序列号与共识节点已接收到的指定目标状态对象的所有交易的序列号进行比较,按照序列号的先后顺序对包含目标交易在内的所有指定目标状态对象的交易进行排序,以此类推。
在本申请实施例的一种实现方式中,目标状态对象还维护排序参数变量;根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,包括:
若目标排序参数与排序参数变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将排序参数变量的数值更新为目标排序参数。
按照前文的描述,状态对象可以维护排序参数变量,客户端节点为目标交易制定的目标排序参数的类型,应该是与目标交易指定的目标状态变量所维护的排序参数变量的类型相同的。因此,共识节点在对目标交易进行排序时,可以将目标排序参数与目标状态对象维护的排序参数变量进行比较,判断它们的关系是否符合预设条件,在符合预设条件的情况下,再根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,之后可以将排序参数变量的数值更新为目标排序参数,也即改变了目标状态对象的状态。
在本申请实施例的一种实现方式中,该方法还包括:
若目标排序参数与排序参数变量的关系不符合预设条件,则拒绝执行目标交易,或者暂停对目标交易的排序。
如果发现目标排序参数与排序参数变量的关系不符合预设条件,则共识节点可以拒绝执行目标交易,或者暂停对目标交易的排序。
作为一个示例,假设目标排序参数为时间戳ts3,目标状态对象是一个时间戳状态对象,其维护的排序参数变量为一个时间戳变量,该时间戳变量的当前数值为ts2。共识节点会判断目标排序参数ts3与排序参数变量ts2是否符合ts3晚于ts2的条件,如果符合,则按照ts3确定目标交易在指定目标状态对象的所有交易中的排序,例如可以按照时间戳的先后顺序进行排序。之后,可以立即更新目标状态对象维护的排序参数变量,或者在等待一定的时间周期后,再更新目标状态对象维护的排序参数变量,具体的更新方式是将该排序参数变量由ts2更新为ts3。如果目标排序参数ts3与排序参数变量ts2不符合ts3晚于ts2的条件,则表示目标交易可能是某个错误制定时间戳的重复交易,共识节点可以拒绝执行目标交易。这种情况共识节点不会对目标交易进行排序,并可以发送相应的提示信息给发起目标交易的客户端节点,指示该客户端节点可以重新制定时间戳发起新的交易。
作为另一个示例,假设目标排序参数为序列号seq3,目标状态对象是一个序列号状态对象,其维护的排序参数变量为一个序列号变量,该序列号变量的当前数值为seq2。共识节点会判断目标排序参数seq3是否为接着排序参数变量seq2的下一个序列号,如果是则表示符合条件,可以按照seq3确定目标交易在指定目标状态对象的所有交易中的排序,例如可以按照序列号的先后顺序进行排序。之后,可以立即更新目标状态对象维护的排序参数变量,或者在等待一定的时间周期后,再更新目标状态对象维护的排序参数变量,具体的更新方式是将该排序参数变量由seq2更新为seq3。如果目标排序参数seq3不是接着排序参数变量seq2的下一个序列号,则表示不符合条件。此时可以分为两种情况,(1)seq3小于seq2,这表示目标交易可能是某个错误制定序列号的重复交易,共识节点可以拒绝执行目标交易。(2)seq3大于接着排序参数变量seq2的下一个序列号,这表示共识节点先接收到了需要靠后执行的目标交易,某个需要在目标交易之前执行的其它交易(其携带的排序参数为接着排序参数变量seq2的下一个序列号)还没被共识节点接收到。针对这种情况,共识节点可以暂停对目标交易的排序,例如,可以先将目标交易暂存在某个区域,之后当接收到该其它交易并对排序参数变量进行更新后,再次获取目标交易的目标排序参数seq3与更新后的排序参数变量进行比较,以此类推。
在本申请实施例的一种实现方式中,排序参数变量包括不同类型的多个变量;在根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序之前,还包括:
(1)根据目标排序参数的类型,确定状态索引;
(2)从不同类型的多个变量中,选取与状态索引对应的目标变量。
若目标排序参数与排序参数变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将排序参数变量的数值更新为目标排序参数,具体为:
若目标排序参数与目标变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将目标变量的数值更新为目标排序参数。
多规则状态机是可以重合的,也即同一个状态对象在不同规则的状态机中可以存在多种状态索引(State Index)。客户端节点在发起交易时,可以选择指定不同规则的状态索引,从而决定使用哪种规则的状态机来执行这个交易。例如,一个状态对象可以同时具有时间戳状态索引(Temporal State Index)和序列号状态索引(Sequential State Index),用户可以发起多笔制定时间戳或制定序列号的交易,制定序列号的交易严格按照序列号的顺序排列执行,制定时间戳的交易根据时间戳的顺序排列执行,可以穿插在制定序列号的交易中提交与执行。在这种情况下,同一个状态对象可以对应多个不同规则的状态机,因此其维护的排序参数变量也可以包括不同类型的多个变量,例如可以同时维护一个时间戳变量和一个序列号变量。假设目标状态对象就是一个这种类型的状态对象,则可以先根据目标排序参数的类型,确定相应的状态索引,例如如果目标排序参数是时间戳,则确定时间戳状态索引,如果目标排序参数是序列号,则确定序列号状态索引。根据状态索引,可以从目标状态对象维护的各个不同类型的变量中,找出一个对应的目标变量,例如如果是时间戳状态索引,则将时间戳变量作为目标变量,如果是序列号状态索引,则将序列号变量作为目标变量。后续具体比较的是目标排序参数和该目标变量,也即如果发现目标排序参数与目标变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。之后,目标状态对象更新的排序参数变量也只是该目标变量(其它的排序参数变量不会更新),也即将目标变量的数值更新为目标排序参数。
如图6所示,为指定存在多种状态索引的状态对象的多笔交易的执行示意图。图6所示的状态对象拥有时间戳和序列号两种状态索引,客户端节点发起的交易Tx1和Tx3使用序列号状态索引更新状态对象,交易Tx2使用时间戳状态索引更新状态对象,最终这三笔交易的执行顺序可以是Tx1->Tx2->Tx3、Tx1->Tx3->Tx2或者Tx2->Tx1->Tx3,也即只需保证Tx3在Tx1之后执行即可。虽然这3笔交易都指定了同一个状态对象,但只有特定的状态变更需要保证先后顺序。
在本申请实施例的一种实现方式中,相关数据为智能合约数据,目标排序参数为优先级参数;根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,包括:
根据优先级参数,确定目标交易在共识节点已接收到的,由各个用户账户发起的指定目标状态对象的所有交易中的排序。
本申请实施例还提出一种特殊类型的状态对象,可称作智能合约状态对象,其维护的相关数据是智能合约的数据,这样每个智能合约都可以构建成一个智能合约状态对象。在智能合约场景中,各个不同的用户账户都可以操作同一个智能合约,也即智能合约状态对象的操作权限并不完全属于创建智能合约的用户账户,区块链中的所有用户账户都可以操作存储智能合约数据的状态对象。因此,无法按照前文描述的时间戳状态变量或者序列号状态变量的方式,来规定所有操作智能合约的交易的执行顺序。假设目标交易指定的目标状态对象是一个智能合约状态对象,则客户端节点为目标交易制定的目标排序参数可以是优先级参数,该优先级参数属于一种排序键值,具体可以是交易Gas Price或者交易优先级等参数,不同用户账户的交易通过制定这些参数来竞争执行交易的顺序。共识节点在接收到目标交易之后,会根据其携带的优先级参数,确定目标交易在共识节点已接收到的,由各个用户账户发起的指定目标状态对象(也即该智能合约状态对象)的所有交易中的排序。需要注意的是,这里进行排序的交易可以是由各个不同的用户账户发起的指定同一个智能合约状态对象的交易,这些交易可能来自于不同的客户端节点,每个用户账户都制定各自的优先级参数,共识节点根据优先级参数的大小对这些交易进行排序。
由于智能合约状态对象不被任何一个用户账户单独持有,各个用户账户都可以发起指定智能合约状态对象的交易来更新智能合约状态对象记录的智能合约数据,故对于智能合约状态对象的操作一般是没有时间戳或者序列号等顺序约束的,通常采用“价高者得”的方式,Gas Price等优先级参数更高的交易能够优先地执行以更改智能合约状态对象的状态。然而,针对单个用户账户来说,其可能对于操作同一个智能合约有先后顺序的要求,为满足该要求,本申请实施例提出代理状态对象(Agential State Object)的概念。代理状态对象本身不属于一种新的状态对象,其本质上可以是用户账户拥有的时间戳状态对象或者序列号状态对象。按照前文描述的方式,用户账户可以通过指定时间戳状态对象或者序列号状态对象的方式,限制自身发起的多笔交易的执行顺序。那么,当用户账户想要限制多笔操作同一个智能合约的交易的执行顺序时,只需分别为每笔交易制定相应的排序参数(例如时间戳或序列号),然后令这些交易都指定同一个时间戳状态对象或者序列号状态对象即可,这里指定的状态对象就成为代理状态对象。如图7所示,为通过代理状态对象执行合约交易的操作示意图。假设某个用户账户想按照顺序操作同一个智能合约状态对象,则可以创建一个代理状态对象,然后令操作智能合约状态对象的多个交易都指定该代理状态对象,并制定每个交易的排序参数,例如构造排序参数分别为seq1、seq2和seq3的3个交易Tx1、Tx2和Tx3。这样通过该代理状态对象可以限制交易按照Tx1->Tx2->Tx3的顺序提交执行,也即实现了按照顺序操作同一个智能合约状态对象的效果,另外还可以通过代理状态对象来执行智能合约状态对象的数据变更。
为了更好地接收和排序各个客户端节点发送的交易,共识节点可以使用带有多规则索引(Multi-Rule Index)的交易缓存池(Transaction Pool),通过该交易缓存池来接收与排序各个交易。多规则索引的各级索引可以具有不同的优先级,通常情况下,非状态规则下的交易属性,例如交易Gas Price和交易优先级等具有更高的排序优先级,也即交易GasPrice和交易优先级更高的交易会排序在前面,优先打包和提交执行。采用不同状态规则(例如时间戳或序列号)的交易通常可以具有相同的排序优先级,如果这些交易的非状态规则的各项属性都相同,则可以使用FIFO(即先进先出)的顺序来排列这些优先级相同的交易。
如图8所示,为通过多规则索引的方式决定交易排序优先级的示意图。在图8中,由上往下的排序优先级依次降低,可以看出交易优先级最高的交易具有最高的排序优先级,然后是具有相同排序优先级的不同状态规则的交易,例如通过时间戳排序的交易,通过序列号排序的交易,等等。最后,利用FIFO的规则进行完善。
相同规则下的交易使用规则中定义的排序参数来排列交易,例如时间戳规则下的交易根据时间戳的大小,时间戳越晚的交易的排序优先级更低,其越晚被打包提交。序列号规则下的交易根据交易设置的序列号排序,序列号更大的交易的排序优先级更低,并且只有在其序列号减1的交易被提交后才可以被提交。
共识节点按照上述多规则索引的方式,可以确定接收到的由各个不同客户端节点发送的所有交易的排序,然后按照该排序对这些交易进行打包、提交和执行。
在本申请实施例中,区块链的某个客户端节点在发起某个目标交易时,可以设置目标交易指定的目标状态对象以及携带的目标排序参数,目标状态对象维护着目标交易的相关数据。当共识节点接收到目标交易后,可以根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。通过这样设置,假设某个客户端节点想要限制其发起的一部分交易的执行顺序,则只需要设置该部分交易都指定同一个状态对象且分别为每个交易设置相应的不同排序参数,然后将该部分交易都发送给共识节点。共识节点在接收到该部分交易后,由于发现它们都指定同一个状态对象,因此会按照每个交易携带的排序参数对它们进行排序,可见实现了对接收到的交易进行灵活而有效的排序。
综上所述,本申请实施例提供的交易排序方法能够满足多种交易执行顺序的业务需求,并且是可扩展的,用户可以制定各种不同排序规则的状态对象,区块链***同时支持多种交易排序规则与相应的多种规则的状态机机制,对交易的排序控制十分灵活,同时也提升了交易执行的并发能力。
应理解,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上面主要描述了一种区块链的交易排序方法,下面将对一种区块链的交易排序装置进行描述。
请参阅图9,示出了本申请实施例提供的一种区块链的交易排序装置,该装置应用于区块链设有的共识节点,包括:
交易接收模块901,用于当接收到区块链的客户端节点发送的携带目标排序参数的目标交易时,确定目标交易指定的目标状态对象;其中,目标状态对象维护目标交易的相关数据;
交易排序模块902,用于根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序。
在本申请实施例的一种实现方式中,交易接收模块包括:
用户账户确定单元,用于确定于客户端节点登录的用户账户;
状态对象确定单元,用于将用户账户拥有的状态对象,确定为目标状态对象。
在本申请实施例的一种实现方式中,用户账户拥有多个状态对象,目标交易还携带状态对象标识;状态对象确定单元包括:
状态对象查找子单元,用于从用户账户拥有的多个状态对象中,查找对应于状态对象标识的一个状态对象,作为目标状态对象。
在本申请实施例的一种实现方式中,目标状态对象还维护排序参数变量;交易排序模块包括:
第一交易排序单元,用于若目标排序参数与排序参数变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将排序参数变量的数值更新为目标排序参数。
在本申请实施例的一种实现方式中,交易排序模块还包括:
交易拒绝单元,用于若目标排序参数与排序参数变量的关系不符合预设条件,则拒绝执行目标交易,或者暂停对目标交易的排序。
在本申请实施例的一种实现方式中,排序参数变量包括不同类型的多个变量;交易排序模块还包括:
状态索引确定单元,用于根据目标排序参数的类型,确定状态索引;
目标变量选取单元,用于从不同类型的多个变量中,选取与状态索引对应的目标变量;
交易排序单元具体用于:若目标排序参数与目标变量的关系符合预设条件,则根据目标排序参数,确定目标交易在共识节点已接收到的指定目标状态对象的所有交易中的排序,并将目标变量的数值更新为目标排序参数。
在本申请实施例的一种实现方式中,相关数据为智能合约数据,目标排序参数为优先级参数;交易排序模块包括:
第二交易排序单元,用于根据优先级参数,确定目标交易在共识节点已接收到的,由各个用户账户发起的指定目标状态对象的所有交易中的排序。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所描述的区块链的交易排序方法。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在电子设备上运行时,使得电子设备执行如上述任一实施例所描述的区块链的交易排序方法。
图10是本申请一实施例提供的电子设备的示意图。如图10所示,该实施例的电子设备10包括:处理器100、存储器101以及存储在所述存储器101中并可在所述处理器100上运行的计算机程序102。所述处理器100执行所述计算机程序102时实现上述各个区块链的交易排序方法的实施例中的步骤,例如图2所示的步骤201至202。或者,所述处理器100执行所述计算机程序102时实现上述各装置实施例中各模块/单元的功能,例如图9所示模块901至902的功能。
所述计算机程序102可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器101中,并由所述处理器100执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序102在所述电子设备10中的执行过程。
所称处理器100可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器101可以是所述电子设备10的内部存储单元,例如电子设备10的硬盘或内存。所述存储器101也可以是所述电子设备10的外部存储设备,例如所述电子设备10上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器101还可以既包括所述电子设备10的内部存储单元也包括外部存储设备。所述存储器101用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器101还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种区块链的交易排序方法,其特征在于,应用于区块链设有的共识节点,所述方法包括:
当接收到所述区块链的客户端节点发送的携带目标排序参数的目标交易时,确定所述目标交易指定的目标状态对象;其中,所述目标状态对象维护所述目标交易的相关数据;
根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序。
2.如权利要求1所述的方法,其特征在于,所述确定所述目标交易指定的目标状态对象,包括:
确定于所述客户端节点登录的用户账户;
将所述用户账户拥有的状态对象,确定为所述目标状态对象。
3.如权利要求2所述的方法,其特征在于,所述用户账户拥有多个状态对象,所述目标交易还携带状态对象标识;所述将所述用户账户拥有的状态对象,确定为所述目标状态对象,包括:
从所述用户账户拥有的多个状态对象中,查找对应于所述状态对象标识的一个状态对象,作为所述目标状态对象。
4.如权利要求1至3任一项所述的方法,其特征在于,所述目标状态对象还维护排序参数变量;所述根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序,包括:
若所述目标排序参数与所述排序参数变量的关系符合预设条件,则根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序,并将所述排序参数变量的数值更新为所述目标排序参数。
5.如权利要求4所述的方法,其特征在于,还包括:
若所述目标排序参数与所述排序参数变量的关系不符合预设条件,则拒绝执行所述目标交易,或者暂停对所述目标交易的排序。
6.如权利要求4所述的方法,其特征在于,所述排序参数变量包括不同类型的多个变量;在所述根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序之前,还包括:
根据所述目标排序参数的类型,确定状态索引;
从所述不同类型的多个变量中,选取与所述状态索引对应的目标变量;
所述若所述目标排序参数与所述排序参数变量的关系符合预设条件,则根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序,并将所述排序参数变量的数值更新为所述目标排序参数,具体为:
若所述目标排序参数与所述目标变量的关系符合预设条件,则根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序,并将所述目标变量的数值更新为所述目标排序参数。
7.如权利要求1所述的方法,其特征在于,所述相关数据为智能合约数据,所述目标排序参数为优先级参数;所述根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序,包括:
根据所述优先级参数,确定所述目标交易在所述共识节点已接收到的,由各个用户账户发起的指定所述目标状态对象的所有交易中的排序。
8.一种区块链的交易排序装置,其特征在于,应用于区块链设有的共识节点,所述装置包括:
交易接收模块,用于当接收到所述区块链的客户端节点发送的携带目标排序参数的目标交易时,确定所述目标交易指定的目标状态对象;其中,所述目标状态对象维护所述目标交易的相关数据;
交易排序模块,用于根据所述目标排序参数,确定所述目标交易在所述共识节点已接收到的指定所述目标状态对象的所有交易中的排序。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的区块链的交易排序方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的区块链的交易排序方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410006430.8A CN117527832A (zh) | 2024-01-03 | 2024-01-03 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410006430.8A CN117527832A (zh) | 2024-01-03 | 2024-01-03 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117527832A true CN117527832A (zh) | 2024-02-06 |
Family
ID=89749748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410006430.8A Pending CN117527832A (zh) | 2024-01-03 | 2024-01-03 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117527832A (zh) |
Citations (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103282900A (zh) * | 2010-10-27 | 2013-09-04 | 苹果公司 | 基于语言环境的索引和搜索方法 |
CN106780025A (zh) * | 2016-11-30 | 2017-05-31 | 中国银行股份有限公司 | 区块链中数字资产的转移方法、装置及*** |
CN108512775A (zh) * | 2018-04-16 | 2018-09-07 | 杭州秘猿科技有限公司 | 一种排序交易队列的方法及装置 |
CN110544095A (zh) * | 2019-09-03 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 区块链网络的交易处理方法及区块链网络 |
CN110915166A (zh) * | 2017-07-14 | 2020-03-24 | 微软技术许可有限责任公司 | 区块链 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
CN111008402A (zh) * | 2018-10-08 | 2020-04-14 | 国际商业机器公司 | 区块链时间戳协定 |
CN111241589A (zh) * | 2018-11-29 | 2020-06-05 | 华为技术有限公司 | 一种数据库***、节点和方法 |
CN112036848A (zh) * | 2020-08-21 | 2020-12-04 | 山东爱城市网信息技术有限公司 | 一种交易顺序公平性区块链共识算法的实现方法 |
CN112269423A (zh) * | 2020-12-21 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 一种锁定区块链***中全局时钟的方法及区块链*** |
CN112818014A (zh) * | 2020-12-31 | 2021-05-18 | 杭州趣链科技有限公司 | 区块链数据解析方法、装置和电子设备 |
CN112883015A (zh) * | 2021-04-23 | 2021-06-01 | 北京中科金财科技股份有限公司 | 区块链数据管理方法、设备及存储介质 |
CN113362062A (zh) * | 2021-05-21 | 2021-09-07 | 山东大学 | 一种区块链交易排序方法、存储介质及设备 |
CN113537991A (zh) * | 2021-09-16 | 2021-10-22 | 中国信息通信研究院 | 一种跨链交易有序执行方法和跨链*** |
CN113656510A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链***中执行交易的方法及装置 |
CN113656504A (zh) * | 2021-08-23 | 2021-11-16 | 武汉科技大学 | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
CN113743940A (zh) * | 2021-11-04 | 2021-12-03 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN113901138A (zh) * | 2021-09-27 | 2022-01-07 | 浪潮云信息技术股份公司 | 一种基于MuSig2的区块链交易多方背书方法及*** |
CN114036577A (zh) * | 2021-11-09 | 2022-02-11 | 南京大学 | 一种面向联盟链的监管方法及监管数字孪生模型 |
US20220084128A1 (en) * | 2019-04-16 | 2022-03-17 | Erich Lawson Spangenberg | System and method for providing patent title insurance with centralized and distributed data architectures |
CN114862589A (zh) * | 2022-07-07 | 2022-08-05 | 中国长江三峡集团有限公司 | 一种基于区块链的交易数据处理方法、装置及电子设备 |
CN115170312A (zh) * | 2022-07-07 | 2022-10-11 | 中国银行股份有限公司 | 区块链上资产状态信息变更方法及装置 |
CN115827773A (zh) * | 2022-09-13 | 2023-03-21 | 广州市汇方锐展计算机技术服务有限公司 | 数据处理***及其仓储业务单据的处理方法、存储介质 |
WO2023040453A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 一种交易信息处理方法及装置 |
CN116361385A (zh) * | 2022-09-01 | 2023-06-30 | 矩阵时光数字科技有限公司 | 一种区块链的共识方法及*** |
CN116455974A (zh) * | 2023-04-10 | 2023-07-18 | 网易(杭州)网络有限公司 | 交易缓存及排序的方法、装置、电子设备和存储介质 |
US20230245080A1 (en) * | 2020-04-21 | 2023-08-03 | Michael Anderson | Convergent Consensus Method for Distributed Ledger Transaction Processing |
CN116977067A (zh) * | 2023-01-31 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
-
2024
- 2024-01-03 CN CN202410006430.8A patent/CN117527832A/zh active Pending
Patent Citations (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103282900A (zh) * | 2010-10-27 | 2013-09-04 | 苹果公司 | 基于语言环境的索引和搜索方法 |
CN106780025A (zh) * | 2016-11-30 | 2017-05-31 | 中国银行股份有限公司 | 区块链中数字资产的转移方法、装置及*** |
CN110915166A (zh) * | 2017-07-14 | 2020-03-24 | 微软技术许可有限责任公司 | 区块链 |
CN108512775A (zh) * | 2018-04-16 | 2018-09-07 | 杭州秘猿科技有限公司 | 一种排序交易队列的方法及装置 |
CN112868210A (zh) * | 2018-10-08 | 2021-05-28 | 国际商业机器公司 | 区块链时间戳协议 |
CN111008402A (zh) * | 2018-10-08 | 2020-04-14 | 国际商业机器公司 | 区块链时间戳协定 |
CN111241589A (zh) * | 2018-11-29 | 2020-06-05 | 华为技术有限公司 | 一种数据库***、节点和方法 |
US20220084128A1 (en) * | 2019-04-16 | 2022-03-17 | Erich Lawson Spangenberg | System and method for providing patent title insurance with centralized and distributed data architectures |
CN110544095A (zh) * | 2019-09-03 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 区块链网络的交易处理方法及区块链网络 |
CN110933108A (zh) * | 2019-09-26 | 2020-03-27 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 |
US20230245080A1 (en) * | 2020-04-21 | 2023-08-03 | Michael Anderson | Convergent Consensus Method for Distributed Ledger Transaction Processing |
CN112036848A (zh) * | 2020-08-21 | 2020-12-04 | 山东爱城市网信息技术有限公司 | 一种交易顺序公平性区块链共识算法的实现方法 |
CN112269423A (zh) * | 2020-12-21 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 一种锁定区块链***中全局时钟的方法及区块链*** |
CN112818014A (zh) * | 2020-12-31 | 2021-05-18 | 杭州趣链科技有限公司 | 区块链数据解析方法、装置和电子设备 |
CN112883015A (zh) * | 2021-04-23 | 2021-06-01 | 北京中科金财科技股份有限公司 | 区块链数据管理方法、设备及存储介质 |
CN113362062A (zh) * | 2021-05-21 | 2021-09-07 | 山东大学 | 一种区块链交易排序方法、存储介质及设备 |
CN113656504A (zh) * | 2021-08-23 | 2021-11-16 | 武汉科技大学 | 一种基于时序属性的区块链交易提交、编辑和查询方法 |
CN113656510A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链***中执行交易的方法及装置 |
WO2023040453A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 一种交易信息处理方法及装置 |
CN113537991A (zh) * | 2021-09-16 | 2021-10-22 | 中国信息通信研究院 | 一种跨链交易有序执行方法和跨链*** |
CN113901138A (zh) * | 2021-09-27 | 2022-01-07 | 浪潮云信息技术股份公司 | 一种基于MuSig2的区块链交易多方背书方法及*** |
CN113743940A (zh) * | 2021-11-04 | 2021-12-03 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN114036577A (zh) * | 2021-11-09 | 2022-02-11 | 南京大学 | 一种面向联盟链的监管方法及监管数字孪生模型 |
CN114862589A (zh) * | 2022-07-07 | 2022-08-05 | 中国长江三峡集团有限公司 | 一种基于区块链的交易数据处理方法、装置及电子设备 |
CN115170312A (zh) * | 2022-07-07 | 2022-10-11 | 中国银行股份有限公司 | 区块链上资产状态信息变更方法及装置 |
CN116361385A (zh) * | 2022-09-01 | 2023-06-30 | 矩阵时光数字科技有限公司 | 一种区块链的共识方法及*** |
CN115827773A (zh) * | 2022-09-13 | 2023-03-21 | 广州市汇方锐展计算机技术服务有限公司 | 数据处理***及其仓储业务单据的处理方法、存储介质 |
CN116977067A (zh) * | 2023-01-31 | 2023-10-31 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116455974A (zh) * | 2023-04-10 | 2023-07-18 | 网易(杭州)网络有限公司 | 交易缓存及排序的方法、装置、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
毕马威: "区块链, 通往未来的机遇", 软件与集成电路, no. 11, 30 November 2018 (2018-11-30), pages 33 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO1991010191A1 (en) | Object oriented distributed processing system | |
CN111858055B (zh) | 任务处理方法、服务器及存储介质 | |
CN110033206A (zh) | 物料清单自动校核方法及装置 | |
CN106844405A (zh) | 数据查询方法和装置 | |
US7698312B2 (en) | Performing recursive database operations | |
US20140059000A1 (en) | Computer system and parallel distributed processing method | |
CN104598299A (zh) | 用于对每条接收数据执行聚合处理的***和方法 | |
CN110290166A (zh) | 跨集群数据交互方法、***、装置及可读存储介质 | |
EP0731947B1 (en) | A method and device for extracting data from a group of data | |
WO2024113996A1 (zh) | 一种对主机io处理的优化方法、装置、设备及非易失性可读存储介质 | |
EP3018581A1 (en) | Data staging management system | |
CN115310906A (zh) | 拣货任务的建立方法、装置、设备及计算机可读存储介质 | |
CN117527832A (zh) | 一种区块链的交易排序方法、装置、电子设备和存储介质 | |
CN111259045B (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN108153260A (zh) | 一种基于互联网的离散智能制造***控制终端 | |
CN114238328A (zh) | 数据分页查询方法、装置、设备及存储介质 | |
CN113901076A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN111339422A (zh) | 推荐***任务管理平台、推荐方法及*** | |
CN114547184A (zh) | 人员信息同步方法、终端设备及存储介质 | |
CN103135703B (zh) | 一种用于快速读取现场可更换单元信息的方法 | |
CN115210694A (zh) | 数据传输方法及装置 | |
CN112965925B (zh) | 一种通信方法、通信装置、主设备及从设备 | |
CN117608795A (zh) | 一种争抢模式的任务处理方法及装置 | |
EP4202675A1 (en) | Information processing device, information processing method, and information processing program | |
CN113360452A (zh) | 分布式文件生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |