首页> 中国专利> 用于在节点的网络中传播数据分组的系统和方法

用于在节点的网络中传播数据分组的系统和方法

摘要

公开了一种在节点的网络中传播数据分组的方法。该方法包括:在第一时间段期间收集第一数据分组的集合,该集合包括从网络中的一个或多个第一节点接收的至少一个第一数据分组;确定网络节点到连接至该网络节点的多个邻居节点的链路中的可用带宽;确定映射,该映射将用于中继的第一数据分组中的每一个分配给一个或多个邻居节点;该映射指示第一数据分组中的每一个的中继的预期时间,其中,确定映射包括:将可用带宽用作为第一数据分组中的每一个设置以下各项中的至少一个的基础:对等节点的第一数量,通过映射将第一数据分组分配至所述第一数量的对等节点以用于中继;将第一数据分组中继到一个或多个对等节点时的时间延迟的第一时长;以及第一数据分组自网络节点起行进的跳数;以及根据确定的映射将集合的第一数据分组传输到多个邻居节点。

著录项

  • 公开/公告号CN112189328A

    专利类型发明专利

  • 公开/公告日2021-01-05

    原文格式PDF

  • 申请/专利权人 区块链控股有限公司;

    申请/专利号CN201980034792.5

  • 发明设计人 西尔维娅·巴托鲁奇;S·马蒂奥;

    申请日2019-05-09

  • 分类号H04L29/06(20060101);

  • 代理机构72003 隆天知识产权代理有限公司;

  • 代理人石海霞;金鹏

  • 地址 安提瓜和巴布达圣约翰

  • 入库时间 2023-06-19 09:24:30

说明书

技术领域

本发明大体上涉及计算机网络,并且更具体地涉及在节点、电子通信和联网技术的网络中传播数据的方法和装置。它特别适合与区块链技术相关地使用。特别地,它涉及数据的安全传输,并且用于减少第三方进行的潜在的恶意事件(即攻击)。

背景技术

在本文档中,我们使用术语“区块链”来包括电子的基于计算机的分布式分类账(ledger)的所有形式。这些包括基于共识的区块链和交易链技术、许可的和未被许可的分类账、共享分类账及其变型。尽管已经提出并开发了其他区块链实现方式,但是区块链技术最广为人知的应用是比特币分类帐。尽管为了方便和说明的目的在本文中可能提及比特币,但是应当注意,本发明不限于与比特币区块链一起使用,并且替代的区块链实现和协议落入本发明的范围内。术语“用户”在本文中可以指人或者基于处理器的资源。术语“比特币”旨在包括源自(原始)比特币协议/实现/平台的协议/实现/平台的所有版本和变型。

区块链是一种点对点的电子分类帐,被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一种数据结构,该数据结构对区块链系统中参与者之间的数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,以使得区块被链接在一起来创建所有交易的永久、不可更改的记录,这些交易自其开始就已经被写入区块链。交易包含嵌入到其输入和输出中的称为脚本的小程序,这些小程序指定如何以及由谁可以访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。

为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每笔交易有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本来对未花费的交易输出(unspent transaction,UTXO)执行该验证工作。如果锁定和解锁脚本的执行评估为真,则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收交易的第一节点验证该交易–如果交易经过验证,则该节点将其中继(relay)到网络中的其他节点;ii)将该交易添加到由矿工建造的新区块中;以及iii)该交易被挖掘,即,被添加到过去交易的公共分类帐中。

尽管区块链技术因使用加密货币实现方式而被广泛了解,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据这两者以实现新系统。如果区块链可以被用于不限于加密货币领域的自动化任务和过程,那这将是非常有利的。这样的方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录、分布式处理等),同时在其应用中具有更多用途。

区块链技术(例如,比特币)的公认优势之一是交易的匿名性。比特币用户的个人详细信息并未正式和明确地附加到比特币地址,并且区块链的比特币分类账仅包含公共地址信息。但是,由于区块链被构造为运行在互联网之上的分布式对等网络,因此交易的匿名性可能因攻击而受到损害,该攻击使用互联网协议(IP)地址信息将用户链接到网络活动。举例来说,在基于区块链的网络上进行的去匿名化攻击(例如,IP流量分析)可能使感兴趣的第三方能够监测由用户在网络上提交的交易,并能够使用可公开获取的信息将交易链接到其来源(source),例如,通过将用户的公钥与其IP地址链接起来。

对于基于区块链的网络而言,流量分析尤其成问题,该基于区块链的网络依赖于网络节点进行的交易的传播以及网络节点之间的交易的传播。网络中接收交易的每个节点都会验证交易,然后将其传输到对等节点。在比特币协议中,节点将向对等节点发送包含交易列表的“INV”消息,并接收“GETDATA”响应消息,该消息选择在“INV”消息中通告的交易的某个子集。然后,该节点将请求的交易发送到对等节点。针对该节点连接到的每个对等节点执行该过程。攻击者可能拦截和分析当在网络中传播交易时传输的数据,并最终获得信息,这些信息可用于链接交易的来源和目的地(destination)。

发明内容

期望提供用于在基于区块链的网络中传播交易的技术,该技术可以通过流量分析或其他类型的去匿名攻击来减少损害网络匿名性的可能性。更一般地,期望提供用于在对等网络的节点之间中继数据的技术以降低去匿名攻击的脆弱性。

现在已经设计出这样的方案。

因此,根据本发明,提供了如所附权利要求书中限定的方法和装置。

本发明可以提供一种在节点的网络中传播数据分组的计算机实现的方法。该方法可以包括:在第一时间段期间在第一网络节点处收集第一数据分组的集合,该集合包括从网络中的一个或多个第一节点接收的至少一个第一数据分组;确定网络节点到与该网络节点连接的多个邻居节点的链路中的可用带宽;确定映射,该映射将用于中继的第一数据分组中的每一个分配给一个或多个邻居节点(neighbouring nodes);该映射指示第一数据分组中的每一个的中继的预期时间。映射的确定可以包括:将可用带宽用作为第一数据分组中的每一个设置以下中的至少一个的基础:对等节点的第一数量,通过映射将第一数据分组分配所述第一数量的对等节点以用于中继;将第一数据分组中继到一个或多个对等节点时的时间延迟的第一时长;以及第一数据分组自网络节点起行进的跳数。该方法还可以包括:根据确定的映射将所述集合的第一数据分组发送到多个邻居节点。

在一些实现方式中,确定可用带宽可以包括:获得在到多个邻居节点的网络节点的链路中的至少一个的每一个中的可用带宽的指示符。

在一些实现方式中,确定映射可以包括:基于可用带宽,确定通过映射将第一数据分组分配给其以进行中继的对等节点的数量的可能值的范围;以及在所确定的范围内选择数字来设置为对等节点的第一数量。

在一些实现方式中,该方法还可以包括:对于从第一数据分组的集合中选择的至少一个第一数据分组,识别:至少一个第一数据分组被分配给其以进行中继的对等节点的第一集合;以及第一集合的第二子集,该第二子集仅包括被指定为在从网络节点接收到至少一个第一数据分组时将至少一个第一数据分组中继到它们自己的邻居节点的那些对等节点。

