用于随机差分中继和网络编码的系统和方法与流程

文档序号:22760119发布日期:2020-10-31 09:59阅读:134来源:国知局
用于随机差分中继和网络编码的系统和方法与流程
本发明大体上涉及计算机网络,并且更具体地涉及在节点、电子通信和联网技术的网络中传播数据的方法和装置。它特别适合与区块链技术相关的使用。特别地,它涉及数据的安全传输,从而用于减少第三方进行的潜在的恶意事件(即攻击)。
背景技术
:在本文档中,我们使用术语“区块链”来包括电子的基于计算机的分布式分类账(ledger)的所有形式。这些包括但不限于区块链和交易链技术、许可的和未被许可的分类账、共享分类账及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币分类帐。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本发明不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本发明的范围内。本文使用术语“比特币”来指代衍生或基于比特币协议的所有变型或版本。区块链是一种基于共识的电子分类帐,实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一种数据结构,该数据结构对区块链系统中参与者之间的数字资产控制的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起来创建所有交易的永久、不可更改的记录,这些交易自其开始就已经写入区块链。交易包含嵌入到其输入和输出中的称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。接收到新交易的网络节点将迅速尝试将该交易推送到网络中的其他节点。在新交易被传输到其他节点之前,它会被“验证”,这意味着将根据成组的标准对其进行检查,以确保该交易满足根据适用的区块链协议进行适当交易的基本要求。为了将交易写入区块链,节点(“矿工”或“挖掘节点”)将其合并到区块中,该节点被设计用于收集交易并将其形成区块。然后,矿工尝试针对该节点完成“工作证明”。整个区块链网络中的矿工竞相成为第一个组装交易区块并完成该区块的关联工作证明的人。成功的矿工将其确认的区块添加到区块链中,并且该区块通过网络传播,以便维护区块链副本的其他节点可以更新其记录。那些接收到区块的节点还“验证”该区块及其中的所有交易,以确保其符合协议的形式要求。区块链技术(例如,比特币)的公认优势之一是交易的匿名性。比特币用户的个人详细信息并未正式和明确地附加到比特币地址,并且区块链的比特币分类账仅包含公共地址信息。但是,由于区块链被构造为运行在互联网上的分布式对等网络,因此交易的匿名性可能因攻击而受到损害,该攻击使用互联网协议(ip)地址信息将用户链接到网络活动。举例来说,在基于区块链的网络上进行的去匿名化攻击(例如,ip流量分析)可能使感兴趣的第三方能够监视网络上用户提交的交易,并能够使用可公开获取的信息将交易链接到其源头(source),例如,通过将用户的公钥与其ip地址链接起来。对于基于区块链的网络而言,流量分析尤其成问题,该基于区块链的网络依赖于网络节点进行的交易的传播以及网络节点之间的交易的传播。网络中接收交易的每个节点都会验证交易,然后将其传输到对等节点。在比特币协议中,节点将向对等节点发送包含交易列表的“inv”消息,并接收“getdata”响应消息,该消息选择在“inv”消息中通告的交易的某个子集。然后,该节点将请求的交易传输到对等节点。针对该节点连接到的每个对等节点执行该过程。攻击者可能拦截和分析在网络中传播交易时传输的数据,并最终获得信息,这些信息可用于链接交易的源头和目的地。技术实现要素:期望提供用于在基于区块链的网络中传播交易的技术,该技术可以通过流量分析或其他类型的去匿名攻击来减少损害网络匿名性的可能性。更一般地,期望提供用于在对等网络的节点之间中继数据的技术以降低去匿名攻击的脆弱性。现在已经设计出这样的方案。因此,根据本发明,提供了如所附权利要求书中限定的方法和装置。本发明可以提供一种节点,用于在节点的网络中传播数据分组。网络中的每个节点可以具有到其他节点的一个或多个连接。该节点可以包括处理器、提供网络连接性的网络接口以及存储器。存储器可以包括处理器可执行指令,该处理器可执行指令在由处理器执行时使处理器执行以下列出的一个或多个操作。该节点可以被设置为:在第一时间段期间收集第一数据分组的集合,该集合包括从网络中的一个或多个第一节点接收的至少一个数据分组。指令可使处理器获得多个编码的数据分组,该多个编码的数据分组中的每一个是通过使用网络编码来组合该集合中的两个或更多个第一数据分组而生成的。该指令可使处理器确定多个编码的数据分组和该集合中的第一数据分组与连接到该节点的一个或多个相邻的节点的映射,以及可以根据确定的映射将多个编码的数据分组和该集合中的第一数据分组传输到一个或多个相邻的节点。在一些实现方式中,第一时间段具有预定长度。在一些实现方式中,确定映射包括:确定集合的第一数据分组到一个或多个相邻的节点的第一子映射以及多个编码的数据分组到一个或多个相邻的节点的第二子映射,第一子映射和第二子映射指示将多个编码的数据分组和集合中的第一数据分组的每一个中继到一个或多个相邻的节点的期望的时间。在一些实现方式中,对于该集合中的每个第一数据分组,确定第一子映射包括:任意选择连接到该节点的两个或更多个相邻的节点,以及将选择的两个或更多个相邻的节点与第一子映射中的第一数据分组相关联。在一些实现方式中,对于一个或多个相邻的节点中的每一个,获得多个编码的数据分组包括:识别与第一子映射中的相邻的节点相关联的两个或更多第一数据分组,以及组合识别的两个或更多个第一数据分组以生成编码的数据分组。在一些实现方式中,对于该集合的一个或多个第一数据分组中的每一个,根据确定的映射,将多个编码的数据分组和集合中的第一数据分组传输到一个或多个相邻的节点包括:确定将第一数据分组中继到相邻的节点的下一个预定时间,以及在中继的下一个预定时间之后,将第一数据分组中继预定时间量。在一些实现方式中,对于一个或多个编码的数据分组中的每一个,根据确定的映射,将多个编码的数据分组和集合中的第一数据分组传输到一个或多个相邻的节点包括:确定将编码的数据分组中继到相邻的节点的下一个预定时间,以及在中继的下一个预定时间之后,将编码的数据分组中继预定时间量。在一些实现方式中,对于至少一个相邻的节点中的每一个,根据确定的映射,将多个编码的数据分组和集合中的第一数据分组传输到一个或多个相邻的节点包括:确定相邻的节点在第一子映射中具有两个或更多个相关联的第一数据分组,以及将两个或更多个相关联的第一数据分组的子集传输到相邻的节点。本申请可以描述一种在节点的网络中传播数据分组的计算机实现的方法。网络中的每个节点可以具有到其他节点的一个或多个连接。可以在节点之一处实现的方法可以包括:在第一时间段期间收集第一数据分组的集合,该集合包括从网络中的一个或多个第一节点接收的至少一个数据分组。该方法可以包括:获得多个编码的数据分组,该多个编码的数据分组中的每一个是通过使用网络编码来组合该集合中的两个或更多个第一数据分组而生成的。该方法可以包括:确定多个编码的数据分组和该集合中的第一数据分组与连接到该节点的一个或多个相邻的节点的映射,以及根据确定的映射将多个编码的数据分组和该集合中的第一数据分组传输到一个或多个相邻的节点。本申请还可以描述一种非暂时性处理器可读介质,其存储处理器可执行指令以参与用于在节点的网络中传播数据分组的过程,其中,处理器可执行指令在由在多个参与节点中的一个中的处理器执行时,使处理器执行本文描述的一种或多种方法的操作。本申请可以描述用于在网络中提供节点级匿名的方案。更特别地,本文描述的方法和系统可以促进模糊节点在网络内的数据传播方案中的功能。即使攻击者要监视网络中的节点间流量或获得对特定节点的相邻的节点的访问权限,本方法可以使其具有挑战性,因为这样的攻击者要确定特定节点是网络中正在传播的数据分组的源头还是中继节点。通过模糊区块链网络中节点的功能/角色,可以降低网络上的去匿名攻击的功效,并且可以提高在区块链上传输数据的安全性。在本文所述的许多示例实现方式中,具体参考了区块链交易;然而,应了解,本文中所描述的方法和装置可结合非区块链数据传播来实施和应用。更一般地,本公开中描述的方法和装置可以适用于在对等网络的节点之间传播各种不同类型的数据。附图说明关于本发明的一个方面或实施例描述的任何特征也可以关于一个或多个其他方面/实施例来使用。通过参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并且被阐明。现在将仅通过举例的方式并参考附图来描述本发明的实施例,其中:图1示出了与区块链相关联的示例网络。图2示意性地示出了具有输入缓冲器和输出缓冲器的示例区块链节点。图3是用于在节点的示例网络中传播数据分组的协议,即扩散混合器协议(dmp)的示意图。图4示出了节点的简化示例网络。图5以流程图形式示出了根据dmp用于在区块链网络中传播数据分组的示例过程。图6a-图6c以流程图形式示出了根据dmp用于在区块链网络中传播数据分组的另一示例过程。图7以框图形式示出了示例区块链节点。具体实现方式在本申请中,术语“和/或”旨在涵盖所列元件的所有可能的组合和子组合,包括单独列出的任一元件、任何子组合或所有元件,而不必排除其他元件。在本申请中,短语“……或……中的至少一个”旨在涵盖所列的元件中的任何一个或更多个,包括单独列出的任一元件、任何子组合或所有元件,而不必排除任何附加元件,也不必需要所有元件。首先将参考图1,其以框图形式示出了与区块链相关联的示例网络,该示例网络在本文中可被称为区块链网络100。区块链网络100是对等开放成员网络(peer-to-peeropenmembershipnetwork),任何人都可以加入,而无需邀请或无需经其他成员的同意。运行区块链协议的实例的分布式电子装置可以参与区块链网络100,区块链网络100在该区块链协议下运行。这种分布式电子装置可以被称为节点102。区块链协议可以是例如比特币协议或其他加密货币。运行区块链协议并且形成区块链网络100的节点102的电子装置可以是各种类型,包括例如诸如台式计算机、膝上型计算机、平板计算机、服务器之类的计算机,诸如智能电话之类的移动装置,诸如智能手表或其他电子装置之类的可穿戴装置。使用适当的通信技术将区块链网络100的节点102彼此耦合,该通信技术可以包括有线通信技术和无线通信技术。在许多情况下,区块链网络100至少部分地在互联网上实现,并且一些节点102可以位于地理上分散的位置。节点102维护分组成区块的区块链上的所有交易的全局分类帐,每个区块都包含链中前一个区块的哈希值。全局分类帐是分布式分类帐,并且每个节点102可以存储全局分类帐的完整副本或部分副本。节点102影响全局分类帐的交易由其他节点102验证,从而全局分类帐的有效性得到维护。本领域的普通技术人员将理解实现和操作诸如使用比特币协议的区块链网络的细节。每个交易通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定如何访问交易的输出以及由谁访问交易的输出。交易的输出可以是作为交易的结果而将价值转移到的地址。然后将该价值与该输出地址相关联,作为未花费的交易输出(utxo)。然后,后续交易可以引用该地址作为输入,以花费或分散该价值。节点102可以执行从网络路由到钱包服务的许多不同功能,以维护健壮和安全的分散式公共分类账。“完整节点”包含区块链的完整且最新的副本,因此可以验证公共分类账上的任何交易(已花费或未花费)。“轻量级节点”(或spv)维护区块链的子集,并可以使用“简化支付验证”技术来验证交易。轻量级节点仅下载区块的标题,而不下载每个区块内的交易。因此,这些节点依靠对等方来验证其交易。“挖掘节点”可以是完整或轻量级的节点,负责验证交易并在区块链上创建新区块。通常为轻量级节点的“钱包节点”处理用户的钱包服务。节点102使用诸如tcp/ip(传输控制协议)等面向连接的协议彼此通信。当节点希望向对等方发送交易时,会向对等方发送“inventory(库存)”消息,传输对于传输节点而言已知的一个或多个库存对象。如果对等方以“getdata(得到数据)”消息(即完整的交易请求)进行答复,则使用“transaction(交易)”消息发送交易。假定是有效交易,则接收交易的节点以相同的方式将其转发给其对等节点。现在参考图2,其示意性地示出了具有输入缓冲器202和输出缓冲器204的示例节点200。示例节点200具有与多个对等节点(如inta、intb、intc、intd等)的网络接口。输入缓冲器202示出了来自各个对等节点的传入交易(incomingtransaction),输出缓冲器204示出了与交易相对应的输出网络分组,用于通过相应的接口传输到对等节点。根据节点200的操作系统提供的基元,在应用程序级别上串行发送和接收网络数据分组。假定交易x适合单个以太网/ip数据分组,则其传输到m个对等方需要缓冲m个不同的输出网络数据分组。输入网络数据分组和输出网络数据分组两者以及其他信息将包含序列化的交易和代表与发送/接收对等方的tcp/ip连接的逻辑接口id。一旦生成比特币交易,源节点通过网络广播交易消息。通常,当客户端生成交易时,将该交易放入输出缓冲器204中。该交易可以立即或可以不立即转发给对等方。在比特币网络的当前实现方式中,交易通过称为“扩散传播”的机制进行传播,由此每个交易源以独立的指数延迟将交易传输到其邻居。传播中的延迟是随机的,可用于在恶意攻击者的时间估计中引入不确定性。一旦对等方接收到某个交易,则该对等方可能不接受同一交易的未来中继;例如,交易的哈希值可以存储在对等方的内存池中,从而允许对等方拒绝相同的交易。通过网络进行的交易“扩散”是对称的,这意味着转发节点不会使用影响交易广播的有关相邻的节点的ip地址的信息。例如,在“标准”扩散过程(在比特币协议中使用)中,广播节点的对等方都接收相同的交易,并且在每个中继实例中,每个对等方一次仅中继(relay)一个交易。已经了解网络的点对点图结构的恶意的第三方在进行去匿名化攻击时可以利用这种“扩散”的对称性质。本公开提供用于区块链网络上的数据中继的替代技术,以提高针对流量分析攻击的保护。更具体地,提出的中继协议可以用于掩盖、隐藏或模糊数据分组的源节点与其ip地址之间的连接。本申请还描述了促进数据分组的快速传播的方法和装置。在一些实现方式中,节点选择性地使得能够使用网络编码来将两个或更多个数据分组组合成单个消息以发送给对等节点。网络编码的选择性使用可以基于确定该节点是潜在瓶颈。在节点的网络的背景下,瓶颈是节点之间的链接(边缘),通过例如减慢数据分组的传输来限制网络的性能。瓶颈(节点之间的链接)的来源是节点。通常,可以基于到该节点的导入链接(扇入)的数量是否超过从该节点的导出链接(扇出)的数量来确定节点是否可能成为瓶颈。网络编码的引入可以提高节点的网络(例如,区块链网络)中数据传输的效率。提出了一种数据中继协议,扩散混合器协议(dmp)。dmp包括两个独立的扩散阶段。第一阶段(“随机差分中继”或rdr)允许中继的数据分组混合以及模糊数据分组源。在随机差分中继阶段期间,每个节点在向网络广播数据分组之前要等待预定时间量,以从其对等方接收并收集多个数据分组。然后节点创建到其“入口节点”的外发连接(outgoingconnection),并且将具有近似相同时间戳的不同数据分组发送到这些入口节点的任意(例如,随机地)选择的子集。节点的入口节点是直接外发连接可以从该节点建立到的那些相邻的节点。入口节点的选择的随机性和中继的数据的多样性可以使攻击者更难以重构网络拓扑。第二阶段(“标准扩散”)确保网络中数据分组的及时且可靠的传播。在标准扩散阶段,每个节点将相同的数据分组中继到其所有入口节点,并且在每个中继实例中,每个入口节点一次仅中继一个数据分组。应当注意,在诸如区块链网络之类的节点的网络中,一个或多个节点能够实现dmp。具体而言,网络的一个或多个节点能够通过参与dmp将其接收到的数据分组中继到其入口节点。参与节点可以例如在rdr过程和标准扩散过程之间进行选择,以传播特定的数据分组。网络的节点可以选择参与dmp,通过分散的方式或通过包含在由中央机构组装的成组的参与节点中来加入协议。参与节点根据dmp中继其输出数据分组。特别地,如果参与节点接收到数据分组,则该节点可以使用由dmp规定的规则,根据为该节点选择的传播模式来转发接收到的数据分组。参照图3至图7描述提出的用于数据分组中继的dmp。在图3中提供了dmp的示意性可视化。示出了节点的示例区块链网络300。每个节点代表网络终端(即,区块链节点),而边缘则代表节点之间的链接。为了说明的目的,假定对于每个链接,可以一次发送或接收单个比特。在该示例网络300中,当节点接收到新的数据分组时,该新的数据分组通过网络被传播到所有其他节点。每个节点将新的数据分组存储在其相应的当地集合中,并将新的数据分组转发到尚未拥有新数据分组的任何对等节点。由于区块链网络300的点对点性质,所有节点不会同时接收到新的数据分组,这意味着新数据分组到达网络300中的所有节点将花费一些时间。图3示出了用于传播特定数据分组tx1的dmp的两个阶段,即,用于tx1的随机差分中继302和标准扩散304。数据分组tx1的源节点310可以在时间t1生成数据分组tx1或从对等节点接收数据分组tx1。根据dmp,源节点310在开始广播接收/排队的数据分组之前,等待从其相邻的节点接收至少一个另外的引入的数据分组。在图3的示例中,一旦数据分组tx2在时间t2被源节点310接收,则数据分组tx1和tx2在时间t3被发送到源节点310的入口节点的任意选择的子集。数据分组tx1被转发到入口节点310c和310d,而数据分组tx2被转发到入口节点310a和310b。图3的示例仅是说明性的;特别地,源节点310可以在传播其任何接收到的数据分组之前等待接收多于两个的传入数据分组。入口节点将接收到的数据分组中继到其自己的对等方。例如,节点310b和310d分别将数据分组tx2和tx1转发到其相邻的节点中的一个或多个。在dmp中,数据分组的每个接收者独立地选择传播接收到的数据分组的模式。节点320是选择标准扩散作为其扩散模式的节点的示例。如图3所示,节点320将相同的数据分组tx1转发到其所有入口节点(即,320a、320b、320c、320d和320e)。根据本申请的一个方面,区块链节点在特定时间段上收集/缓冲第一数据分组,然后使用网络编码来组合两个或更多个收集到的第一数据分组以生成编码的数据分组。即,区块链节点对多个第一数据分组进行编码以产生编码的数据分组,使得其可以被解决(unravelled)。编码的数据分组的大小为第一数据分组中最大的一个加上较小的开销。现在参考图4,其示出了网络400中的节点的简化示例网络。每个节点表示网络终端(例如,区块链节点),而边缘表示节点之间的链接。为了说明的目的,假定对于每个链接,可以一次发送或接收单个比特。两个节点被标记为源头s1和s2,分别接收两个新的数据分组tx1和tx2。在该示例网络400中,当节点接收到新的数据分组时,新的数据分组通过网络被传播到所有其他节点。每个节点将存储新接收到的数据分组,并将该数据分组转发到尚未具有数据分组的任何对等节点。由于网络400的对等性质,所有节点不会同时接收到新的数据分组,这意味着新数据分组到达网络400中的所有节点将花费一些时间。区块链网络400的两个节点标记为接收方r1和r2。节点i1和i2是中间节点,i1和i2之间的链接代表了在时间t网络400的瓶颈。当节点i1大约同时接收到两个新的数据分组tx1和tx2时,它必须决定首先发送两个数据分组中的哪一个。使用网络编码,节点i1可以将新的数据分组tx1和tx2组合成编码的数据分组(例如,复合消息)m,该编码的数据分组的大小与tx1和tx2中的较大者的大小相同。例如,编码的数据分组m可以是tx1和tx2的线性组合。节点i1将m发送到节点i2,然后将m转发到接收方r1和r2。接收方r1和r2能够恢复单独的数据分组tx1和tx2。例如,接收方r1将接收tx1和m。由于m基于tx1和tx2的组合(例如,tx1和tx2的二进制xor),因此r1仅需求解等式(tx1,tx1+tx2)即可得出tx2。同样,r2将接收tx2,并且需要求解等式(tx2,tx1+tx2)来得出tx1。瓶颈可能随着时间出现或消失,这取决于网络的配置以及在任何给定时间生成数据分组的位置。瓶颈是节点之间的链接(边缘),严重限制了网络的性能,特别是在区块链网络的情况下,瓶颈减慢了数据分组(例如,交易或区块)的传输。但是,瓶颈(节点之间的链接)的来源是节点。开发了网络编码,以替代当前主要的分组交换网络。网络编码将网络建模为具有链路容量的有向图(n,l),表明节点n∈n可以以达到广播容量h的速率将信息传达给接收方的集合,其中,假定在网络的内部节点进行编码,h为s和任意r∈r之间的最小切割的值。切割c被定义为将图g=(v,e)的顶点v分成两个不相交的子集s和t。切割c=(s,t)的切割集合为边缘的集合{(u,v)∈e|u∈s,v∈t},该边缘在s中具有一个端点而在t中具有另一个端点。网络编码的示例方法在以下文献中进行了描述:p.a.chou,y.wu,和k.jain,“practicalnetworkcoding(实用的网络编码)”,proceedingsoftheannualallertonconferenceoncommunicationcontrolandcomputing,第41卷,第40-49页,大学(2003)(下文称“chou”),在此引用作为参考。这种方法消除了对网络拓扑或编码或解码功能的任何集中知识的需求。chou指出,网络n可以表示为具有单位容量边缘(e)、发送方s∈v和一定数量的接收方的非循环图g=(v,e)。节点v=in(e)的每个边缘e∈e输出具有符号y(e),该符号是进入v的边缘e′上的符号y(e′)的线性组合。特别是,通过以下等式给出输出:y(e)=σe′:out(e′)=vme(e′)y(e′)其中,y(e′i)=xi,i=1,...,h,向量me是表示边缘e在节点v处的编码函数的局部编码向量,h表示广播容量为发送方和接收方之间的任何切割的最小边数。chou指出,在任意边缘e∈e上的输出y(e)是源符号的线性组合系数g(e)=[g1(e),...,gh(e)]的h维向量可以通过g(e)=∑e′:out(e′)me(e′)g(e′)递归获得,其中,边缘e′i上的g(e′i)被发起到第i个单位向量。向量g(e)可以称为沿着e的全局编码向量。如果全局编码向量的矩阵gt的等级为h,则沿其h个引入边缘(incomingedges)接收以下符号的任何节点t都可以恢复源符号x1,...,xh:引出边缘(outgoingedge)e的全局编码向量可以被表征为基于引入边缘e′的全局编码向量的局部编码。应当理解,网络编码可以用于通过网络传播数据分组。网络编码的使用可以提供能够从来自网络的存储数据分组的两个或更多个节点的丢失中恢复的附加优点。特别地,因为中间节点已经接收到包含与数据分组有关的组合数据的一个或多个消息,所以可以从网络编码的消息中恢复丢失的数据分组。现在参考图5,其以流程图形式示出了在dmp的rdr阶段中用于在网络中传播数据分组的示例方法500。方法500由例如诸如网络100的区块链网络的节点实现。在这样的背景下,节点可以被理解为指代区块链网络中的挖掘节点、完整节点、验证器节点或其他类型的离散区块链节点。该节点是具有实现区块链协议的执行软件、计算资源和网络连接的计算装置。在操作502中,与节点相关联的客户端在第一时间段t内收集第一数据分组的集合。即,该节点在一段时间内累积传入的第一数据分组。在区块链网络的背景下,第一数据分组可以包括区块链交易。该集合包括从网络中的一个或多个对等节点接收到的至少一个数据分组,即传入的数据分组。在区块链网络中,在时间段t中,节点通过为待中继的传入交易监视网络来累积交易的集合。时间段t的长度可以是预定的。在一些示例实现方式中,时间的长度可以基于诸如平均连接时间、每单位时间接收到的数据分组的平均数量或网络内节点的中心性(即,到节点的传入连接的数量)的参数而变化。在时间段t期间,可以仅允许节点累积第一数据分组,因此可以防止在时间段t的持续时间内发送任何第一数据分组。在操作504中,获得多个编码的数据分组。通过使用联网编码(networkingcoding)和局部编码向量组合集合中的两个或更多个第一数据分组,生成每个编码的数据分组。例如,可以通过使用xor联网编码方案来生成多个编码的数据分组,即,编码包括第一数据分组的xor编码。如上所述,随机差分中继表示背离了用于在节点的网络中传播数据分组的“标准扩散”协议。在实施rdr时,传播节点会将不同的数据分组以及数据分组的组合同时中继到随机选择的入口节点的子集。传播节点可以通过向每个收集到的数据分组随机地指派该数据分组应当被中继到的一个或多个入口节点来创建数据结构。更一般地,将数据分组中继到其对等方的网络节点可以维护其自己的内部路由数据结构,该内部路由数据结构指定针对由该节点收集(即,接收到的或局部生成的)到的多个数据分组中的每一个执行的中继的类型。在本文提出的扩散混合器协议的背景下,实现rdr的区块链网络中的每个节点都可以独立地构建其自己的路由数据结构或“rdr表”。rdr表为采用rdr协议的每个节点定义数据分组分配方案。也就是说,单个节点的rdr表用于管理将哪些数据分组中继到哪个对等方以及何时中继。rdr表可以跟踪在给定的时间量δtrdr中接收或生成的所有数据分组以及数据分组的源对等方。rdr表可以包括附加信息,例如:数据分组第一实例的到达时间(“toa时间戳”);为中继数据分组选择的时间(“tor时间戳”);和/或该节点接收到的相同数据分组的实例数的计数器。下面提供了一个示例rdr表。表1数据分组id源头目的地数据tx1a,b,dc,e…tx2[局部]a,c,e…tx3d,ea,b…随着新信息(超时、接收到的或生成的交易)可用,可以动态更新(即,实时)节点的局部rdr表。在操作506中,节点确定多个编码的数据分组(在操作504中生成的)和在操作502中收集的第一数据分组到连接至该节点的一个或多个相邻的节点的映射。该映射可以指示将每个编码的数据分组和收集的集合中的第一数据分组中继到相邻节点的期望时间。该“映射”用于为网络的节点构造单独的rdr表。特别地,映射指示数据分组(在节点处接收到的或生成的)的分配,以传输到其相邻的节点。在操作508中,一旦确定了编码的数据分组和收集的集合中的第一数据分组到相邻节点的映射,则根据确定的映射,所述数据分组被传输到相邻的节点。编码的数据分组和收集的第一数据分组被中继到它们在操作506中确定的映射中分别与之相关联的节点。现在参考图6a,其以流程图的形式示出了在dmp的rdr阶段中用于在网络中传播数据分组的示例方法600。方法600由例如区块链网络(例如,网络100)的节点实现。在这样的背景下,节点可以被理解为指代区块链网络中的挖掘节点、完整节点、验证器节点或其他类型的离散区块链节点。该节点是具有实现区块链协议的执行软件、计算资源和网络连接的计算装置。在操作602中,与节点相关联的客户端在第一时间段t内收集第一数据分组的集合。节点在时间段内累积传入的第一数据分组,该时间段可以具有预定长度。在时段t到期后,在操作604中,确定收集的第一数据分组到相邻的节点的第一映射。图6b示出了用于在操作604中确定第一映射的示例技术。如操作702中所示,在一些实现方式中,节点可以任意选择其入口节点的子集,收集到的第一数据分组的不同集合将被转发到该子集。即,对于每个收集到的第一数据分组,该节点可以任意选择其入口节点(即,相邻的节点,该节点与其具有外发连接)中的两个或更多个,并将该第一数据分组分配给选择的入口节点。例如,可以随机选择入口节点。在一些实现方式中,节点可以查询网络以获得其对等方的新地址。在比特币网络中,节点可以查询一个或多个数据库源名称(dsn),该一个或多个数据库源名称(dsn)嵌入在比特币核心、比特币j或其他区块链协议中并由比特币(或其他区块链)社区成员维护。作为响应,该节点将获得一个或多个dsn记录,这些记录显示可以接受传入连接的可用完整节点的ip地址。可以通过让对等方向加入网络的新节点发送包含其ip地址和端口号的“addr”消息来实现对等方发现的分散版本。在一些实现方式中,作为操作604的一部分,网络中的一个或多个节点可以维护表或其他数据结构,该表或其他数据结构跟踪其将每个收集的第一数据分组分配给该第一数据分组应当被中继到的入口节点。在rdr过程中,多个数据分组可以由转发节点同时中继到同一对等节点。在操作606中,获得多个编码的数据分组。通过使用联网编码和局部编码向量组合两个或更多个收集到的第一数据分组,生成每个编码的数据分组。例如,xor联网编码方案可以用于生成编码的数据分组。在一些实现方式中,通过组合数据分组来获得编码的数据分组,该数据分组被分配到第一映射中的同一相邻的节点/与第一映射中的同一相邻的节相关联,该第一映射在操作604中确定。图6c示出了用于获得编码数据分组的示例技术。在操作802中,对于一个或多个相邻的节点中的每一个,该节点在第一映射中识别与该相邻的节点相关联的两个或更多个第一数据分组,并且组合识别的第一数据分组以生成编码的数据分组。参照表1,其示出了第一数据分组(即,tx1-tx3)到相邻的节点(即,节点a-e)的示例第一映射,数据分组tx2和tx3都被分配给相邻的节点a,数据分组tx1和tx2都被分配给相邻的节点c,数据分组tx1和tx2都被分配给相邻的节点e。对于此示例数据中继,在操作606中,可以在节点处生成编码的数据分组tx1+tx2和tx2+tx3。在操作608中,确定生成的编码数据分组到相邻的节点的第二映射。第二映射将每个编码的数据分组分配给一个或多个相邻的节点进行传输。在至少一些实现方式中,第二映射将编码的数据分组分配给与第一映射中的编码的数据分组的组成第一数据分组中的至少一个相关联的那些节点。例如,通过第二映射,编码的数据分组tx1+tx2可以被分配给相邻的节点c和/或e,编码的数据分组tx2+tx3可以被分配给相邻的节点a或c。在操作610中,在操作606中获得的编码的数据分组和在操作602中收集的第一数据分组根据第一映射和第二映射被传输到相邻的节点。在一些实现方式中,节点可以确定特定的相邻节点在第一映射中具有两个或更多个相关联的第一数据分组。在这样的情况下,仅两个或更多个相关联的第一数据分组的子集可以被传输到该相邻的节点。例如,在表1所示的示例中,仅数据分组tx2可以被传输到相邻的节点a。由于编码的数据分组tx2+tx3也被传输到节点a,因此tx2和tx3都可以在节点a处得到(例如,通过xor运算),即使最终仅将这两个数据分组中的一个中继到节点a。在不知道联网编码方案的细节或者甚至不知道联网编码的使用的情况下,如果仅传输被组合的第一数据分组的子集,则在网络中继中拦截传输的攻击者可能不能导出编码的数据分组的组成的第一数据分组。应当注意,可以根据与方法600中建议的顺序不同的顺序来确定编码的数据分组和收集的第一数据分组到相邻的节点的映射。在一些实现方式中,在收集第一数据分组的集合之后,可以使用网络编码从收集到的第一数据分组生成多个编码的数据分组,并且可以首先确定编码的数据分组到相邻的节点的第一映射。例如,第一映射可以将每个编码的数据分组分配给任意选择的相邻的节点的子集。然后可以确定收集到的第一数据分组到相邻的节点的第二映射。特别地,第二映射可以将第一数据分组分配给与编码的数据分组相关联的那些节点,该编码的数据分组在第一映射中将第一数据分组与一个或多个其他数据分组组合。在一些实现方式中,第一数据分组和编码的数据分组的中继可以被预定(schedule),使得延迟被引入到数据分组到相邻的节点的实际传输中。例如,对于一个或多个收集到的第一数据分组中的每一个,可以确定将第一数据分组中继到相邻的节点的下一个预定时间,并且第一数据分组的实际中继可以被延迟预定时间量。即,第一数据分组可以在中继的下一个预定时间之后被中继预定时间量。类似地,对于一个或多个编码的数据分组中的每一个,可以确定将编码的数据分组中继到相邻的节点的下一个预定时间,并且可以在中继的下一个预定时间之后的预定时间量实现数据分组的实际中继。现在将参考图7,其以框图的形式示出了参与节点900的简化示例。节点900包括处理器902,该处理器902可以包括一个或多个微处理器、专用集成芯片(asic)、微控制器或类似的计算机处理装置。节点900还包括存储器904和网络接口906,该存储器904可以包括持久性存储器和非持久性存储器,用于存储值、变量,以及在某些情况下,用于存储处理器可执行的程序指令,该网络接口906用于在有线或无线网络上提供网络连接性。节点900包括处理器可执行区块链应用程序908,该处理器可执行区块链应用程序908包含处理器可执行指令,该处理器可执行指令在被执行时使处理器902执行本文所述的功能或操作中的一个或多个。将理解的是,可以使用标准计算机编程技术和语言来实现本文描述的装置和过程以及实现所描述的用于配置区块链节点的方法/过程的任何模块、例程、过程、线程、应用程序或其他软件组件。本申请不限于特定的处理器、计算机语言、计算机编程约定、数据结构或其他这样的实现细节。应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施例而不脱离由所附权利要求书限定的本发明的范围。在权利要求书中,括号中的任何附图标记都不应解释为对权利要求的限制。单词“包括”和“包含”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括”是指“包含或由……组成”。元素的单数形式并不排除此类元素的复数形式,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个器件的装置权利要求中,这些装置中的几个可以由一个且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1