区块链机器网络加速引擎的制作方法

未命名 09-09 阅读:109 评论:0


1.本公开的示例整体涉及用于区块链中的节点的硬件加速器。


背景技术:

2.hyperledger fabric是用于许可区块链的开源、企业级实施平台。hyperledger fabric中的交易流遵循执行-排序-校验(execute-order-validate)模型,其中首先执行交易,然后将其排序到区块中,最后校验并且提交给分类账(连同状态数据库一起以保持迄今为止提交的区块的全局状态)。因此,fabric网络包括不同类型的节点,诸如对等者(peer)、排序者(orderer)、客户(client)等,其中每个节点具有由成员资格服务提供商(msp)提供的身份。
3.许可区块链(如hyperledger fabric、quorum、corda等)是需要访问权限才能加入的区块链网络。这些区块链要求在将交易添加到区块链的分类账之前校验这些交易。然而,校验过程必须由某些节点执行,这些节点在必须校验多个交易时经常遇到瓶颈。该瓶颈可限制区块链快速提交新交易的能力。


技术实现要素:

4.一个实施方案描述了一种计算系统,该计算系统包括处理器、存储区块链的分类账的存储器,以及硬件加速器。因此,硬件加速器被配置为接收对应于待提交给分类账的交易区块的多个分组,针对交易区块中的不同部件生成散列,并且在确定散列与先前计算的散列相匹配时,生成任务以校验硬件加速器中的交易区块。此外,处理器或硬件加速器中的一者被配置为在确定交易区块有效时,将交易区块提交给分类账。
5.本文所述的另一个实施方案是一种计算系统,该计算系统包括处理器、存储区块链的分类账的存储器,以及硬件加速器,该硬件加速器被配置为接收待提交给分类账的交易区块、验证区块的签名、校验区块中的交易中的每一个交易,以及存储交易的校验结果。此外,处理器或硬件加速器中的一者被配置为向分类账提交交易。
6.本文所述的另一个实施方案是一种方法,该方法包括:在硬件加速器处接收与待提交给区块链的分类账的交易区块相对应的多个分组;在硬件加速器处计算用于交易区块中的不同部件的散列;在硬件加速器处确定散列与先前计算的散列相匹配;以及在硬件加速器处生成任务以校验交易区块。
附图说明
7.为了能够详细理解上述特征的方式,以上简要概述的更具体的描述可以通过参考示例性具体实施来获得,其中一些示例性具体实施在附图中示出。然而,应当注意,附图仅示出了典型示例性具体实施并且因此不应被视为限制其范围。
8.图1是根据示例的对应于许可区块链的时序图。
9.图2a和图2b是根据示例的具有硬件加速器的区块链中的节点的框图。
10.图3示出了根据示例的硬件加速器中的协议处理器与区块处理器之间的接口。
11.图4是根据示例的用于解析分组以准备用于硬件处理的数据的流程图。
12.图5a示出了根据示例的为交易区块中的每个部件传输分开的分组。
13.图5b示出了根据示例的用于在区块中发送个别部件的分组。
14.图6是根据示例的硬件加速器中的协议处理器的框图。
15.图7是根据示例的协议处理器中的区块提取器的框图。
16.图8是根据示例的用于在将交易提交到区块链分类账之前校验交易的流程图。
17.图9是根据示例的区块处理器的框图。
18.图10是根据示例的区块校验的框图。
19.图11示出了根据示例的硬件加速器中的寄存器与cpu之间的通信。
具体实施方式
20.下文中参考附图描述各种特征。应当注意,附图可以按比例绘制也可以不按比例绘制,并且类似结构或功能的元件在所有附图中由类似的附图标号表示。应当注意,附图仅旨在方便对特征的描述。它们并不旨在作为本说明书的详尽描述或作为对权利要求范围的限制。另外,所例示的示例不必具有所示出的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例,并且即使未如此示出或未如此明确描述,也可以在任何其他示例中实践。
21.本文的实施方案描述了用于区块链机器或节点的硬件加速器(例如,网络加速引擎或计算加速引擎)。硬件加速器解析包含交易区块的单独部件的分组以生成执行校验过程的数据。即,使用网络协议(例如,tcp(传输控制协议))传输的数据通常不适于在分组没有最先被软件处理的情况下由硬件加速器使用。为了避免使用软件带来的延迟,本文的实施方案描述了硬件加速器中的协议处理器,该协议处理器解析分组并且准备数据,使得该数据可以被加速器中的下游部件使用而无需软件干预。这些下游部件然后可以执行校验操作以在一个或多个交易被提交(即,添加)到许可区块链或非许可区块链的分类账之前校验这些交易。
22.区块链可包括多个对等节点,每个对等节点包含在服务器或容器上运行的标准软件。一些对等节点(被称为校验者节点)是系统性能的主要瓶颈,因为它们需要快速校验包含数十或数百笔交易的区块,然后才能将这些交易提交到区块链分类账中。代替使用软件校验交易区块,硬件加速器可以在一部分时间内校验交易。然后,对等节点软件从硬件加速器收集校验结果,并且将结果与所接收的区块数据组合以导出区块,然后将该区块提交给所存储的分类账。在实验设置中,具有硬件加速器的节点在耦合到联网加速引擎时,与在多核服务器上执行的仅软件对等者相比,交易提交吞吐量提高了10倍以上。
23.图1是根据示例的对应于许可区块链100的时序图。虽然图1中的许可区块链100的时序图具体涉及hyperledger fabric,但本文的实施方案可以应用于任何类型的许可区块链。此外,本文的实施方案还可以应用于在交易被提交给分类账之前对这些交易执行校验过程的非许可区块链。因此,提供hyperledger fabric仅作为可受益于下文描述的硬件加速器的合适的区块链网的一个示例。
24.区块链100中的交易流程遵循执行-排序-校验模型,其中首先执行交易,然后将其
排序到区块中,最后校验并且提交给分类账(连同状态数据库一起以保持迄今为止提交的区块的全局状态)。因此,许可区块链100包括不同类型的节点,诸如对等者、排序者、客户等,其中每个节点具有由msp提供的身份。该标识可以证书的形式提供。
25.客户可以是提交待在区块链100上提交的交易的任何实体。例如,如果区块链100被金融机构用来跟踪资金转移,则客户可以提交将资金从第一账户转移到第二账户(在相同的金融机构或不同的机构处)的交易。在步骤1处,客户提交待提交给区块链的交易。具体地,在多个背书节点(或对等者)上接收交易。背书节点既执行交易/对交易进行背书,又向分类账校验/提交区块。每个背书节点针对其自身的状态数据库执行交易,以计算交易的读取写入集(在图1中标记为e)。读取集是所访问的密钥及其版本号,而写入集是要用它们的新值来更新的密钥。
26.如果背书过程成功(即,没有错误),则在步骤2,背书节点将它们的背书添加到交易并且将交易返回给客户。在客户已经收集了足够数量的背书之后,在步骤3,客户要求排序服务以将交易提交给校验过程。在一个实施方案中,排序服务包括排序者(例如,计算节点),排序者使用共识机制来建立交易的总排序。多种可插入共识机制可用,诸如基于raft和apache kafka/zokeeper的共识机制。
27.在步骤4,排序服务在交易已经被接受以包含在区块中之后响应客户(步骤4)。然后,排序服务根据所排序的交易创建交易区块105。在一个实施方案中,当用户配置的超时已经期满或者达到用户配置的区块大小限制时,排序服务根据所排序的交易创建区块105。
28.一旦创建了区块105,排序服务就在步骤5通过例如gossip协议将其广播到所有背书和非背书节点。每个节点校验框105中的所有交易,然后将该框提交给分类账和状态数据库(标记为v)。最后,节点中的一个节点向客户发送通知:交易已经被提交或者交易在分类账中是否被标记为无效或有效(步骤6)。
29.图1在右手侧更详细地示出了校验阶段的校验工作流110。工作流110示出了在接收区块105的每个节点上执行的四个步骤。当通过gossip协议从排序服务(或引导节点)接收到交易区块105时,在步骤1,节点检查该区块的句法结构并且验证其签名,然后通过下面更详细描述的各种操作的管线来将其发送。在步骤2中,在句法上检查区块中的每个交易,并且验证其签名。然后在每个交易上运行校验系统链代码(vscc),其中对背书进行校验并且评估相关联的链代码的背书策略。如果不满足交易的背书策略,则将该交易标记为无效。
30.在步骤3中,执行多版本并发控制(mvcc)检查。该检查确保在有效交易之间不存在读取-写入冲突。换句话讲,它避免了双重支出问题,即,在只打算进行一笔交易时提交了两笔交易的问题。通过访问状态数据库(在图1中示出为“statedb”)来再次计算每个交易的读取集,并且将其与来自背书阶段的读取集进行比较。如果这些读取集不同,则一些其他交易(在该框105中或者在较早的框中)已经修改了相同的密钥,并且因此该交易被标记为无效。
31.在最后的步骤4中,将该区块提交给在节点处存储的分类账。在一个实施方案中,最先将整个区块与其交易的有效/无效标志一起写入分类账。然后,将有效交易的写入集提交给状态数据库。
32.图2a和图2b是根据示例的具有硬件加速器210的区块链中的节点200的框图。在一个实施方案中,节点200是在向区块链提交交易时执行校验过程的任何计算系统。例如,节点200可以是如图1中所示的背书节点或非背书节点或对等者。在一个实施方案中,节点200
是服务器或其他计算系统。
33.在图2a中,节点200a包括cpu 205、硬件加速器210和存储器235。cpu 205表示任何数量的处理器,每个处理器可包含任何数量的处理核心。存储器235表示易失性存储器、非易失性存储器(例如,硬盘驱动器)以及它们的组合。如图所示,存储器235存储列出区块链的已提交交易的分类账240。
34.硬件加速器210包含用于执行图1所示的校验工作流110的各种电路元件。在一个实施方案中,硬件加速器210是集成电路。在另一个实施方案中,硬件加速器210是上面安装有一个或多个集成电路的板(例如,印刷电路板(pcb),诸如pcie卡)。在一个实施方案中,集成电路是包括可编程逻辑的现场可编程门阵列(例如,fpga)或片上系统(soc)。在该示例中,加速器210中的各种电路区块以可编程逻辑实施。然而,在另一个实施方案中,集成电路可以是专用集成电路(asic),其中加速器210的电路区块仅在硬化电路中实现。虽然使用具有可编程逻辑的fpga和soc赋予加速器210在验证过程改变的情况下重新编程的灵活性,但使用asic可节省空间。
35.加速器210包括用于接收包含关于交易的数据的以太网分组的网络接口215、用于重新格式化数据的协议处理器220、用于执行校验工作流的区块处理器225,以及存储校验结果的寄存器映射230(reg_map)(例如,存储器寄存器)。下面更详细地讨论协议处理器220、区块处理器225和寄存器映射230。一般来讲,这些硬件区块一起工作以校验所接收的交易区块。即,网络接口215接收包括对应于交易区块的数据的多个分组。因为数据可能是不适合处理的格式,所以协议处理器220可以重新格式化并且输出数据以供区块处理器225使用。当区块处理器225执行校验工作流中的大部分步骤时,这些步骤中的一些步骤可以由协议处理器220和寄存器映射230执行。此外,因为分类账240被存储在存储器235(该存储器可能不能被加速器210直接访问)中,所以节点200a可以依赖于cpu 205来向分类账240提交经校验的交易。即,加速器210可以将校验结果存储在寄存器映射230中,cpu 205可以评估该校验结果,然后向分类账提交交易。即,在一个实施方案中,所有交易都被提交给分类账,但校验标志存储关于哪些交易有效并且哪些交易无效的信息。然而,对于状态数据库(下面讨论),仅成功校验的交易被提交。虽然大多数校验在硬件加速器210中执行,但是将交易提交给分类账240可以由在cpu 205上执行的软件来执行。
36.图2b示出了除了添加了网络接口卡(nic)245之外与图2a中的节点200a相同的节点200b。在一个实施方案中,nic 245向节点200b提供确定什么网络流量流过加速器210以及什么网络流量流过nic 245的能力。在一个实施方案中,可以通过加速器210发送与区块链相关的所有流量,同时由nic 245处理所接收的与区块链无关的网络流量。相反,在节点200a中,可以在加速器210处接收由节点200a接收的所有网络流量(无论是区块链流量还是非区块链流量)。例如,协议处理器220可以将与校验相关的网络流量转发到区块处理器225,但将所有其他流量转发到cpu 205。
37.在另一个实施方案中,加速器210仅接收与在加速器210处校验交易相关的网络流量,而所有其他流量(无论它是其他类型的区块链流量诸如背书请求,还是非区块链流量)由nic 245接收和处理。
38.在图2a或图2b中未示出的又一实施方案中,加速器210可以在没有cpu 205的帮助的情况下执行所有区块链操作。在该实施方案中,nic 245和cpu 205不用于执行区块链任
务,但cpu 205可用于配置或控制加速器210。在这种场景下,所有的网络流量都经过加速器210,该加速器处理与区块链相关的分组,但是向/从cpu 205转发其他分组。
39.图3示出了根据示例的硬件加速器中的协议处理器与区块处理器之间的接口300。在该示例中,接口300用于将区块数据、交易数据(在图3中标记为tx数据)、背书数据、读取集数据及写入集数据传输到区块处理器225。即,协议处理器220从区块链中的其他节点(例如,从排序服务中的排序者)接收包含用于校验交易区块的信息的以太网分组。协议处理器220然后重新格式化/解析数据,以便该数据可以被区块处理器225使用。
40.图4是根据示例的用于解析分组以准备用于硬件处理的数据的方法400的流程图。为了便于解释,下面与附图并行讨论方法400中的框。
41.在框405处,加速器中的网络接口接收包含交易区块的单独部件的分组。由于区块通常太大而无法在单个分组中发送(例如,区块可大于1兆字节),因此软件应用程序依赖于网络协议或软件驱动程序将区块分成多个分组。然而,网络协议/驱动程序通常不知道数据在区块中是如何构造的,因此,数据通常以自组织(ad hoc)方式传输。这使得硬件加速器难以(如果不是不可能的话)随后解析所接收的分组并且重建交易区块。然而,本文的实施方案描述了用于传输交易区块以使得硬件加速器可以解析分组以便重建交易区块中的不同部件的技术。
42.图5a示出了根据示例的为交易区块505中的每个部件传输分开的分组。具体而言,图5a示出了通信系统500,其中发送器515(例如,区块链中的排序者或其他对等节点)向硬件加速器210传输分组520,使得这些分组可被准确地解析,使得区块消息505可被重建。为此,发送器515中的软件将区块消息505划分成其单独的区块部件510,在此示出为标头、交易(tx)1至5和元数据。即,并非依赖于网络协议或驱动程序来确定如何将区块消息505中的数据划分成单独的分组,而是发送器515上的软件(其知晓区块505的结构)可以将区块划分成其部件510。
43.图5a示出了发送器515通过网络(例如,私有或公共网络,诸如互联网)将分组520a至520g传输到硬件加速器210。如图所示,每个分组520仅包括部件510中的一个部件,即,分组520a包括区块505的标头,分组520b至520f各自包括交易中的一个交易,并且分组520g包括区块505的元数据。在软件不将区块505划分成其部件510的情况下,网络协议或驱动程序可能已发送包括tx1的标头和一部分的第一分组、包括tx1的剩余数据和tx2的一部分的第二分组,等等。区块505中的不同部件510的这种不可预测的分叉可能使得难以设计硬件加速器210来解析数据,从而可以重建区块505。
44.此外,虽然在图5a中未示出,但发送器515可以移除与部件510相关联的已签名证书。这些证书可用于校验区块505和区块内的交易。然而,这些证书(例如,x509证书)很大,这意味着将它们传输到加速器210需要大量的带宽。在一个实施方案中,发送器515在形成随后被发送到加速器210的分组520之前从区块505中移除证书。相反,发送器515可以用id(例如,8位代码)来替换证书。在一个实施方案中,发送器515将证书单独传输到加速器210,然后该加速器可以将证书存储在高速缓存中以供稍后检索。这样,如果证书与区块505中的多个部件510相关联,则证书被发送一次而不是被重复发送。
45.图5b示出了根据示例的用于在区块中发送个别部件的分组520。520包括l2和ip/udp数据、输送标头525、区块机器协议标头530和区块消息有效载荷535。输送标头525可包
括序列号(seq)、确认号(ack)和控制数据(ctrl)。序列号指示分组在表示区块505的分组序列中的什么位置。确认号由加速器210在生成ack分组以传输回发送器515时使用。控制数据可包括诸如应用层协议故障和接收器缓冲器状态的信息。
46.区块机器协议标头530包括消息类型(msgtype)和注释。消息类型指示有效载荷535中的数据是区块标头、交易还是元数据。注释指出了重要数据的位置。例如,注释可包括指向分组520中的相关数据的指针(例如,其中可以找到有效载荷535中的某些数据)以及指向高速缓存中或不同分组中(但相同区块中)的数据的定位符。在一个实施方案中,注释中的定位符被用来标记分组520的id。有效载荷535可包括对应于在分组中发送的特定部件510的数据,即,来自区块505的元数据。
47.因为每个分组520包含区块505的部件510中的一个部件,所以这提供了加速器210可以在接收区块的所有分组520之前开始处理数据的优点。即,加速器210可以在交易进入时处理这些交易,而不是等待软件接收所有分组然后重建区块505以进行校验。例如,协议处理器可以在加速器210处接收到包含tx2的分组520c之前解析与tx1相对应的分组520b。因此,加速器210可以比软件解决方案更快地开始处理交易,在软件解决方案中,必须在可以重建和校验交易之前接收所有分组。
48.图6是根据示例的硬件加速器中的协议处理器220的框图。如图所示,在分组过滤器610处接收数据分组520,该分组过滤器解析第4至7级(l4至l7)分组标头(例如,区块机器协议标头530)以提取消息类型和注释。消息类型可包括区块开始、区块元数据、交易等。消息有效载荷的注释可包括区块标头的位置、区块签名的位置、区块id、交易数据开始、通道名称、交易id、链代码名称、创建者认证机构(ca)id、交易动作、交易ca id、合同名称、合同输入、背书者(endorser)动作、读取集/写入集、背书者列表、交易签名、排序者ca id、排序者签名、证书id、证书公钥数据、状态有效始于信息、状态有效至信息等。分组过滤器610还标识输送标头中的序列号,并且将该编号转发到响应生成器605,该响应生成器将响应分组(例如,确认分组)传输回发送器(例如,排序者)。
49.分组过滤器610将消息类型、注释和分组有效载荷转发到区块提取器615,该区块提取器基于注释来处理消息有效载荷并且提取用于区块处理器225的相关数据。区块提取器615还为响应生成器605提供消息有效信号,因此生成器605可以通知发送器区块及其交易是有效的还是无效的。区块处理器225的细节在方法400的其余部分和下面的图中讨论。
50.返回方法400,在框410处,协议处理器中的区块提取器使用分组中的id来标识对应于分组的已签名证书。如上所述,发送器可以在将多个分组中的区块传输到硬件加速器之前从区块中剥离证书。因为证书很大并且很少改变,所以可以这样做。因此,用引用证书的分组中的小得多的id或密钥来替换证书可以节省大量的带宽并且确保交易区块中的每个部件可在单个分组中发送。
51.然而,一旦接收到分组,区块提取器可能需要证书以便校验区块(以及区块中的交易)并且确保区块和交易的句法是正确的。因此,区块提取器可以重建部件,这意味着区块提取器标识并且检索证书。
52.图7是根据示例的区块提取器615的框图。如图所示,区块提取器615包括数据插入器705,该数据插入器接收分组有效载荷和标识对应于该有效载荷的证书(或多个证书)的注释。例如,如果有效载荷是区块元数据,则有效载荷可包括与准备区块的排序者的证书相
对应的id。如果有效载荷包括交易,则有效载荷可包括对应于提交交易的客户的id以及对应于背书交易的背书节点的一个或多个id。因此,数据插入器705可以标识有效载荷中的多个id。
53.使用id,数据插入器705在身份高速缓存710中执行查找以检索对应于id的已签名证书。即,当排序者向加速器发送证书时,加速器将这些证书(以及它们对应的id)存储在身份高速缓存710中,使得这些证书然后可以在校验交易区块时被检索。
54.返回方法400,在框415处,区块提取器615重建区块的单独部件。即,当接收到每个有效载荷时,区块提取器615可以检索对应的证书。这在图7中示出,其中数据插入器705将所检索的证书(或多个证书)与有效载荷中的其他数据一起传输到数据提取器715。
55.数据提取器715可在不同时间重建交易区块中的部件。例如,在时间1期间,数据提取器715使用第一接收分组来重建区块的标头,在时间2,数据提取器715使用第二接收分组来重建区块中的第一交易,等等。因此,区块提取器615可被管线化,使得区块中的不同部件可在提取器615中的不同阶段(例如,不同的电路模区块)处并行地执行。
56.在框420处,散列计算器720计算区块中的分隔体部件的散列。在一个实施方案中,散列计算器720为整个区块、区块的每个交易,以及每个交易的每个背书生成散列。散列计算器720可在不同时间生成这些散列。例如,散列计算器720可在其接收到对应于特定交易的分组时生成该交易的散列(以及与该交易相关联的所有背书的散列)。然而,散列计算器720可以在已经接收到区块的所有分组之后等待计算整个区块的散列。
57.在框425处,散列检查器725确定由散列计算器720计算的散列是否与分组中的散列相匹配。即,由发送器传输的分组可包含先前计算的散列(或至少指向散列的指针),这些散列可以与散列计算器720所生成的散列进行比较。例如,发送器可以计算区块的散列、区块中的每个交易,以及交易中的每个背书,并且将这些散列传输到加速器210。如果这些散列与由散列检查器725生成的本地散列相匹配,则这意味着这些消息是有效的并且已经遵循了针对区块和交易的适当句法。如果散列不匹配,则该方法进行到框445,其中硬件加速器指示所接收的数据具有句法错误。在一个实施方案中,硬件加速器向发送器发送指示校验过程已经失败的应答消息。
58.假定散列与所接收的散列相匹配,则方法400前进至框430,在该框处,硬件加速器指示所接收的数据被成功解析。在一个实施方案中,图6中的响应生成器605向发送器传输应答或确认(ack)消息,指示交易区块已经被协议处理器220成功地接收和处理。
59.在框435处,任务生成器730生成用于区块处理器的任务以便完成校验过程。在一个实施方案中,任务生成器730生成区块任务、交易任务和背书者任务。区块任务可包括区块id、区块签名(例如,生成区块的排序者的证书)等。交易任务可包括交易id、交易签名(例如,生成交易的客户的证书)、交易读取集/写入集等。在一个实施方案中,任务生成器730为区块中的每个交易生成交易任务。任务生成器730还可以为交易中的每个背书生成背书者任务。即,因为每个交易可以接收若干背书,所以任务生成器730可以为这些背书中的每一个背书生成任务。
60.在框440处,任务生成器730将任务和对应的数据转发到硬件加速器中的区块处理器。然后,区块处理器可以校验区块、交易和背书。一般来讲,协议处理器(以及图5至图7中示出的其电路部件)解析所接收的分组以将区块的数据重新格式化为可由区块处理器在没
有软件帮助的情况下消化或处理的格式。因此,区块链中的校验过程可以完全由硬件执行,从而减少该过程所需的时间和计算资源。
61.图8是根据示例的用于在将交易提交到区块链分类账中之前校验交易的方法800的流程图。为了便于解释,下面结合图9至图11描述方法800中的不同阶段。此外,方法800中的阶段与图1所示的校验工作流110的步骤1至步骤4相关。
62.方法800假定硬件加速器已经从例如排序服务接收到了在可以被提交给分类账之前需要校验的交易区块。此外,方法800假定协议处理器已经执行区块句法检查(例如,图1中的“blk句法检查”)和交易句法检查(例如,图1中的“tx句法检查”)以确认已接收到用于执行校验的所有所需数据。
63.在阶段805,硬件加速器验证交易区块上的签名。更具体地,区块处理器从协议处理器接收图3所示的信息,从而它可以执行区块验证。如图9所示,区块处理器225包括两个硬件子模块:区块验证905和区块校验910。区块验证905包括椭圆曲线数字签名算法(ecdsa)引擎920,用于验证排序者在区块上的签名。换句话讲,ecdsa引擎920将区块中接收的签名与排序者的已知签名(例如,证书)进行比较以确保它们相匹配。这样,区块验证905可以确认交易区块来自已批准节点。虽然示出了ecdsa引擎920,但可以使用任何合适的签名算法引擎。
64.除了包括排序者签名之外,在区块验证905处接收的区块数据还可以包括区块编号、区块中的交易数量等。
65.返回方法800,在阶段810,硬件加速器校验区块中的多个交易。在图9中,该功能由区块校验910执行。即,当区块验证905确保该区块被已知排序者接收时,区块校验910校验该区块中的单独的交易。为此,区块校验910从协议处理器(图9中未示出)接收交易数据、背书数据、读取集数据和写入集数据。区块校验910然后输出区块校验数据,该区块校验数据包含校验结果,诸如区块编号、有效/无效交易标志、延迟等。
66.在一个实施方案中,区块验证905和区块校验910在区块级被管线化。即,区块处理器225可以在区块校验905处处理第一交易区块(管线阶段1),而区块校验910处理第二交易区块(管线阶段2)。换句话讲,区块校验905可以使用ecdsa引擎920来确保授权的排序者传输第一区块,同时区块校验910校验第二区块中的单独的交易。
67.区块处理器225还包括区块监测器915,该区块监测器通过监测从区块验证905和区块校验910接收的信号来收集区块级和交易级统计值。例如,区块监测器915可以确定校验交易区块所需的时间或延迟,或区块处理器225的吞吐量(例如,每单位时间处理的区块的数量)。
68.此外,图8示出阶段810可被细分为阶段815至825。在一个实施方案中,方法800的阶段815至825对应于图10中的管线阶段2a、2b和2c,该图示出了图9中的区块校验910的更详细视图。
69.在阶段815,区块校验910中的第一管线阶段2a验证每个交易的签名。如图10所示,阶段2a包括多个交易验证区块1005,每个交易验证区块包括ecdsa引擎1035。这些引擎1035验证交易的客户(或创建者)的签名。即,ecdsa引擎1035通过将所接收的签名与基于tx数据和创建者的公钥对计算的签名进行比较来确保交易被已知客户签名。
70.因为存在多个交易验证区块1005,所以阶段2a可以并行地校验多个交易的客户签
名。确定区块校验910包括多少个交易验证区块1005是一种设计选择。具有附加的交易验证区块1005意味着阶段2a可以并行地处理更多的交易,但是以使用加速器中的附加的空间和功率为代价。
71.返回方法800,在阶段820,区块确认910使用背书策略来验证每个交易的背书。如图10所示,管线阶段2b包括多个交易vscc区块1010,每个交易vscc区块包括多个ecdsa引擎1015(或任何其他类型的签名验证引擎)和背书策略评估器1020。交易vscc区块1010各自验证特定交易的背书。为此,交易vscc区块1010接收包括背书者id和验证数据的背书数据。因为客户交易可以接收多个背书(如图1所示),所以每个ecdsa引擎1015可以并行地评估背书中的一个背书。即,如果交易a接收到两个背书,则ecdsa引擎1015a可以验证第一背书是由批准的背书节点签名,同时ecdsa引擎1015b验证第二背书可以是由批准的背书节点签名。同样,每个区块1010中的ecdesa引擎1015的数量是设计选择。
72.在一个实施方案中,背书策略评估器1020可以基于每个链代码保持背书策略。评估器1020确认交易已经接收到适当的背书。即,假定背书是由批准的背书节点给出的,则评估器1020确认从适当的背书节点接收到背书的交易。例如,如果交易指示应当在两个银行之间转移资金,则评估器1020可以检查以确保交易从由这两家银行操作的背书节点接收到背书。如果交易仅由一家银行的背书节点背书,或者由不受交易影响的另一家银行背书,则评估器1020可以使交易无效。
73.因为阶段2b包括多个交易vscc区块1010,所以区块校验910可以并行地验证针对多个交易的背书。即,在阶段2a验证交易由批准客户发起之后,阶段2b可以验证对交易的背书是有效的并且满足一个或多个背书策略。区块校验910中的交易vscc区块1010的数量是设计选择。
74.返回方法800,在阶段825,区块校验910执行版本检查并且将写入密钥提交给状态数据库1030。这由阶段2c执行,该阶段包括通信地耦合到状态数据库1030和寄存器映射(图10中未示出)的交易mvcc写入区块1025。此外,寄存器映射任选地耦合到节点中的cpu(未示出)。在一个实施方案中,交易mvcc写入区块1025从状态数据库1030查找读取密钥以执行版本检查,并且如果被确认,则将有效交易的更新的写入密钥提交给数据库1030。为此,交易mvcc写入区块1025从协议处理器接收读取集数据(其中每个元素包含读取密钥-版本对)和写入集数据(其中每个元素包含写入密钥-值对)。在一个实施方案中,状态数据库1030包括内部锁机制以不允许读取当前正在写入(或更新)的密钥。
75.图10中的阶段2a至2c可以被管线化。即,虽然图9示出了区块验证905和区块校验910之间的区块级管线,但图10示出交易级管线,其中特定区块中的交易可以在阶段2a至2c中并行地处理。即,阶段2a可以处理区块中的第一组交易,而阶段2b处理相同的区块中的第二组交易,并且阶段2c处理相同的区块中的第三组交易。然而,在一个实施方案中,由于交易之间的依赖性,区块校验910可以仅处理来自相同区块的交易。即,区块校验910中的一个阶段可能无法处理来自第一区块的交易,而不同的阶段处理来自第二区块的交易。
76.返回方法800,在阶段830,区块校验910将执行校验过程的结果存储在寄存器(例如,寄存器映射230)中。如图11所示,寄存器映射从区块校验910接收区块校验数据,该区块校验数据可包含区块编号、有效/无效交易标志、延迟(由区块监测器测量)等。校验结果被写入寄存器映射中,其中cpu 205可以使用axi-lite或pcie接口来访问校验结果。在一个实
施方案中,新的校验结果无法被写入寄存器映射230中,直到当前存储的校验结果已经被cpu 205读出。此外,虽然图11示出了系统1100,其中硬件加速器中的寄存器映射230可以由cpu 205访问,如上所述,但加速器可以不使用cpu 205,而是可以在没有在cpu 205上执行的软件的帮助的情况下完成校验过程。
77.在阶段835,cpu(或硬件加速器)通知客户交易是有效的还是无效的。即,cpu可以评估校验结果以确定交易区块中的每个单独的交易是否被校验。然后,客户可以选择重新提交无效交易。
78.在阶段840,将交易提交给分类账。在一个实施方案中,有效和无效交易都被提交给分类账,并且可包括有效/无效标志以指示所提交的交易是否有效。
79.在前文中,参考在本公开中呈现的实施方案。然而,本公开的范围不限于具体描述的实施方案。相反,所描述的特征和元件的任何组合,无论是否涉及不同的实施方案,都被设想为实现和实践所设想的实施方案。此外,尽管本文中所公开的实施方案可以实现优于其他可能解决方案或优于现有技术的优点,但特定优点是否由给定实施方案实现并不限制本发明的范围。因此,前述方面、特征、实施方案和优点仅仅是例示性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。
80.如本领域的技术人员将了解,本文中所公开的实施方案可被体现为系统、方法或计算机程序产品。因此,各方面可采取完全硬件实施方案、完全软件实施方案(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施方案的形式,这些实施方案在本文中可全部被统称为“电路”、“模块”或“系统”。此外,各方面可采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
81.可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如,但不限于,电、磁、光、电磁、红外或半导体系统、装置或设备,或前述各项的任何合适的组合。计算机可读存储介质的更具体示例(非穷尽列表)将包括以下各项:具有一根或多根线材的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存存储器)、光纤、便携式压缩盘只读存储器(cd-rom)、光存储设备、磁存储设备,或前述各项的任何合适的组合。在本文档的上下文中,计算机可读存储介质是可包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。
82.计算机可读信号介质可包括例如在基带中或作为载波的一部分的传播数据信号,该传播数据信号具有体现在其中的计算机可读程序代码。这种传播信号可采取多种形式中的任何一种形式,包括但不限于电磁、光学或它们的任何合适的组合。计算机可读信号介质可以是任何计算机可读介质,不是计算机可读存储介质,并且可以传送、传播或输送由指令执行系统、装置或设备使用或结合指令执行系统、装置或设备使用的程序。
83.体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、rf等,或者上述各项的任何合适的组合。
84.用于执行本公开的各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言(诸如java、smalltalk、c++等)和常规的过程编程语言(诸如“c”编程语言或类似的编程语言)。程序代码可整个地在用户计算机上执行、部
分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上执行并且部分地在远程计算机上执行或者整个地在远程计算机或服务器上执行。在后一种场景下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
85.本公开的各方面在下面参考根据本公开中呈现的实施方案的方法、装置(系统)和计算机程序产品的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可由计算机程序指令来实现。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以得到机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令形成用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的构件。
86.这些计算机可读程序指令还可存储在可指示计算机、其他可编程数据处理装置或其他设备以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
87.计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备上,导致在计算机、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框中指定的功能/动作的过程。
88.图中的流程图和框图示出了根据本发明的各种示例的系统、方法和计算机程序产品的可能具体实施的体系结构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可基本上同时执行,或者这些框有时可以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
89.除了权利要求中描述的内容之外,所公开的技术还可以通过以下非限制性示例来表达。
90.实施例1.一种用于加速区块链的校验过程的集成电路,包括:网络接口,所述网络接口被配置为从所述区块链中的节点接收包含交易区块的多个分组;协议处理器,所述协议处理器被配置为解析所述多个分组以生成关于所述交易的数据;以及区块处理器,所述区块处理器被配置为:验证所述区块的签名;校验所述区块中的所述交易中的每一个交易;以及存储所述交易的校验结果。
91.实施例2.根据实施例1所述的集成电路,其中所述集成电路包括片上系统(soc)、现场可编程门阵列(fpga)或专用集成电路(asic)中的至少一者。
92.实施例3.根据实施例2所述的集成电路,其中所述soc或fpga包括可编程逻辑。
93.实施例4.根据实施例2所述的集成电路,其中所述asic仅包括硬化电路。
94.实施例5.根据实施例1所述的集成电路,其中所述区块处理器包括:区块验证,所述区块验证包括第一签名算法引擎,所述第一签名算法引擎被配置为验证所述区块的签名与所述区块链中的排序者的已知签名相匹配;以及区块校验,所述区块校验被配置为校验
所述区块中的所述交易中的每一个交易。
95.实施例6.根据实施例5所述的集成电路,其中所述区块校验包括:交易验证模块,所述交易验证模块包括第二签名算法引擎,所述第二签名算法引擎被配置为验证对应于所述交易的签名与被授权使用所述区块链的客户的已知签名相匹配;交易校验系统链代码(vscc)区块,所述vscc区块包括:第三签名算法引擎,所述第三签名算法引擎被配置为验证所述交易中的背书是由所述区块链中的已知背书节点签名的;以及背书策略评估器,所述背书策略评估器被配置为确保所述背书满足背书策略;以及交易多版本并发控制(mvcc)写入区块,所述mvcc写入区块被配置为读取和写入与状态数据库中的所述交易相关联的密钥-值对。
96.实施例7.根据实施例6所述的集成电路,其中所述区块校验包括:多个交易验证模块,所述多个交易验证模块被配置为并行地操作以验证第一组所述交易的签名;以及多个交易vscc区块,所述多个交易vscc区块被配置为并行地操作以验证第二组所述交易的背书,其中所述多个交易验证模块形成管线的第一阶段,并且所述多个交易vscc区块形成所述管线的第二阶段,使得所述多个交易验证模块处理所述第一组交易,同时所述多个交易vscc区块处理所述第二组交易。
97.实施例8.根据实施例7所述的集成电路,其中所述多个交易验证模块中的每一个交易验证模块包括多个算法签名引擎,用于并行地验证所述交易中的一个交易中的一组背书。
98.实施例9.根据实施例2所述的集成回路,其中所述区块验证在管线中形成第一阶段,而所述区块验证在所述管线中形成第二阶段,使得所述区块验证能够处理所述区块链的第一交易区块,同时所述区块验证处理所述区块链的第二交易区块。
99.实施例10.一种方法,包括:在硬件加速器处接收将被提交给区块链的分类账的交易区块;在硬件加速器处验证所述框的签名;在硬件加速器处校验所述区块中的所述交易中的每一个交易;在硬件加速器处存储所述交易的验证结果;以及将所述交易提交给所述分类账并且基于所述验证结果指示所述交易是否有效。
100.实施例11.根据实施例10所述的方法,其中接收所述交易区块包括接收包括所述交易区块的多个分组,所述方法还包括:在所述硬件加速器处解析所述多个分组以生成关于所述交易的数据。
101.实施例12.根据实施例10所述的方法,其中校验所述区块中的所述交易中的每一个交易还包括:验证所述区块的所述签名与所述区块链中的排序者的已知签名相匹配。
102.实施例13.根据实施例10所述的方法,其中校验所述区块中的所述交易中的每一个交易还包括:验证所述交易中的背书是由所述区块链中的已知背书节点签名的;以及确保所述交易中的所述背书满足背书策略。
103.实施例14.一种用于加速用于区块链的校验过程的集成电路,包括:数据插入器,所述数据插入器被配置为接收与待提交给所述区块链的分类账的交易区块相对应的多个分组;散列计算器,所述散列计算器被配置为生成用于所述交易区块中的不同部件的散列;散列检查器,所述散列检查器被配置为确定所述散列与先前计算的散列相匹配;以及任务生成器,所述任务生成器被配置为生成任务以校验所述交易区块。
104.实施例15.根据实施例14所述的集成电路,其中所述集成电路包括片上系统
(soc)、现场可编程门阵列(fpga)或专用集成电路(asic)中的至少一者。
105.实施例16.根据实施例15所述的集成电路,其中所述soc或fpga包括可编程逻辑。
106.实施例17.根据实施例15所述的集成电路,其中所述asic仅包括硬化电路。
107.实施例18.根据实施例14所述的集成电路,其中所述交易区块包括区块标头、多个交易和元数据,其中所述区块标头、所述多个交易中的每一个交易和所述元数据在所述多个分组中的单独的一个分组中被发送,其中所述多个分组不包含对应于所述区块或所述多个交易的已签名证书。
108.实施例19.根据实施例18所述的集成电路,还包括:存储与所述区块链中的已批准节点相对应的所述已签名证书的本地副本的身份高速缓存,其中所述数据插入器被配置为使用所述多个分组中包括的id从所述身份高速缓存检索与所述交易区块相对应的已签名证书。
109.实施例20.根据实施例19所述的集成电路,还包括:
110.数据提取器,所述数据提取器被配置为使用所述多个分组中的数据和所检索的已签名证书来重建所述交易区块,其中所述散列计算器被配置为使用所重建的交易区块来生成所述散列,并且其中所述散列检查器被配置为检查所生成的散列是否与先前计算的散列相匹配,以便确保所述交易区块不包含句法错误。
111.虽然前述内容针对特定示例,但在不脱离本发明的基本范围的情况下可以设计出其他和另外的示例,并且本发明的范围由所附权利要求书确定。