在一些实现方式中,根据所确定的映射,将集合的第一数据分组发送到多个邻居节点可以包括:对于至少一个第一数据分组:将至少一个第一数据分组发送到第二子集中包括的对等节点;以及将经修改的数据分组发送给没有包括在第二子集中的第一集合的对等节点,该经修改的数据分组包括被修改以指示禁止至少一个第一数据分组到对等节点的另外的中继的至少一个第一数据分组。

在一些实现方式中,该方法还可以包括:在至少一个第一数据分组中设置附加位,以指示禁止至少一个第一数据分组到对等节点的另外的中继。

在一些实现方式中,至少一个第一数据分组可以是从第一数据分组的集合中任意选择的。

在一些实现方式中,至少一个第一数据分组可以基于确定至少一个第一数据分组先前已经被网络节点发送到一个或多个对等节点来选择。

在一些实现方式中,根据所确定的映射,将集合的第一数据分组发送到多个邻居节点可以包括:对于集合的一个或多个第一数据分组中的每一个:确定第一数据分组到邻居节点的中继的下面的预计时间(scheduled time);以及在第一数据分组的中继的下面的预计时间之后第一时长的时间点处中继第一数据分组。

在一些实现方式中,第一时长可以与可用带宽成反比。

在一些实现方式中,网络节点可以被配置为生成至少一个第一数据分组,并且确定映射可以包括:对于至少一个生成的第一数据分组中的每一个:识别由网络节点先前生成的预定数量的第一数据分组;获取与先前生成的第一数据分组相关联的中继节点集合的列表,该中继节点集合包括先前生成的第一数据分组分别被中继到的邻居节点;以及基于识别出与获得的列表中的中继节点集合不同的邻居节点的集合,来选择中继节点的第一集合。

在一些实现方式中,选择中继节点的第一集合可以包括任意地选择没有包括在获得的列表中的两个或更多个邻居节点的集合。

在一些实现方式中,该方法还可以包括:检测网络节点到多个邻居节点的链路中的可用带宽的变化,其中,确定映射包括:将可用带宽的更新指示用作为第一数据分组中的每一个设置以下中的至少一个的基础:通过映射将第一数据分组分配给其以进行中继的对等节点的第一数量;将第一数据分组中继到一个或多个对等节点时的时间延迟的第一时长;以及第一数据分组从网络节点起行进的跳数。

本发明可以提供用于执行根据如上或本文其他地方的方法的计算机实现的系统。

本发明可以提供一种存储指令的非暂时性计算机可读介质,该指令用于将计算机系统用于执行根据上文或本文其他地方的方法。

本申请提供了用于在节点网络中的数据传播期间进行带宽管理的技术。可以控制节点到其对等方的数据分组的中继,以考虑该节点到其邻居节点的链路中的带宽可用性。因此,该节点能够实时适应其带宽可用性的变化并相应地更新其数据中继分配。本文所述的技术和启发法(heuristics)还可导致数据传播过程中冗余中继的减少,从而有利于改进网络流量和节点到节点带宽的使用。

本申请还描述了用于在网络中提供节点级匿名的方案。更特别地,本文描述的方法和系统有助于模糊网络内的数据传播方案中的节点的功能。即使攻击者要监测网络中的节点间流量或获得对特定节点的邻居节点的访问权限,本方法也使得这种攻击者确定特定节点是正在网络中传播的数据分组的来源节点还是中继节点是一种挑战。通过模糊区块链网络中节点的功能/角色,可以降低网络上去匿名攻击的效力,并可以提高区块链上数据传输的安全性。

此外,本申请的技术使节点能够管理其到邻居节点的链路的带宽使用,同时有助于维持由该节点中继的数据分组的来源和目的地的匿名性。通过考虑对节点资源(例如,带宽)的约束,可以获得更为现实和实用的数据传播方案。这些技术还为控制网络节点的实体提供根据其偏好和需要设置所需的数据传播协议的参数的能力。

在本文所述的许多示例实现方式中,具体参考了区块链交易;然而,应了解,本文中所描述的方法和装置可结合非区块链交易传播来实施和应用。更一般地,本公开中描述的方法和装置可以适用于在对等网络的节点之间传播各种不同类型的数据。

附图说明

关于本发明的一个方面或实施例描述的任何特征也可以关于一个或多个其他方面/实施例来使用。本发明的这些和其他方面将从本文描述的实施例变得显而易见并参考这些实施例而阐明。现在将仅通过示例的方式并参考附图来描述本发明的实施例,在附图中:

图1示出了与区块链相关联的示例网络。

图2示意性地示出了具有输入缓冲器和输出缓冲器的示例区块链节点。

图3是用于在节点的示例网络中传播交易的协议(扩散混合器协议(DMP))的示意图。

图4示出了根据DMP的节点的网络中的交易的中继的示例。

图5以流程图形式示出了根据DMP用于在区块链网络中传播数据分组的示例过程。

图6以流程图形式示出了根据DMP用于在区块链网络中传播数据分组的另一示例过程。

图7以流程图形式示出了根据DMP的用于在区块链网络中传播数据分组的另一示例过程。

图8以流程图形式示出了用于传输在区块链网络中的节点处生成或接收的数据分组的示例过程。

图9以流程图形式示出了用于传输在区块链网络中的节点处生成的数据分组的示例过程。

图10以流程图形式示出了用于中继在区块链网络中的节点处接收的数据分组的示例过程。

图11示出了节点的网络中的数据分组的传播中的目的地混合的示例。

图12示出了节点的网络中的数据分组的延迟中继的示例。

图13以流程图形式示出了用于基于节点的带宽约束来确定数据中继分配的示例过程。

图14以流程图形式示出了用于基于节点的带宽约束来确定数据中继分配的另一示例过程。

图15以流程图形式示出了用于基于节点的带宽约束的变化来更新数据中继分配的示例过程。

图16以框图形式示出了示例区块链节点。

具体实现方式

首先将参考图1,其以框图形式示出了与区块链相关联的示例网络,该示例网络在本文中可被称为区块链网络100。区块链网络100是对等开放成员网络(peer-to-peer openmembership network),任何人都可以加入,而无需邀请或无需经其他成员的同意。运行区块链协议的实例的分布式电子装置可以参与到区块链网络100中,区块链网络100在该区块链协议下运行。这种分布式电子装置可以被称为节点102。区块链协议可以是例如比特币协议或其他加密货币。

运行区块链协议并且形成区块链网络100的节点102的电子装置可以是各种类型,包括例如诸如台式计算机、膝上型计算机、平板计算机、服务器之类的计算机,诸如智能电话之类的移动装置,诸如智能手表或其他电子装置之类的可佩戴计算机。

使用适当的通信技术将区块链网络100的节点102彼此耦合,该通信技术可以包括有线通信技术和无线通信技术。在许多情况下,区块链网络100至少部分地在互联网上实现,并且一些节点102可以位于地理上分散的位置。

节点102维护被分组成区块的区块链上的所有交易的全局分类帐,每个区块都包含链中前一个区块的哈希值。全局分类帐是分布式分类帐,并且每个节点102可以存储全局分类帐的完整副本或部分副本。影响全局分类帐的通过节点102的交易由其他节点102验证,从而全局分类帐的有效性得到维护。本领域的普通技术人员将理解实现和操作区块链网络(诸如使用比特币协议的区块链网络)的细节。

