区块链交易提交排序的制作方法

文档序号:19816569发布日期:2020-01-31 19:21阅读:245来源:国知局
区块链交易提交排序的制作方法

本申请总体上涉及交易排序,更具体地,涉及区块链交易提交排序。



背景技术:

区块链可被用作公共分类帐来存储任何类型的信息。尽管区块链主要用于金融交易,但它可将包括资产(即,产品、包裹、服务、状态等)的任何类型的信息存储在其不可改变的分类帐中。去中心化方案将权限和信任转移到分散网络,并使其节点能够连续地和顺序地将其交易记录在公共“块”上,从而创建被称为区块链的唯一"链"。经由散列码的密码学用于确保交易源的身份验证,并且消除了对中央中介的需求。

密码学和区块链技术的组合一起确保了不会存在相同交易的重复记录。现代处理器可以无序地执行指令(ooo),然而,这个概念和处理器所做的是两个不同的主题,因为即使所有需要执行的是数据依赖性的降低,处理器必须总是保持有序执行的架构假象。



技术实现要素:

一个示例实施例可以包括以下一个或多个:识别要提交(committed)给区块链的多个新交易;确定多个新交易中的任何一个是否包括与多个新交易中的任何其他交易的数据依赖性;以及响应于该确定,发送提供对多个新交易的验证的多个消息。

另一示例实施例可以包括一种设备,该设备包括处理器,被配置为执行以下一个或多个:识别要提交给区块链的多个新交易,确定多个新交易中的任何一个是否包括与多个新交易中的任何其他交易的数据依赖性;以及发射机,被配置成响应于该确定而发送指示继续进行多个新交易的验证的多个消息。

另一示例实施例可以包括一种非暂时性计算机可读存储介质,其被配置为存储指令,该指令在被执行时使处理器执行以下一个或多个:识别要提交给区块链的多个新交易,确定多个新交易中的任何一个是否包括与多个新交易中的任何其他交易的数据依赖关系,以及响应于该确定,发送指示继续进行多个新交易的验证的多个消息。

附图说明

图1示出了交易处理配置,该交易处理配置示出了根据示例实施例的用于区块链中的交易的无序指令时序与非无序指令时序之间的差异;

图2示出了根据示例实施例的交易排序逻辑配置;

图3示出了根据示例实施例的交易排序计算设备、排序模块和区块链之间的交互的系统消息图;

图4a示出了根据示例实施例的在区块链中管理交易排序的示例方法的流程图;

图4b示出了根据示例实施例的在区块链中管理交易排序的示例方法的另一流程图;

图5示出了被配置为支持一个或多个示例实施例的示例网络实体。

具体实施方式

将容易地理解,如本文的一般性描述和附图中示出的,即时组件可以以多种不同的配置来布置和设计。因此,对方法、设备、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述,如附图所示,并非旨在限制所要求保护的本申请的范围,而是仅代表所选实施例。

在整个说明书中描述的即时特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。例如,在整个说明书中,短语“示例实施例”,“一些实施例”或其他类似语言的使用是指结合该实施例描述的特定特征、结构或特性可以包括在至少一个实施例中的事实。因此,在整个说明书中,短语“示例实施例”,“在一些实施例中”,“在其他实施例中”或其他类似语言的出现不一定都指同一组实施例,并且所描述的特征、结构或者特性,可以以任何合适的方式组合在一个或多个实施例中。

另外,尽管在实施例的描述中可能已经使用术语“消息”,但是本申请可以应用于许多类型的网络数据,诸如分组、帧、数据包等。术语“消息”还包括分组、帧、数据包及其任何等同形式。此外,尽管在示例性实施例中可以描绘某些类型的消息和信令,但是它们不限于特定类型的消息,并且本申请不限于特定类型的信令。

在一个实施例中,本申请涉及区块链交易排序的管理,并且在另一实施例中,涉及识别待处理的交易并确定交易之间的关系以优化交易提交排序。

示例实施例提供了用于区块链网络架构的新模块,该架构将使区块链网络能够有效地运行,而与待处理交易之间的数据依赖性无关,以优化网络速度、处理效率和其他计算资源。根据一个示例,排序模块可以是交易服务器的一部分,该交易服务器接收交易并缓存交易以及用于分析那些交易之间的数据依赖性的待处理指令。如果没有识别出数据依赖性,则指令继续进行以同时转发用于验证的指令,并且可以无序执行交易的提交。这种方法优化了指令处理时间。