技术特征:
1.一种计算系统,包括:处理器;存储器,所述存储器存储区块链的分类账;以及硬件加速器,所述硬件加速器被配置为:接收对应于待提交给所述分类账的交易区块的多个分组;生成用于所述交易区块中的不同部件的散列;以及当确定所述散列与先前计算的散列相匹配时,生成任务以校验所述硬件加速器中的所述交易区块,其中所述处理器或所述硬件加速器中的一者被配置为在确定所述交易区块有效时,将所述交易区块提交给所述分类账。2.根据权利要求1所述的计算系统,其中所述交易区块包括区块标头、多个交易和元数据,其中所述区块标头、所述多个交易中的每一个交易和所述元数据在所述多个分组中的单独的一个分组中被发送。3.根据权利要求2所述的计算系统,其中所述多个分组不包含对应于所述区块或所述多个交易的已签名证书。4.根据权利要求3所述的计算系统,其中所述硬件加速器包括:身份高速缓存,所述身份高速缓存存储对应于所述区块链中的已批准节点的所述已签名证书的本地副本;以及数据插入器,所述数据插入器被配置为使用所述多个分组中所包括的id从所述身份高速缓存中检索与所述交易区块相对应的已签名证书。5.根据权利要求4所述的计算系统,其中所述硬件加速器包括:数据提取器,所述数据提取器被配置为使用所述多个分组中的数据和所检索的已签名证书来重建所述交易区块;散列计算器,所述散列计算器被配置为使用所重建的交易区块来生成对应于所述交易区块的散列;以及散列检查器,所述散列检查器被配置为检查所生成的散列是否与先前计算的散列相匹配,以便确保所述交易区块不包含句法错误。6.一种计算系统,包括:处理器;存储器,所述存储器存储区块链的分类账;以及硬件加速器,所述硬件加速器被配置为:接收待提交给所述分类账的交易区块;验证所述区块的签名;校验所述区块中的所述交易中的每一个交易;以及存储所述交易的校验结果,其中所述处理器或所述硬件加速器中的一者被配置为向所述分类账提交所述交易。7.根据权利要求6所述的计算系统,其中所述硬件加速器包括:网络接口,所述网络接口被配置为从所述区块链中的另一节点接收所述交易区块,其中所述交易区块被包括在多个分组中;
协议处理器,所述协议处理器被配置为解析所述多个分组以生成关于所述交易的数据;以及区块处理器,所述区块处理器被配置为从所述协议处理器接收所述数据,验证所述区块的所述签名,以及校验所述区块中的所述交易中的每一个交易。8.根据权利要求7所述的计算系统,其中所述区块处理器包括:区块验证,所述区块验证包括第一签名算法引擎,所述第一签名算法引擎被配置为验证所述区块的所述签名与所述区块链中的排序者的已知签名相匹配;以及区块校验,所述区块校验被配置为校验所述区块中的所述交易中的每一个交易。9.根据权利要求8所述的计算系统,其中所述区块校验包括:交易验证模块,所述交易验证模块包括第二签名算法引擎,所述第二签名算法引擎被配置为验证对应于所述交易的签名与被授权使用所述区块链的客户的已知签名相匹配;交易校验系统链代码(vscc)区块,所述vscc区块包括:第三签名算法引擎,所述第三签名算法引擎被配置为验证所述交易中的背书是由所述区块链中的已知背书节点签名的;以及背书策略评估器,所述背书策略评估器被配置为确保所述背书满足背书策略;以及交易多版本并发控制(mvcc)写入区块,所述mvcc写入区块被配置为读取和写入与状态数据库中的所述交易相关联的密钥-值对。10.根据权利要求1或6所述的计算系统,其中所述硬件加速器包括片上系统(soc)、现场可编程门阵列(fpga)或专用集成电路(asic)中的至少一者。11.一种方法,包括:在硬件加速器处接收对应于待提交给区块链的分类账的交易区块的多个分组;在所述硬件加速器处计算用于所述交易区块中的不同部件的散列;在所述硬件加速器处确定所述散列与先前计算的散列相匹配;以及在所述硬件加速器处生成任务以校验所述交易区块。12.根据权利要求11所述的方法,其中所述交易区块包括区块标头、多个交易和元数据,其中所述区块标头、所述多个交易中的每一个交易和所述元数据在所述多个分组中的单独的一个分组中被发送。13.根据权利要求12所述的方法,其中所述多个分组不包含对应于所述区块或所述多个交易的已签名证书。14.根据权利要求13所述的方法,还包括:在所述硬件加速器的身份高速缓存中存储对应于所述区块链中的已批准节点的所述已签名证书的本地副本,使用所述多个分组中所包括的id从所述身份高速缓存中检索与所述交易区块相对应的已签名证书。15.根据权利要求14所述的方法,还包括:使用所述多个分组中的数据和所检索的已签名证书来重建所述交易区块,其中使用所重建的交易区块来计算所述散列,并且其中所述确定所述散列与所述先前计算的散列相匹配指示所述交易区块是否包含句法错误。

技术总结
本文的实施方案描述了用于区块链机器或节点的硬件加速器(例如,网络加速引擎)。该硬件加速器解析包含交易区块的单独部件的分组以生成执行校验过程的数据。为了避免使用软件带来的延迟,本文的实施方案描述了该硬件加速器中的协议处理器,该协议处理器解析该分组并且准备该数据,使得该数据可以被该加速器中的下游部件使用而无需软件干预。这些下游部件然后可以执行校验操作以在一个或多个交易被提交(即,添加)到许可区块链的分类账之前校验这些交易。些交易。些交易。


技术研发人员:H
受保护的技术使用者:赛灵思公司
技术研发日:2021.06.22
技术公布日:2023/9/7
版权声明

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

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

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

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

分享:

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

相关推荐