每个交易通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定如何访问交易的输出以及由谁访问交易的输出。交易的输出可以是值作为交易的结果而被转移到的地址。然后将该值与该输出地址相关联,作为未花费的交易输出(UTXO)。然后,后续交易可以引用该地址作为输入,以花费或分散(disperse)该值。

节点102可以履行从网络路由到钱包服务的许多不同功能,以维护鲁棒且安全的去中心化公共分类账。“全节点”包含区块链的完整且最新的副本,并且因此可以验证公共分类账上的任何交易(已花费的或未花费的)。“轻量级节点”(或SPV)维护区块链的子集,并可以使用“简化支付验证”技术来验证交易。轻量级节点仅下载区块的区块头(header),而不下载每个区块内的交易。因此,这些节点依靠对等方(peer)来验证其交易。“挖掘节点”可以是全节点或轻量级节点,它们负责验证交易并在区块链上创建新区块。通常为轻量级节点的“钱包节点”处理用户的钱包服务。节点102使用诸如TCP/IP(传输控制协议)等面向连接的协议来彼此通信。

当节点希望向对等方发送交易时,会向对等方发送“INVENTORY(库存)”消息,传输对于传输节点而言已知的一个或多个库存对象。如果对等方以“GETDATA(得到数据)”消息进行答复(即完整的交易请求),则使用“TRANSACTION(交易)”消息发送交易。假定它是有效交易,则接收交易的节点以相同的方式将其转发给其对等方。

现在参考图2,其示意性地示出了具有输入缓冲器202和输出缓冲器204的示例节点200。示例节点200具有与多个对等节点(被称为intA、intB、intC、intD等)的网络接口。输入缓冲器202示出了来自各个对等节点的传入交易(incoming transaction),并且输出缓冲器204示出了与交易相对应的输出网络分组,以便通过相应的接口传输到对等节点。根据节点200的操作系统提供的原语(primitive),在应用程序级别上串行发送和接收网络分组。假定交易x适合单个以太网/IP数据分组,则其到m个对等方的传输需要缓冲m个不同的输出网络分组。输入网络分组和输出网络分组两者以及其他信息将包含序列化的交易和表示与发送/接收对等方的TCP/IP连接的逻辑接口ID。

一旦生成比特币交易,源节点就通过网络广播交易消息。通常,当客户端生成交易时,将该交易放入输出缓冲器204中。可以将该交易立即或可以不立即转发给对等方。在比特币网络的当前实现方式中,交易通过被称为“扩散传播”的机制进行传播,由此每个交易源以独立的指数特性延迟将交易传输到其邻居。传播中的延迟是随机的,并且可用于在恶意攻击者的时间估计中引入不确定性。一旦对等方接收到某个交易,则该对等方就可能会不接受同一交易的未来中继;例如,交易哈希值可以存储在对等方的内存池中,从而允许对等方拒绝相同的交易。通过网络进行的交易“扩散(diffusion)”是对称的,这意味着转发节点不会使用影响交易广播的有关邻居节点的IP地址的信息。例如,在“标准”扩散过程(在比特币协议中使用)中,广播节点的对等方都接收相同的交易,并且在每个中继实例中,每个对等方一次仅中继一个交易。已经了解网络的点对点图结构的恶意的第三方在进行去匿名化攻击时可以利用这种“扩散”的对称性质。

本公开提供用于区块链网络上的交易中继的替代技术,以提高针对流量分析攻击的保护。更具体地,提出的中继协议可以用于掩盖、隐藏或模糊交易的源节点与其IP地址之间的连接。

提出了一种交易中继协议,即扩散混合器协议(DMP)。DMP包括两个独立的扩散阶段。第一阶段(“随机差分中继”或RDR)允许中继的交易混合以及交易源的模糊。在随机差分中继阶段期间,每个节点在向网络广播交易之前要等待预限定的时间量,以从其对等方接收并收集多个交易。然后节点创建到其“入口节点”的外发连接(outgoing connection),并且将具有近似相同时间戳的不同交易发送到这些入口节点的任意(例如,随机地)选择的子集。节点的入口节点是能够从该节点建立的直接外发连接所连接至的那些邻居节点。入口节点的选择的随机性和中继的交易的多样性可以使攻击者更难以重构网络拓扑。

第二阶段(“标准扩散”)确保网络中交易的及时且可靠的传播。在标准扩散阶段中,每个节点将相同的交易中继到其所有入口节点,并且在每个中继实例中,每个入口节点一次仅中继一个交易。

应当注意,在诸如区块链网络之类的节点的网络中,一个或多个节点能够实现DMP。具体而言,网络的一个或多个节点能够通过参与DMP来将其接收到的数据分组中继到其入口节点。参与节点可以例如在RDR过程和标准扩散过程之间进行选择,以传播特定的数据分组。网络的节点可以选择参与DMP,通过去中心化的方式或通过包含在由中央授权机构组装的成组的参与节点中来加入协议。参与节点根据DMP中继其输出网络分组。特别地,如果参与节点接收到数据分组,则该节点可以使用由DMP规定的规则,根据为该节点选择的传播模式来转发接收到的数据分组。

参照图3至图7描述提出的用于交易中继的DMP。在图3中提供了DMP的示意性可视化。示出了节点的示例区块链网络300。每个节点表示网络终端(即,区块链节点),而边缘则表示节点之间的链接。为了说明的目的,假定对于每个链接,可以一次发送或接收单个比特。

在该示例网络300中,每个节点维护未确认的交易的集合,使得当节点接收到新的交易时,该新的交易通过网络被传播到所有其他节点。每个节点验证新的交易并且将新的交易存储在其相应的本地集合中,并将新的交易转发到尚未拥有新交易的任何对等节点。由于区块链网络300的点对点性质,所有节点不会同时接收到新的交易,这意味着新交易到达网络300中的所有节点将花费一些时间。

图3示出了用于传播特定交易Tx1的DMP的两个阶段,即,用于Tx1的随机差分中继302和标准扩散304。交易Tx1的源节点310可以在时间t

入口节点将接收到的交易中继到其自己的对等方。例如,节点310b和310d分别将交易Tx2和Tx1转发到其邻居节点中的一个或多个。在DMP中,交易的每个接收者独立地选择传播所接收到的交易的模式。节点320是选择标准扩散作为其扩散模式的节点的示例。如图3所示,节点320将相同的交易Tx1转发到其所有入口节点(即,320a、320b、320c、320d和320e)。

现在参考图5,其以流程图形式示出了在DMP的RDR阶段中用于在网络中传播数据分组的示例方法500。方法500由例如诸如网络100的区块链网络的节点实现。在这样的背景下,节点可以被理解为指代区块链网络中的挖掘节点、全节点、验证器节点或其他类型的离散区块链节点。该节点是具有实现区块链协议的执行软件、计算资源和(一个或多个)网络连接的计算装置。

在操作502中,与节点相关联的客户端生成至少一个第一类型的数据分组。在区块链网络的背景下,第一类型的数据分组可以包括区块链交易。也就是说,客户端可以生成将被传播到网络的其他节点的区块链交易。