图1示出了交易处理配置,该交易处理配置示出了根据示例实施例的用于区块链中的交易的无序指令时序与非无序指令时序之间的差异。参照图1,配置100包括有序(非无序)和无序交易处理的示例。参考具有交易112-124(a-f)的示例,无序指令允许在继续处理其他指令之前绕过那些等待先前的指令首先提交交易。在图100中,指令的大小不反映指令的数量,因为该大小仅是用于说明花费在该特定交易/指令上的时间的指示器。“有序”指令的大小与它们在相似的时间内被顺序处理的时间大小大致相同,而无序指令则是重叠且异步的,执行时间可能会有所不同。在“无序”模型中,因为待处理排序模块用于处理交易(请参见图1),f124的指令需要等待交易b114的指令完成。此外,分析数据依赖性,并且如果在d118和f124的指令之间存在数据依赖性,则使用信号来等待所有先前的指令提交。在这种情况下,b114的指令是继续进行提交之前要等待的最后一条指令。在有序方法中或在没有无序指令序列的情况下,用于交易a132,b134和c136的指令是按顺序处理的,而无需任何类型的并行处理、异步处理和/或同时用于提交交易的处理。各种交易可以根据它们与数据有关的指令进行标识并进行修改。例如,待处理排序模块检测到与某些数据有关的交易a到e的指令,但只有d和f被检测到有数据冲突。

如果没有ooo处理,则按以下顺序提交交易:a、b、c、d、e、f。应用ooo交易管理支持,按以下顺序提交交易:a、c、e、d、b、f。使用ooo的交易可以遵循以下过程:对等节点将交易的开始以及周围数据中受该交易影响的数据发布给下一个对等节点。交易经过对等节点的共识,一旦获得批准,便会在本地添加到区块链中。哈希实现或具体如何无序链接交易,而区块链的“总体”结果相同,将因实现而不同。

图2示出了根据示例实施例的交易排序逻辑配置。参照图2,示例图示200提供了排序模块212,其将用于提交交易的提交指令214提供给待处理排序模块222。待处理排序模块222的提交指令224可以与原始交易的排序模块212不同。所有其他节点250也能够将指令传送到待处理排序模块222。待处理排序模块222跟踪所有待处理指令及其状态(例如,待处理发送以达成共识,待处理共识,待处理提交到区块链)。待处理发送是最不成熟的状态,待处理共识是第二,待处理提交到区块链是已达成共识并正在等待最后定案的内容。

排序模块212跟踪所有已经存在的先前提交的指令的状态。指令根据用户输入开始生命周期,以执行一些预定义的操作(例如,请求入股、转让汽车、购买房屋、输入抵押信息等)。然后,这些命令通过智能合约转换为区块链指令,并且指令包括具有明确定义的数据位置的读取和/或写入数据位置,然后将其输入到待处理排序模块222中。在待处理排序模块222中,分析指令的数据位置以得到数据依赖性。如果清除了指令以继续进行,则将它们按顺序发送出去以达成共识,然后无序返回,并以无特定顺序提交给区块链。如果存在数据依赖性,则将指令标记为白后续指令之前,等待所有先前的指令先提交。

有两类数据相关性,包括:读取后写入和写入后写入。读取后写入指令最终读取旧数据,因为已将更新的指令分派到其他节点,但尚未通过共识机制返回。结果,较新的指令错误地读取了旧的值,并且在提交了较旧的指令后,较新的指令可能会继续执行。在写入后写入依赖关系中,以正确的顺序分派了两条指令,但较年轻的/较新的指令先提交并写入,然后再执行较旧的指令。在这种情况下,如果两条指令都写入相同的数据位置,则会发生数据不规则的情况。为了处理数据依赖性,可以命令较年轻的指令等待与它们冲突的较旧的指令首先提交,该较旧的指令包括以下所有指令。如图1所示,在指令b114和f124之间存在数据依赖性,或更具体地说,指令f124从指令b114写入的数据位置读取。结果,指令f124被迫等待指令b114和所有后序的指令才能提交。

