一种在网络级采用硬件实现共识验证的方法与流程

文档序号:11548654阅读:253来源:国知局
一种在网络级采用硬件实现共识验证的方法与流程

本发明属于区块链技术领域,具体涉及一种在网络级采用硬件实现共识验证的方法。



背景技术:

在当前严格的效率要求下,数据中心面临着越来越大的数据量和工作量复杂性的需求。为了满足高性能、可扩展性和可伸缩性的目标,服务通常运行在数百到数千台机器上。这就需要一些合作共识来维护机器的一致性。不可避免的性能开销和需要的附加资源往往会降低一致性,导致较少的用户必须建立更复杂的应用程序来处理潜在的不一致性。一致性需要的高成本来自于达成协议所需的多轮沟通,传统的网络栈没有对时间延迟或者特定的通信模式进行优化,使共识协议的加速变成了一个瓶颈。

如今各式的硬件是当前一个日益可行的选择,能够在低能源成本下提高系统的性能。除了考虑性能及效率之外,对于智能网络,可以在网络中加入节点,使用中间件来定制它的应用,所以要想把共识作为网络的一种属性,而不是只让它在应用层上实现,需要在实现的复杂度和中间件可达到的吞吐量中找到平衡点,则在网络中加入区块链共识协议提高系统效率是很好的选择,如pbft(practicalbyzantinefaulttolerance,实用拜占庭容错算法)/sbft(simplebyzantinefaulttolerance,简化拜占庭容错算法)/rbft(redundantbyzantinefaulttolerance,冗余拜占庭容错算法)等共识协议,而fpga(field-programmablegatearray,现场可编程门阵列)具有低功耗的特点,不受传统的cpu在数据处理方面的线速限制,在上面运行共识协议能够降低时间延迟,通过扩展中间件的功能或添加廉价的共识给网络处理节点,将共识协议更多的价值推广到网络。



技术实现要素:

鉴于上述,本发明提出了一种在网络级采用硬件实现共识验证的方法,不增加数据中心的容量,在fpga上实现pbft/sbft/rbft等区块链共识协议,降低了时间延迟。

一种在网络级采用硬件实现共识验证的方法,包括如下步骤:

(1)构建在网络级采用fpga实现共识验证的系统运行框架;

(2)fpga节点之间通过执行tcp/ip(transmissioncontrolprotocol/internetprotocol,传输控制协议/因特网互联协议)协议进行点对点连接;

(3)fpga节点采用arp(addressresolutionprotocol,地址解析协议)、icmp(internetcontrolmessageprotocol,internet控制报文协议)、dhcp(dynamichostconfigurationprotocol,动态主机配置协议)辅助tcp/ip协议与其他fpga节点交互,缩短tcp/ip堆栈,使fpga处于真实网络中;

(4)fpga节点将数据消息转化为满足共识协议需要的报文格式;

(5)由fpga节点采用pbft、sbft或rbft的区块链共识协议对数据消息进行传递广播,其他fpga节点收到后发送反馈并进行投票。

所述步骤(1)的具体实现方法为:在网络中布置一定量的fpga作为节点,任意两个fpga节点之间存在通道可进行交互,各fpga节点均通过连接交换机以实现同一时刻多对端口之间的数据传输,fpga节点利用其内部bram(嵌入式块ram)缓冲区较小的特点,以释放dram(动态随机存取存储器)内存空间用于共识和应用逻辑的执行。

所述步骤(2)的具体实现方法如下:由fpga节点内部缓冲区动态分配tcp会话,使客户端请求数据小于以太网mtu(maximumtransmissionunit,最大传输单元)大小;fpga节点只与其他节点之间相互重传,而不考虑与客户端之间的超时设定,以减少tcp的压栈;通过硬件实现网络协议允许建立两条真正的数据流通道对应实现隔离发送和接收路径,两条通道互不影响对方且通过数据结构共享连接状态。

所述数据结构包括会话查找表、端口状态表以及由定时器支持的事件引擎;其中,会话查找表包含ip地址、目的地址和源端口,fpga在实施时把其作为一个内容可寻址的存储器;端口状态表用于跟踪每个tcp端口的状态并为每个打开的tcp连接存储状态信息;事件引擎负责管理活动以及发送接口传入的请求并指示相应的输出引擎工作。

所述步骤(3)的具体实现方法为:在fpga设备间进行点对点通信,如果数据因为缓存空间不足或线路中断而丢失,则通过icmp向数据的源端报告,相关事件接收方会发送重发请求的通知;发送数据包时,若发送方没有接收方的mac地址但知道接收方的ip地址,则广播一个请求接收方mac地址的消息;由dhcp服务器为fpga节点分配一个空闲的ip地址,并打上有效时间戳;在arp、icmp、dhcp这些协议上发送和接收数据时,应用程序使用会话与网络堆栈通信,再直接将数据转发到特定应用程序的网络模块中;数据包在以太网上直接传播的过程中,利用序列号来探测数据是否丢失,所述序列号随着逻辑请求的增加而增加。

所述步骤(4)的具体实现方法为:将数据消息分为需要的模块,用metadata表示传输的元数据,用payload表示有效载荷;规范共识协议中的组成部分,用signature表示节点与节点交互的数字签名,用timestamp表示消息的时间戳,用cert表示fpga加入网络注册需要的证书。规范报文格式后利于区块链共识协议pbft/sbft/rbft等识别数据。