在操作504中,节点在第一时间段T期间收集第一类型的数据分组的集合。即,节点累积在一段时间内的第一类型的数据分组。该集合包括从网络中的一个或多个对等节点接收的第一类型的至少一个数据分组和至少一个生成的数据分组。这样,将由节点生成的数据分组与从邻居节点接收的同一类型的数据分组混合在一起。在区块链网络中,在时间段T期间,节点通过为待中继的传入交易监测网络来累积交易的集合。时间段T的长度可以是预限定的。在一些示例实现方式中,时间的长度可以基于诸如平均连接时间、每单位时间接收到的交易的平均数量或网络内节点的中心性(即,到节点的传入连接的数量)之类的参数而变化。在时间段T期间,可以仅允许节点累积第一类型的数据分组,因此可以防止在时间段T的持续时间内发送任何第一类型的数据分组。

在操作506中,该节点任意选择其入口节点的子集,收集到的数据分组的不同集合将被转发到其入口节点的该子集。更具体地,对于收集到的数据分组的集合中的每个数据分组,该节点任意选择其入口节点(即,邻居节点,该节点与所述邻居节点具有外发连接)中的两个或更多个,并将数据分组分配给选择的入口节点。例如,可以随机选择入口节点。在一些实现方式中,节点可以查询网络以获得其对等方的新地址。在比特币网络中,节点可以查询一个或多个数据库源名称(DSN),该一个或多个数据库源名称(DSN)被嵌入在比特币核心、比特币J或其他区块链协议中并由比特币(或其他区块链)社区成员维护。作为响应,该节点将获得一个或多个DSN记录,这些记录显示可以接受传入连接的可用全节点的IP地址。可以通过让对等方向加入网络的新节点发送包含其IP地址和端口号的“ADDR”消息来实现对等方发现的去中心化版本。

在一些实现方式中,作为操作506的一部分,网络中的一个或多个节点可以维护表格或其他数据结构,该表格或其他数据结构跟踪其将每个收集到的数据分组分配给该数据分组应当被中继到的入口节点的分配。图4示出了在区块链网络中的DMP的RDR阶段中的源节点410的交易中继的示例。表1是将收集到的交易Tx1-Tx5分配到源节点410的入口节点的示例分配。入口节点被表示为节点A、B、C、D、E、F、G和H。如图4和表1所示,源节点410将每个交易中继到至少两个入口节点,并且多个交易可以经由同一节点被中继。例如,交易Tx3、Tx4和Tx5都经由入口节点E同时被中继。更一般地,在RDR过程中,多个数据分组可以由转发节点同时中继到同一对等节点。在DMP的给定实例中,并非所有入口节点都从源节点410接收交易。在表1的示例中,入口节点C和G不从源节点410接收任何交易。

再次参考图5,对于每个收集到的数据分组,在操作508中,节点将数据分组传输到(任意或随机)选择的入口节点中的每一个。每个选择的入口节点被配置为使用为该入口节点随机选择的数据传播的模式将数据分组中继到网络中的一个或多个第二节点(例如,入口节点的对等方)。即,每个选择的入口节点使用为该入口节点独立选择的传播模式将接收到的数据分组转发到其自己的一个或多个对等节点。在图4的示例交易中继中,交易Tx1-Tx5中的每一个被转发到向其分配了交易的入口节点。

然后,从源节点410接收交易的每个节点随机选择传播/扩散的模式,以用于将接收到的交易转发到其对等节点(如果有)中的一个或多个。特别地,接收交易的入口节点在根据标准扩散过程或根据RDR过程来中继交易之间随机选择。这两个选项之间的选择是随机的。因此,在DMP中,两个扩散过程概率性地(probabilistically)交替,即在RDR阶段和标准扩散阶段之间没有明显的分离。作为扩散过程的这种“混合”的结果,攻击者基于识别经由随机数据传播或经由标准扩散进行中继的节点的集合之间的分离来重构网络的拓扑变得更加困难。

在一些实现方式中,扩散模式的入口节点的随机选择可能涉及从源节点接收除了中继的数据分组之外的消息。然后入口节点可以生成随机值(例如,随机数),将其附加到接收到的消息中,并且例如使用SHA-256对结果进行哈希处理。然后入口节点可以检查哈希值并随后基于关于哈希值的预定规则来获得扩散模式(例如,如果哈希的最终字符是数字,则选择RDR作为扩散模式)。替代地或附加地,扩散模式的选择可以使用任何随机化的过程(例如随机数生成器)来完成,其中,选择模式之一的概率可能大于选择另一种模式的概率,这取决于诸如传入(incoming)和/或外发连接的数量、每单位时间接收到的数据分组的平均数量等因素。

在传播特定数据分组时,可能需要平衡传播节点的匿名性保护级别与总体传播速度。如果用于确保一定级别的匿名性的措施过于繁琐(例如,需要太多的网络资源,在中继数据分组时有意地不充分利用网络的节点等),则网络在及时传播数据方面的效率可能会受到损害。因此,在一些实现方式中,中继节点对传播模式的随机选择可以被加权。尤其是,可以将不同的概率分配给两种或更多种传播模式(即,RDR、标准扩散等)中的每一种,以便这些概率反映匿名性和数据传播速度的比例重要性。例如,在某些情况下,较高的预限定概率可能与针对特定网络的节点的RDR模式相关联,从而反映出按比例更大地强调了保留传播数据的匿名性。

图5的方法500由生成其自己的第一类型的数据分组的节点来实现。特别地,参与DMP并生成用于传播到网络的其余部分的数据分组的节点执行方法500。图6示出了由中继节点或转发或中继由不同的节点生成的数据分组的节点执行的示例过程。即,中继节点是自身不生成要在特定数据分组的中继的期间转移的数据的节点,而是起到“中继”数据分组的作用的节点。在操作550中,中继节点独立地选择其自己的数据传播模式。中继节点可以例如在RDR模式和标准扩散模式之间进行选择。如果选择了标准扩散模式(其可以在操作552处确定),则在操作554中,中继节点将数据分组转发到其所有入口节点。在图6的示例中,传播模式的选择在两个可能的选项之间;该示例不是限制性的,因此在其他示例中,可以存在三种或更多种可能的传播模式。如果在方法500中选择的模式是RDR(其可以在操作552处确定),则中继节点执行与图5的操作504、506和508相对应的步骤556、558和560。

现在将参考图7,其以流程图形式示出了用于在网络中传播数据分组的示例过程600。过程600可以在具有到区块链网络的其他节点的多个传入和外发连接的区块链节点处实现。

过程600的操作602、604、606和610分别对应于方法500的操作502、504、506和508。在操作608中,节点在操作610中的将收集到的数据分组传输到其分配的入口节点之前,确定是否已经满足触发条件。特别地,响应于检测到已经满足合适的触发条件,执行数据分组的传输。当不满足触发条件时,节点继续收集第一类型的数据分组,而不将所述数据分组中的任何一个中继到其入口/对等节点。