通常,当存在数据依赖性时,指令被标记为在提交之前等待所有先前的指令提交。如果数据指令相关或相互影响的数据之间存在冲突,例如上述例子中d与f之间的冲突,则f在提交d之前不会进入“待处理发送共识”阶段。这样,我们避免了潜在的共识问题。当客户端将交易提交给对等节点时,对等节点使待处理排序模块能够扫描数据依赖关系,并且如果当前处于待处理共识或提交状态的任何交易之间不存在数据依赖关系,则该交易也会发出共识和提交,这些提交可能会无序提交。如果新交易确实与任何“正在处理”的交易/指令冲突(由于交易包括可辨别的指令,这些术语可以互换使用),然后将该交易添加到队列中以等待所有“正在处理”的指令完成。提交所有“处理中”的交易后,将检索排队的交易以进行提交,并且整个过程将重新启动。可以提供排序的一个示例:如果a向位置1234写入并且b从位置1234读取,则a必须“等待”,以便在开始b之前完全接受共识和提交,因为b从1234开始读取,并且共识将基于从1234读取的结果。这种ooo考虑是当有多于一个交易待提交时可能发生的许多可能性之一。

图3示出了根据示例实施例的交易排序计算设备、排序模块和区块链之间的交互的系统消息图300。参照图3,系统300可以包括多个组件或模块,其可以包括软件、硬件或两者的组合。组件可以包括第一组件,例如交易服务器310,其可以是负责输出交易、指令或其他通信信号的机器。第二组件,例如排序模块320,可以是图2的模块之一或两者,并且可以是交易服务器310的一部分。排序模块320的目的是管理用于交易管理和提交的指令。在操作中,新的交易312可以被识别并排队等待处理。可以将交易连同用于寻求共识、对交易进行排序、识别依赖关系并将交易提交给第三组件(诸如区块链330)的指令一起进行缓存。首先根据交易的接收顺序来对交易进行缓存314。该排序和指令可能会规定各种重新排序程序。下一操作是识别交易之间的数据依赖性316。从每个交易中识别动作318,并且将彼此依赖的那些动作识别为具有依赖性。然后创建排序或重新排序指令324并将其转发324到排序模块320,以便可以提交交易326并转发328到区块链330。

在一个实施例中,第一组件、第二组件和第三组件可以是单独的设备,例如服务器、计算机或其他计算设备,或者可以是单个设备。在其他实施例中,第一组件和第二组件可以被封装为单个设备或作为单个设备执行,第一组件和第三组件可以被封装为单个设备或作为单个设备执行,并且第二组件和第二组件可以封装为单个设备或作为单个设备执行。组件或设备310、320和330可以以有线或无线方式直接连接或可通信地彼此耦合,并且可以位于本地和/或远程。

图4a示出了根据示例实施例的示例的流程图400,该示例的流程图400可以包括管理区块链中的交易排序。参照图4a,该示例可以包括以下一项或多项:识别要提交给区块链的多个新交易412;确定多个新交易中的任何一个是否包括与多个新交易中的任何其他交易的数据依赖性414。响应于确定在任何新交易之间不存在数据依赖性,发送指示继续进行多个新交易的验证的多个消息416。可以同时发送多个消息。该方法可以包括:响应于确定在任何新交易之间不存在数据依赖性,在包括存储器以存储多个新交易的排序模块中,按照时间顺序对多个新交易进行缓存,以及对多个新交易中的一个或多个其他交易以时间顺序提交一个或多个新交易。该方法还可以包括:识别从多个区块链交易中识别出的一个或多个动作;以及创建与一个或多个动作相对应的一条或多条指令。该方法还可以提供将一条或多条指令转发到排序模块,以使得一条或多条指令包括读取和写入数据位置,并且基于一条或多条指令来提交多个交易。该方法还可以包括:识别多个交易之间的一个或多个数据依赖性;以及标记一条或多条指令以等待直到所有先前创建的指令与提交的交易相关联的时间。数据依赖关系包括在两个或多个交易中识别的同一产品中的一个或多个,以及后续交易的共同方。

图4b示出了根据示例实施例的示例的另一流程图450,其可以包括管理区块链中的交易排序。该示例可以包括以下一项或多项:识别要提交给区块链的多个新交易452;确定多个新交易中的任何一个是否包括与多个新交易中的任何其他交易的数据依赖性454。响应于确定在多个交易中的两个或多个之间存在至少一个数据依赖性,提交具有至少一个数据依赖性的两个或多个交易中较早的时间戳交易456,并拒绝具有至少一个数据相关性的两个或多个交易中较晚的时间戳的交易458。