所述步骤(5)的具体实现方法为:在加入网络的fpga节点生成注册证书的前提下,首先选出领导节点,由领导节点将需要广播的数据消息使用哈希函数sha-256生成摘要,然后生成一个随机数nonce并利用硬件加密模块进行ecdsa(椭圆曲线数字签名算法)计算,生成对摘要的签名,进而采用pbft、sbft或rbft的区块链共识协议对签名后的数据信息进行传递广播;其他fpga节点收到数据信息后,验证签名是否是数据发出者的,确定数据合法性,然后发出收到消息的反馈通知并对数据进行投票工作。

本发明为了提高一致性而不降低性能,选择在硬件上实现共识协议,而不是增加更多的数据中心。本发明在硬件fpga系统上实现pbft/sbft/rbft等区块链共识协议,创建了能够增加中间件或者智能网络硬件的可再使用方案,并且可以使用硬件或逐步开始出现的硬件平台来处理tcp/ip网络协议和特定的网络协议工作。fpga可以在大多情况下访问dram芯片中的日志,读取高速缓冲存储器头,适合pbft/sbft/rbft等区块链共识协议在fpga硬件上实现。

传统的算法中,从tcp流中得到的有效载荷必须填满整个mtu数据包大小,所以为了等待更多的数据填满就必须等待一段时间,每个小于mtu大小的请求都会因为超时设定而延迟一段时间。而在本发明方案中,客户端请求总是小于以太网mtu大小1500b的,这样就能更好的缩短时间延迟。

附图说明

图1为节点之间交互关系示意图。

图2为fpga硬件的整体结构示意图。

图3为tcp堆栈结构示意图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

本实施方式布置了三个fpga硬件设备作为节点,节点使用fpga评估板,该评估板具有多个以太网接口。系统分为三个模块,网络协议模块、报文格式修改模块以及区块链共识协议模块,硬件结构整体如图1所示。

每两个节点之间存在通道可进行交互,使用交换机在同一时刻可进行多个端口对之间的数据传输,每个fpga中有相应的bram模块,bram缓冲区较小,能降低延迟而不影响性能,释放dram内存空间用来共识和应用逻辑的执行,所以保留大容量dram缓冲区,硬件整体结构如图2所示。节点之间通过执行tcp/ip协议进行点对点连接,fpga内部缓冲区动态分配tcp会话,客户端请求小于以太网mtu大小,fpga只与其他fpga之间相互重传,而不考虑与客户端之间的超时设定,减少了tcp的压栈。

网络协议模块中,采用tcp协议以及多个应用协议,tcp协议中为了减小时间延迟,减小储存占用的空间,硬件实现网络协议允许建立真正的数据流通道并隔离发送和接收路径,使他们不影响对方,两条通道通过数据结构共享连接状态。这些数据结构有会话查找表、端口表、状态表和由定时器支持的事件引擎,会话查找表包含的四元组映射会话id,对fpga作为一个内容可寻址存储器;端口表跟踪每个tcp端口的状态,为每个开放的tcp连接状态表存储信息;事件引擎负责管理活动并发送接口传入的请求,并指示相应的tx引擎工作。

bram内部缓冲区被分成几个fifo(firstinputfirstoutput,先入先出队列),动态分配tcp会话,当bram缓冲区可以确定一个fifo队列中一个完整的请求可用时,就将其转发给应用程序逻辑。如果所有的fifo队列都满了,为了不丢失任何数据,就依靠tcp的重传机制重传数据。客户端请求总小于以太网mtu大小,除掉超时设定后,fpga除了和其他fpga之间的相互重传之外,请求在不同层中传播不会因为mtu的大小不同而被分割开来。应用协议中,数据包在以太网上直接传播,用序列号来探测数据是否丢失,序列号随着逻辑请求的增加而增加。fpga设备间进行点对点通信,如果数据因为缓存空间不足或线路的中断而丢失,接收方会发送重发请求的通知,在该协议上发送和接收数据时,应用程序在与网络堆栈通信时使用会话,以便它们直接转发到特定于应用程序的网络模块;tcp堆栈结构如图3所示。

报文格式转化模块中,具体将数据分为需要的模块,用metadata代表传输的元数据,payload代表有效载荷。规范共识协议中的组成部分,用signature代表节点与节点交互的数字签名,用timestamp代表消息完成的时间戳,cert代表fpga加入网络注册需要的证书等。

区块链共识协议模块中,fpga节点采用区块链共识协议传递消息,如pbft/sbft/rbft等,其他节点收到共识消息后发送收到信息的反馈并投票。在加入网络的fpga节点生成注册证书的前提下,即fpga节点作为合法节点进入网络。将三个fpga节点编号0,1,2,首先根据区块高度对3取模(三个fpga节点),得到的余数即对应fpga的编号,这样选出领导节点。领导节点将规范了报文格式之后需要广播的数据消息使用哈希函数sha-256生成摘要,然后生成一个随机数nonce,并用硬件加密模块进行ecdsa计算,生成对摘要的签名,向其他节点提交证明。其他节点收到数据信息后,通过随机数nonce验证签名是否是数据发出者的,确定数据合法性,然后进行收到消息的反馈通知并对数据进行投票工作。

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

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