可以采用触发条件来指导节点收集足够数量的传入数据分组和/或收集数据分组持续达充足的时间量。例如,充足性可以基于限定的阈值来确定。通过在例如同时将多个传入数据分组传播到网络中的对等节点之前收集多个传入数据分组,监测源于该节点的中继流量的攻击者可能无法轻松地将该节点识别为中继的数据分组的正确的来源。

在一些实现方式中,触发条件可以是自节点在操作602中生成第一类型的至少一个数据分组的时间起的预定持续时间的到期。即,节点可以被设计为在节点传播所述数据分组中的任一个之前的预定时间段内,监测并收集传入数据分组(例如,交易),该预定时间段在节点生成同一类型的数据分组时开始。此条件可能有助于尝试确保由节点生成的数据分组在收集到了同时被广播的更多相同类型的数据分组之后被传播,从而使攻击者难以正确地将节点识别为生成的数据分组的来源。

在一些实现方式中,触发条件可以是自从节点的对等方接收到第一类型的至少一个传入数据分组中的第一个传入数据分组的时间起的预定持续时间的到期。即,节点可以被设计为在预定时间段内监测和收集传入数据分组,该预定时间段在接收到此类传入数据分组中的第一个传入数据分组时开始。此条件可能有助于尝试确保该节点在任何数据分组被广播到网络的其余部分之前收集更多的数据分组,无论是由节点本身生成的数据分组还是从其他对等方接收的数据分组。

在一些实现方式中,触发条件可以是在第一时间段期间收集到的数据分组的数量达到阈值数量。特别地,该节点可以被设计为监测和收集传入数据分组,直到第一时间段到期或预定的阈值数量的数据分组被该节点收集到中的较早者为止。

如上所述,随机差分中继表示背离了用于在节点的网络中传播交易的“标准扩散”协议。在实施RDR的过程中,传播节点将不同的交易同时中继到随机选择的入口节点的子集。传播节点可以通过向每个收集到的交易随机地分配该交易应当被中继到的一个或多个入口节点来创建数据结构,例如表1所示的数据结构。更一般地,将数据分组中继到其对等方的网络节点可以维护其自己的内部路由数据结构,该内部路由数据结构指定针对由该节点收集(即,接收到的或本地生成的)到的多个数据分组中的每一个要执行的中继的类型。

在本文提出的扩散混合器协议的背景下,实现RDR的区块链网络中的每个节点都可以独立地构建其自己的路由数据结构或“RDR表”。RDR表为采用RDR协议的每个节点定义交易分配方案。也就是说,各个节点的RDR表被用于管理将哪些交易中继到哪个对等方以及何时中继。RDR表可以跟踪在给定的时间量ΔT

随着新信息(超时、接收到的或生成的交易)变成可用的,可以动态更新(即,实时)节点的本地RDR表。本公开提供了各种启发法或“子系统”,其有助于构建和更新各个RDR表。这些子系统可以看作是规则或准则集,其可以被应用于更新RDR表中指定的交易分配。这些子系统所包含的策略对增强交易来源混淆和平衡由单个节点的中继操作生成的网络流量有用。提议的子系统(即,来源混合、中继混合、目的地混合、到达时间混合和来源控制)的集合可以并行工作,同时负载平衡模块可用于合并收集的交易中继信息并提供网络资源的优化分配。

现在参考图8,其以流程图形式示出了用于传输在网络中的节点处生成或接收的数据分组的示例方法700。方法700表示根据交易分配方案在网络中传播数据的技术,该交易分配方案符合提出的子系统/启发法中的至少一个的规则。方法700由例如诸如图1的网络100等的区块链网络的节点来实现。更具体地说,方法700由参与DMP的节点执行,并且被配置为生成或接收第一类型的数据分组(例如,交易)以传播到网络的其余部分。

在操作702中,与节点相关联的客户端生成第一类型的至少一个数据分组。数据分组可以例如包括区块链交易。

在操作704中,节点在第一时间段T期间收集第一类型的数据分组的集合。即,节点在一段时间内累积第一类型的数据分组。该集合包括从网络中的一个或多个对等节点接收到的第一类型的至少一个数据分组和至少一个生成的数据分组。这样,将节点生成的数据分组与从邻居节点接收的相同类型的那些数据分组混合在一起。

在操作706中,确定收集到的集合中的数据分组到连接到该节点的多个邻居节点的映射。该映射指示该集合的每个数据分组中继到邻居节点的预期时间。该“映射”被用于为网络的节点构造各个本地RDR表。本公开中描述的一个或多个子系统/启发法可以(并行地或独立地)有助于RDR表的构造。具体地,可以在确定收集的数据分组到邻居节点的映射的过程中应用一个或多个不同的子映射。子映射可以具有至少两种不同的类型。第一类型的子映射将用于中继的具有相同来源(即,始发节点)的任意两个数据分组分配给邻居节点的不同子集。下面更详细描述的“来源混合”和“中继混合”子系统是这种第一类型的子映射的示例。第二类型的子映射将中继的不同预期时间分配给在同一时间间隔内在节点处生成或由节点从对等节点接收到的任意两个数据分组。“到达时间混合”子系统是该第二类型的子映射的示例。

在操作708中,一旦确定了收集到的集合中的数据分组到邻居节点的映射,就根据确定的映射将所述数据分组传输到邻居节点。

将理解的是,各个子系统可以被独立地实现以更新在RDR表中限定的交易分配。即,每个子系统可以独立于其他子系统而针对RDR表被单独地采用。因此,各个子系统可以提供将交易分配给中继节点的不同方式,因此提供了用于传播交易的不同技术。

来源混合子系统的基本原理是,应将节点处本地生成的交易传输到对等方的非重叠子集。举例来说,如果节点x生成两个交易tx