在该示例中,标识了数据依赖性并且还标识了交易的时间顺序。结果,当两个或多个交易具有数据依赖性并且没有共同的时间戳(即不同的创建时间)时,允许较早排队或接收的交易被提交,并且共享相同数据依赖性的任何其他交易将被暂停或拒绝,以等待有额外资源可用于满足交易需求的证据。

以上实施例可以以硬件、以处理器执行的计算机程序、以固件或以上述的组合来实现。计算机程序可以嵌入在诸如存储介质的计算机可读介质上。例如,计算机程序可以驻留在随机存取存储器(“ram”)、闪存、只读存储器(“rom”)、可擦除可编程只读存储器(“eprom”)、电可擦除可编程只读存储器(“eeprom”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“cd-rom”)或本领域已知的任何其他形式的存储介质中。

示例性存储介质可以被耦合到处理器,使得处理器可以从该存储介质读取信息,并且可以向该存储介质写入信息。或者,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在专用集成电路(“asic”)中。在替代方案中,处理器和存储介质可作为分立组件驻留。例如,图5示出了示例性网络元件500,其可以表示或集成在任何上述组件等中。

如图5所示,存储器510和处理器520可以是网络实体500的分立组件,用于执行如本文所述和所示的应用程序或一组操作。可以用处理器520理解的计算机语言以软件对应用程序进行编码,并且将其存储在诸如存储器510之类的计算机可读介质中。计算机可读介质可以是包括有形硬件组件的非暂时性计算机可读介质,例如可以存储软件的内存。此外,软件模块530可以是作为网络实体500的一部分的另一分立实体,并且其包含可以由处理器520执行以实现本文描述的一个或多个功能的软件指令。除了网络实体500的上述组件之外,网络实体500还可具有被配置为接收和发送通信信号(未示出)的发射机和接收机对。

尽管在附图中示出并在前述详细描述中描述了系统、方法和非暂时性计算机可读介质中的至少一个的示例性实施例,但是应当理解,本申请不限于所述公开的实施例,而且能够进行如所附权利要求书所阐述和定义的许多重新布置、修改和替换。例如,各个附图的系统的能力可以由本文描述的模块或组件中的一个或多个或以分布式架构来执行,并且可以包括发射机、接收机或两者的对。例如,由各个模块执行的全部或部分功能可以由这些模块中的一个或多个来执行。此外,本文描述的功能可以在模块或组件内部或外部的各种时间并且与各种事件相关地执行。而且,可以经由以下各项中的至少一项在各个模块之间发送各种模块之间发送的信息:数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或通过多种协议。而且,由任何模块发送或接收的消息可以直接和/或经由一个或多个其他模块发送或接收。

本领域技术人员将理解,本发明的“系统”或一个或多个组件或元件可以体现为个人计算机、服务器、控制台、个人数字助理(pda)、蜂窝电话、平板电脑计算设备、智能手机或任何其他合适的计算设备或设备组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,可以以与计算技术一致的局部和分布式形式来实现本文公开的方法、系统和装置。

应该注意的是,在本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可以被实现为包括定制超大规模集成电路(vlsi)电路或门阵列,诸如逻辑芯片、晶体管或其他分立组件的现成半导体的硬件电路。模块也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等的可编程硬件设备中实现。

模块也可以至少部分地以软件来实现以由各种类型的处理器执行。所标识的可执行代码单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、过程或功能。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时,就包括该模块并实现该模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(ram)、磁带或用于存储数据的任何其他介质。

实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在多个不同的代码段、不同的程序之间以及跨多个存储设备。类似地,操作数据可以在这里在模块内被识别和示出,并且可以以任何合适的形式来体现并且可以组织在任何合适的类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。

将容易理解,如本文的一般性描述和附图中示出的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述并非旨在限制本申请所要求保护的范围,而仅是本申请的所选实施例的代表。

本领域的普通技术人员将容易地理解,可以用不同顺序的步骤、组合的步骤、省略的步骤和/或与配置不同于已公开的硬件元件来实践上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员显而易见的是,某些修改、变型和替代构造将是显而易见的。

尽管已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅是说明性的,并且在一个实施例中,当以对其等同物和修改(例如协议、硬件设备、软件平台等)的全范围考虑时,本申请的范围应由所附权利要求书限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1