S(tx

即,用于两个后续交易的对等方的集合相差至少一个对等方。这种不平等有助于使针对在节点处生成的交易的初始中继的模式的任何恶意搜索复杂化。该概念可以被扩展为来源混合程度δ

现在参考图9,其以流程图形式示出了用于传输在网络中的节点处生成的数据分组的示例方法800。方法800表示根据交易分配方案在网络中传播数据的技术,该交易分配方案符合来源混合子系统/启发法中的规则。方法800由例如诸如图1的网络100等的区块链网络的节点来实现。更具体地说,方法800由参与DMP并且生成第一类型的数据分组(例如,交易)以传播到网络的其余部分的节点执行。

在操作802中,与节点相关联的客户端生成第一类型的至少一个数据分组。数据分组可以例如包括区块链交易。

该节点确定至少一个生成的数据分组到其邻居节点(即,对等方)的第一映射。特别地,对等方的多个子集被选择用来中继在节点处生成的数据分组。通过第一映射,每个数据分组与中继节点的特定子集相关联。对于每个数据分组,在操作804中,识别由节点先前生成的预定数量的第一类型的第一数据分组。这些可能是已由节点传输到对等方的数据分组,或者也可能是先前生成但尚未中继到节点的对等方的数据分组。

在操作806中,获得与第一数据分组相关联的中继节点集合的列表。中继节点集合包括第一数据分组分别被中继到(或被分配用于中继)的那些邻居节点(对等方)。即,中继节点集合指示第一数据分组中的各个数据分组被分配到的节点的对等方的子集。

在操作808中,基于识别到与在操作806中获得的列表中的中继节点集合不同的邻居节点的集合,来选择中继节点的第一集合。例如,中继节点的第一集合可以通过任意选择没有包括在所获得的中继节点集合的列表中的两个或更多个邻居节点的集合来进行选择。在一些实现方式中,可以施加以下要求:所选择的第一集合与两个或更多个对等方所获得的列表中的中继节点集合不同。也就是说,可以对属于选择的中继节点的第一集合与所获得列表中的任何一个中继节点集之间的相交集的元素的数量设置上限。

方法800可以在节点处生成单个数据分组之后或者在节点收集多个生成的数据分组之后由节点执行。特别地,该节点可以在一段时间内生成并累积第一类型的数据分组(类似于DMP的RDR阶段),并确定累积的数据分组到中继节点集合的第一映射。在这些情况下,数据分组可以分别被分配给任意选择的中继节点的子集,从而确保没有两个这样的子集彼此相等。

可以任意确定被选择为包括在中继节点的第一集合中的邻居节点的数量。在至少一些实现中,根据传播节点的带宽需求(例如,在固定时间帧内的传入数据和传出数据的累积量)来限制为第一集合选择的对等方的数量。特别地,可以调整为中继本地生成的交易而选择的对等方的数量,以解决网络负载问题或改善来源混淆。例如,包括在第一集合中的对等方的数量可以由下式限定:

m(tx

其中,m

然后中继节点的第一集合的选择可以在第一映射中与相应的数据分组相关联地设置。换句话说,第一映射可以指示数据分组与中继节点的第一集合相关联(即,数据分组被分配给中继节点的第一集合)。在操作810中,根据确定的第一映射来传输数据分组。

中继混合子系统以以下概念为前提:节点接收到的交易应该中继到节点对等方的非重叠子集。使用参数λ来表示属于为同一节点接收的两个不同交易选择的中继对等方之间的交集的元素的数量,中继混合背后的思想可以通过以下不等式捕获:

其中,δ

或者,在其他实现方式中,参数λ可以是唯一的系统参数;使用特定时间窗和存储在RDR表中的信息来更新时变参数λ

通用对等方的交易分配的组合的数量为

·设置最大迭代次数,并选择具有最小数量的相交对等方的交易分配

·设置最大迭代次数,但是如果达到相交对等方的给定阈值,则会更早地中断该过程

·设置最大迭代次数,并且如果不满足要求,则增加λ的值,然后重新启动该过程

·设置最大迭代次数,并且如果不满足要求,则修改x的值,然后重新启动该过程

·设置最大迭代次数,并且如果不满足要求,则减小m的值,然后重新启动该过程

如果将最大迭代次数替换为固定的时间窗ΔT

可以任意确定被选择为包括在中继节点的集合中的邻居节点的数量。在至少一些实现方式中,根据传播节点的带宽需求(例如,在固定时间帧内的传入和传出数据的累积量)来限制为集合选择的对等方的数量。特别地,可以调整为中继本地生成的交易而选择的对等方的数量,以解决网络负载问题或改善来源混淆。例如,包括在第一集合中的对等方的数量可以由下式限定:

m(tx

其中,m

现在参考图10,其以流程图形式示出了用于中继在网络中的节点处接收到的数据分组的示例方法900。方法900表示根据交易分配方案在网络中传播数据的技术,该交易分配方案符合中继混合子系统/启发法中的规则。方法900由例如诸如图1的网络100等的区块链网络的节点来实现。更具体地说,方法900由参与DMP并且接收第一类型的数据分组(例如,交易)以传播到网络的其余部分的节点执行。

在操作902中,与节点相关联的客户端接收第一类型的至少一个数据分组。数据分组可以例如包括区块链交易。

该节点确定至少一个接收的数据分组到其邻居节点(即,对等方)的第二映射。特别地,选择对等方的多个子集以中继在节点处生成的数据分组。通过第二映射,每个数据分组与中继节点的特定子集相关联。对于每个数据分组,在操作904中,识别节点最近接收的预定数量的第一类型的第二数据分组。这些可能是已由节点传输到对等方的数据分组,或者也可能是先前接收到但尚未中继到节点的对等方的数据分组。

在操作906中,确定第二数据分组到邻居节点的固定集合的第一分配。特别地,第一分配是从第二数据分组到满足预定条件的邻居节点的一个或多个分配中选择的。此操作对应于对上述不等式(1)的次优解的迭代搜索。即,在数据分组到满足(1)的中继节点的分配中,确定唯一的分配(例如,具有最少的相交对等方的分配)。如由(1)所捕获的,如果对于任意两个第二数据分组,所述两个第二数据分组都分配给至(用于中继)的邻居节点的数量小于或等于预限定的阈值,则第二数据分组到邻居节点的固定集合的分配满足预定条件。

然后第二数据分组到在操作906中识别的邻居节点的唯一分配可以被设置在第二映射中。换句话说,第二映射可以指示第二数据分组(即,该节点从其对等方接收的数据分组)分别被分配到的中继节点。在操作908中,根据确定的第二映射来中继至少一个接收到的数据分组。

方法900可以在单个数据分组在节点处被接收之后或者在节点收集多个接收到的数据分组之后,由节点执行。特别地,该节点可以在一段时间内接收并累积第一类型的数据分组(类似于DMP的RDR阶段),并确定累积的数据分组到中继节点集合的映射。在这些情况下,数据分组可以分别被分配给任意选择的中继节点的子集,从而确保没有两个这样的子集彼此相等。

目的地混合启发法捕获了以下想法:节点的出站连接(outbound connection)应执行由不同对等方中继的交易。这种启发法可以被认为是中继混合子系统的特殊情况,因为中继混合子系统涉及创建来自同一来源对等方的用于中继的对等方的非重叠子集。在方法900中,目的地混合可以通过确保以下事项来实现:在操作906处,对于任意两个第一节点(即,节点从其接收到数据分组的各节点),从所述两个第一节点接收的所有第二数据分组的集合在第一分配中被分配给至少两个不同的邻居节点。例如,图11示出了节点i的目的地混合的示例。目的地混合子系统确保节点a在给定的时间窗ΔT

在一些实现方式中,对于每个时间窗ΔT

到达时间混合启发法实现了数据分组的延迟中继,以便有助于与数据分组中继有关的来源信息和目的地信息去相关。例如,在时间窗口ΔT

在某些示例中,随机变量q可以具有负指数概率密度函数,

pdf

其中,c和g分别是乘法常数和加法常数。

恶意对等方可能试图多次将同一数据分组(或成组的数据分组)推送到给定节点i,以尝试在i的本地中继策略中找到模式。例如,恶意对等节点可能创建到节点i的两个连接,并监测i的传入流量和外发流量如何关联。来源控制子系统通过为可从每个对等方接收的数据分组的数量设置特定阈值来实现。如果对等方超出给定数据分组的阈值,则其连接将永久或临时关闭。节点接收给定数据分组(例如,区块链交易)的实例数可以存储在RDR表中。

负载平衡可用于周期性地对已经由其他子系统分配给对等方进行中继的数据分组执行置乱(shuffle)。负载平衡模块的目的是平均对等方之间的中继分布,以避免某些对等方连接中的流量过载或单点故障。可以实现两种不同的负载平衡方法:

·尽管数据分组j的大小(即,输入的数量、输出的数量、解锁和锁定脚本的大小)不同,但是每个数据分组j均具有相同的权重w

·每个数据分组j具有与其字节的尺寸成比例的其自己的权重w

例如,在方法800中,可以确定第二数据分组到邻居节点的固定集合的第二分配,该第二分配是第一分配的重新布置以解决该节点的输出接口处的流量的平衡。可以为每个对等方i计算在预计要中继的数据分组的数量n

随后,执行迭代方法以对要中继的数据分组进行置乱并获得每个对等方的平均值c*:

解决这种数据分组置乱的各种不同的启发法可能是可用的。例如,可以将不同的优先级分配给不同的子系统,以便预期数据分组子集的中继或增强外发流量的负载平衡。此外,不同子系统的执行会引入重复或不一致的数据分组的分配,这需要在激活中继之前解决。

扩散混合器协议可以被配置为考虑到网络节点到邻居节点的各种链路/信道中的可用带宽。网络的节点之间数据分组的传输的各个方面(包括传输的数量和时序(timing))都可能取决于可用的节点到节点带宽容量。

在数据分组在节点网络中传播的背景下,期望通过有效利用网络节点的可用带宽资源,来平衡增强由网络节点中继的数据分组的来源和目的地的匿名性的能力。特别地,通过网络节点的资源约束可以有利地缓和用于将数据中继分配给网络节点的对等方的算法(例如,扩散混合器协议)。例如,在一些实例中,各种约束可基于网络节点的资源限制而施加在数据中继分配算法(例如,设置上限和/或下限)的一个或多个参数上。

通过说明的方式,当节点将数据分组传输到其一个或多个对等方时,该节点可能需要考虑其到邻居节点的链路中的可用带宽,从而数据分组可以被明智地分配以中继到该节点的对等方。用于增强中继的数据的来源的匿名性的技术可能导致高带宽使用。例如,如果网络节点选择大量的入口节点来中继数据分组,则网络节点的输出链路容量可能会降低到不期望的水平。作为另一示例,延迟一个或多个数据分组的中继以实现到达时间混合(在RDR中)可能导致节点到节点信道被占用超过可接受的水平。能够根据网络节点的资源约束来控制参数的算法可以有助于改进数据中继的性能和网络流量管理。

现在参考图13,其示出了用于在节点的网络中传播数据分组的示例过程1000。更具体地,过程1000表示基于网络节点的带宽约束来确定数据中继分配的技术。方法1000由例如诸如图1的网络100等的区块链网络的节点来实现。特别地,方法1000由参与DMP的节点执行,并且接收第一类型的数据分组(例如,交易)以传播到网络的其余部分。

在操作1002中,节点在第一时间段T期间收集第一数据分组的集合。即,节点在固定的持续时间内累积第一数据分组。该集合包括从网络中的一个或多个对等节点接收到的至少一个第一数据分组。在区块链网络中,在时间段T期间,节点通过为待中继的传入交易监测网络来累积交易的集合。时间段T的长度可以是预限定的。

在操作1004中,节点(或不同于该节点的实体)确定该节点到其多个邻居节点的链路中的可用带宽。节点可以确定其到邻居节点的链路/信道中的每一个中的带宽和吞吐量。特别地,可以获取至少一个节点链路中的每一个中的可用带宽的数值或指示符。在一些实现方式中,可以获得表示所有节点的外发链路中的总体可用带宽的值/指示符。例如,可以导出表示节点的链路的百分比的值/指示符,节点的链路的百分比可用于参与传播数据分组的过程1000。

另外,可以确定表示节点带宽对数据中继的期望分配(即,扩散混合器协议)的参数。例如,该参数可以表示可以被分配的最大带宽量。参数的值可以例如由控制节点、节点的集合和/或包括该节点的网络的实体来手动设置。备选地,参数的值可以基于在节点的可用带宽中检测到的变化来自动更新,这将在下面更详细地说明。

在操作1006中,确定映射,该映射将用于中继的第一数据分组中的每一个分配给一个或多个邻居节点。即,导出数据分组到节点的对等方的中继分配。映射指示在操作1002中由节点收集的一个或多个第一数据分组的中继的预期时间。

第一数据分组的中继分配通过以下方式确定:将可用带宽信息(在操作1004中获得)用作为第一数据分组中的每一个设置数据中继的各种参数中的至少一个的基础,这些参数包括:对等节点的第一数量,通过映射将第一数据分组分配给所述第一数量的对等节点以用于中继;将第一数据分组中继到一个或多个对等节点时的时间延迟的第一时长;以及第一数据分组从网络节点行进的跳数。也就是说,数据中继过程的这些参数中的一个或多个可以基于节点到邻居节点的链路中节点的可用带宽来设置或调整。

在一些实现方式中,关于节点的可用带宽的信息可以用于设置上述一个或多个子系统的参数(例如,来源混合、中继混合等)、或者被用来控制数据分组到对等节点的中继分配的其他启发法。

如前所述,可以如下来为RDR中的数据分组中继选择的对等方的数量限定界限:

m

其中,m表示网络节点的对等方的总数。给定表示(一个或多个)可用带宽的指示的参数ψ∈[0,1]以及在固定时间窗口(例如,ΔT

·如果ψ=1,则m

·如果ψ=0,则m

即,μ对应于[rn

·m

·m

其中,公式被评估为最接近的整数值。换句话说,基于网络节点的可用带宽(由ψ表示),可以确定通过映射将第一数据分组分配给其以用于中继的对等方的数量的可能值的范围。然后可以选择(例如,任意地、随机地)在确定的范围内的数字来设置为映射把第一数据分组中继到的对等节点的第一数量。

如果2μ-m

在一些实现方式中,平均值μ可以被建模为作为时间的函数而变化。μ的值(用于来源混合和中继混合)可以例如使用正弦函数建模:

·

·

其中,μ

被选择用于接收第一数据分组的中继的对等方的数量的可能值的范围(m(tx

m(tx

其中,m

由于平均值右边的值是优选的以帮助数据分组在网络中进行初始传播,所以偏斜可以被用于在来源混合的情况下表示分布的两侧之间的不对称性。该函数具有以下均值μ

·

·

在以上等式中,ω、ρ和α分别表示曲线的缩放比例(scale)、位置和形状。因此,μ

·μ

·

可以选择第三等式来求解未知变量ω,ρ,α。例如,α和ψ之间的相关性可以表示为:

α=8ψ-4

或者

α=8.6tanh(ψ-0.5)

可以基于网络节点的可用带宽来控制的另一个参数是中继数据分组中的延迟时间。延迟的中继(即,在由中继分配/映射指示的中继的预期时间之后预定时长发送数据分组)可用于解相关关于数据分组的来源和目的地信息。例如,在时间窗口ΔT内收集或生成的数据分组可以以等于ΔT的倍数qΔT的延迟来中继,其中,q是随机变量。为了平衡去相关程度和中继中的延迟程度,随机变量q可以具有负指数概率密度函数。

通常,中继中的延迟的长度可能与节点的可用带宽成反比。特别地,ψ的值越小,中继的延迟就越长。这种关系可以使用以下等式来表达:

其中,n表示在(一个或多个)先前的时间窗口中接收到的数据分组的数量的估计,而ΔT

在操作1008中,收集到的集合的第一数据分组根据在操作1006中确定的映射被发送到网络节点的邻居节点。在一些实现方式中,仅收集的第一数据分组的子集根据由映射指定的中继分配被发送。

现在参考图14,其示出了用于在节点的网络中传播数据分组的另一示例过程1100。方法1100由例如诸如图1的网络100等的区块链网络的节点来实现。特别地,方法1100由参与DMP的节点执行,并且接收第一数据分组(例如,交易)以传播到网络的其余部分。

过程1100引入了设置一旦第一数据分组被网络节点传播其将行进的跳数的技术。在操作1102中,收集第一数据分组的集合,并且在操作1104中,确定节点到邻居节点的链路中的用于节点的可用带宽。然后在操作1106中,确定由节点收集的第一数据分组的映射,该映射将用于中继的第一数据分组中的每一个分配给一个或多个邻居节点。

在操作1108中,对于从第一数据分组的集合中选择的至少一个第一数据分组,识别至少一个第一数据分组被分配给其以进行中继的对等节点的第一集合。该识别是参考操作1104中确定的映射完成的。

在操作1110中,识别第一集合的第二子集。在从网络节点接收到至少一个第一数据分组时,第二子集的对等节点被指定为将至少一个第一数据分组中继到它们自己的邻居节点。即,对等节点的第二子集通过以下方式有助于至少一个第一数据分组在整个网络中的传播:将至少一个第一数据分组转发到它们自己的对等方。当至少一个第一数据分组被中继到第二子集的对等节点时,至少一个第一数据分组的传播继续到网络的附加节点。另一方面,当至少一个第一数据分组被中继到没有包括在第二子集中的第一集合的那些对等节点时,那些对等节点不会将至少一个第一数据分组转发给它们的任何邻居节点。

在操作1112中,对于至少一个第一数据分组,节点将至少一个第一数据分组发送到第二子集中包括的对等节点。在操作1114中,对于至少一个第一数据分组,节点将至少一个第一数据分组的修改版本发送给没有包括在第二子集中的第一集合的对等节点。该经修改的数据分组包括被修改以指示禁止至少一个第一数据分组到对等节点的另外的中继的至少一个第一数据分组。这样,成组的对等节点(即,第二子集的对等方)被配置为继续至少一个第一数据分组的传播,而不同的成组的对等节点(即,第二子集中不包括的对等方)仅从网络节点接收至少一个第一数据分组,但不将该至少一个第一数据分组中继到其对等方。通过将要进一步传播的那些数据分组与从网络节点行进单跳的那些数据分组区分开,可以减少节点的网络内数据传播方案中数据分组的冗余中继的数量。

例如,如果两个节点具有相同的对等方的集合,则对于以下这样的数据分组而言将是冗余的:中继到两个节点以进一步由这两个节点传播到其对等方,因为这将导致数据分组的副本被发送到所述对等方。通过限制可能已经发往网络的其他可识别节点的数据分组行进的跳数,可以抑制或减少不必要的网络带宽消耗。

转发到没有包括在第二子集中的第一集合的对等方的数据分组可以被标记以将它们与应该进一步传播(即,转发到第二子集的对等方)的那些数据分组区分开。例如,附加位可以被设置在转发到没有包括在第二子集中的对等方的至少一个第一数据分组中,以指示禁止将所述数据分组进一步中继到其他节点。

在一些实现方式中,至少一个第一数据分组可以从收集的第一数据分组的集合中任意选择。备选地,至少一个第一数据分组可以基于确定该至少一个第一数据分组先前已经被网络节点发送到一个或多个对等节点来选择。作为另一示例,至少一个第一数据分组可以通过随机地设置每n

n

现在参考图15,其示出了用于在节点的网络中传播数据分组的另一示例过程1200。方法1200由例如诸如图1的网络100等的区块链网络的节点来实现。特别地,方法200由参与DMP的节点执行,并且接收第一数据分组(例如,交易)以传播到网络的其余部分。

在操作1202中,节点收集第一数据分组的集合,并且在操作1204中,确定节点到邻居节点的链路中的可用带宽。然后在操作1206中确定数据分组到对等方的映射/中继分配。

在操作1208中,检测网络节点的可用带宽的变化。取决于网络节点的其他通信活动,可用带宽可能增加或减少。该变化可以由网络节点实时检测,并且在操作1210中,用于中继的数据分组到对等节点的更新的映射基于可用带宽的更新指示而实时确定。具体地,映射的一个或多个参数可以基于关于可用带宽的更新的信息来设置,这些因素包括:对等节点的第一数量,通过映射将第一数据分组分配至所述第一数量的对等节点以用于中继;将第一数据分组中继到一个或多个对等节点时的时间延迟的第一时长;以及第一数据分组自网络节点起行进的跳数。

在操作1212中,基于更新的映射/中继分配将第一数据分组传输到网络节点的邻居节点。

关于网络节点的可用带宽的信息可能影响在DMP期间采用哪种扩散模式的决定。更具体地说,网络节点可以基于节点到其邻居的链路中的当前可用的带宽来确定是切换到RDR模式还是标准扩散模式。如果发生以下情况,则在扩散模式之间进行切换:由RDR生成的处理开销过高;可用带宽不需要任何网络优化;以及本地系统被设置为在两种扩散模式之间周期性地交替。

现在将参考图16,其以框图的形式示出了参与节点900的简化示例。节点1600包括处理器1602,该处理器1602可以包括一个或多个微处理器、专用集成芯片(ASIC)、微控制器或类似的计算机处理装置。节点1600还包括存储器1604和网络接口1606,该存储器1604可以包括持久性存储器和非持久性存储器,用于存储值、变量,以及在某些情况下,用于存储处理器可执行的程序指令,该网络接口1606用于在有线或无线网络上提供网络连接性。

节点1600包括处理器可执行区块链应用程序1608,该处理器可执行区块链应用程序1608包含处理器可执行指令,该处理器可执行指令在被执行时使处理器1602执行本文所述的功能或操作中的一个或多个。

将理解的是,可以使用标准计算机编程技术和语言来实现本文描述的装置和过程以及实现所描述的用于配置区块链节点的方法/过程的任何模块、例程、过程、线程、应用程序或其他软件组件。本申请不限于特定的处理器、计算机语言、计算机编程约定、数据结构或其他这样的实现细节。

应当注意,上述实施例说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施例而不脱离由所附权利要求书限定的本发明的范围。在权利要求书中,括号中放置的任何附图标记都不应解释为对权利要求的限制。词语“包括”和“包含”等不排除任何权利要求或整个说明书中列出的元素或步骤之外的元素或步骤的存在。在本说明书中,“包括”是指“包含或由……组成”并且“包括有”是指“包含有或由……组成”。元素的单数引用并不排除此类元素的复数引用,反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个器件的装置权利要求中,这些装置中的几个可以由一项且相同的硬件来实施。在互不相同的从属权利要求中记载某些手段的事实并不表示不能有利地使用这些手段的组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号