首页 / 专利库 / 电脑零配件 / 接口 / 优化网络参数以实现网络编码

优化网络参数以实现网络编码

阅读:818发布:2022-11-30

专利汇可以提供优化网络参数以实现网络编码专利检索,专利查询,专利分析的服务。并且用于在 节点 网络中传播交易的方法和设备,每个节点与其他节点具有一个或多个连接。所述方法包括:在某个时间段接收多个传入交易;通过网络编码将这些多个传入交易组合起来以生成复合消息;将所述复合消息发送到网络中的一个或多个节点;以及基于平衡常数参数和在所述时间段内接收的多个传入交易中的交易的次数,来确定调整后的时间段。,下面是优化网络参数以实现网络编码专利的具体信息内容。

1.一种在节点的网络中传播交易的节点,每个节点与其他节点有一个或多个连接,所述节点包括:
处理器;
存储器
网络接口;和
包含处理器可执行指令的应用程序,所述指令在由处理器执行时使处理器在某个时间段内接收多个传入交易;
通过网络编码将所述多个传入交易组合起来以生成复合消息;
将所述复合消息发送到网络中的一个或多个节点;以及
基于平衡常数参数和在所述时间段内接收到的多个传入交易中的交易的次数,来确定调整后的时间段。
2.根据权利要求1所述的节点,其中,所述指令在执行时还将使得所述处理器使用所述调整的时间段迭代地重复所述接收、组合和发送操作,并在每次迭代之后确定在随后迭代中使用的进一步调整的时间段。
3.根据权利要求1或2所述的节点,其中,所述指令在执行时,通过确定基于所述平衡常数参数除以所述交易的次数而确定所述调整后的时间段,使所述处理器确定所述调整后的时间段。
4.根据权利要求3所述的节点,其中,确定所述调整后的时间段受制于所述调整后的时间段不能低于的最小时间段和所述调整后的时间段不能高于的最大时间段。
5.根据权利要求1到4中任一项所述的节点,其中,所述指令在执行时还使所述处理器基于多个调整后的时间段来确定平均时间段,并将所述平均时间段存储在所述存储器中。
6.根据权利要求5所述的节点,其中,所述指令在执行时,还导致所述处理器向所述节点网络中的一个或多个邻近节点发送所述平均时间段。
7.根据权利要求1到6中的任一项所述的节点,其中,所述指令在执行时,基于对链接到所述其中一个节点的多个链路之一进行一个或多个吞吐量估计,使所述处理器初始化所述平衡常数参数。
8.根据权利要求1到6中的任一项所述的节点,其中,所述指令在执行时,基于预估的初始时间段和预估的初始交易的次数,使所述处理器初始化所述平衡常数参数。
9.根据权利要求1到8中的任一项所述的节点,其中,所述指令在执行时,还使所述处理器确定在所述时间段内接收到的交易的次数超过最小次数,以使用网络编码,并且其中合并和发送取决于所述确定。
10.一种计算机实现的方法,用于在节点网络中传播交易,每个节点与其他节点具有一个或多个连接,所述方法在其中一个所述节点执行,包括:
一段时间内接收多个传入交易;
通过网络编码将所述多个传入交易组合起来以生成复合消息;
将所述复合消息发送到所述网络中的一个或多个节点;以及
基于平衡常数参数和在所述时间段内接收的多个传入交易中的交易次数,来确定调整后的时间段。
11.根据权利要求10所述的方法,还包括:使用所述调整的时间段迭代地重复所述接收、组合和发送操作,并在每次迭代之后确定在随后迭代中使用的进一步调整的时间段。
12.根据权利要求10所述的方法,其中,确定所述调整的时间段包括基于所述平衡常数参数除以所述交易的次数而确定所述调整后的时间段。
13.根据权利要求12所述的方法,其中,确定所述调整后的时间段受制于所述调整后的时间段不能低于的最小时间段和所述调整后的时间段不能高于的最大时间段。
14.根据权利要求10所述的方法,还包括基于多个调整时间段来确定平均时间段,并将所述平均时间段存储在所述节点之一处的存储器中。
15.根据权利要求14所述的方法,还包括向所述节点的网络中的一个或多个邻近节点发送所述平均时间段。
16.根据权利要求10所述的方法,还包括,基于对链接到所述其中一个节点的多个链路其中之一进行一个或多个吞吐量估计,来初始化所述平衡常数参数。
17.根据权利要求10所述的方法,还包括基于预估的初始时间段和预估的初始交易的次数,来初始化所述平衡常数参数。
18.根据权利要求10所述的方法,还包括:确定在所述时间段内接收到的交易的次数超过最小次数,以使用网络编码,并且其中所述合并和发送取决于所述确定。
19.一种非暂时性处理器可读介质,所述介质存储处理器可执行指令,以参与多个参与节点之间的交易,其中,所述参与节点之一的处理器在执行所述处理器可执行指令时,使得所述处理器执行权利要求10到18中任一项所述的方法。

说明书全文

优化网络参数以实现网络编码

技术领域

[0001] 本发明主要涉及在网络中传播交易,尤其涉及提高交易处理速度的方法和设备。

背景技术

[0002] 在本文中,使用术语“链”来包括所有形式的基于计算机的电子分布式账本。这些包括但不限于基于共识的区块链和交易链技术、经过许可和未经许可的账本、共享账本及其变型。尽管已经提出和开发了其它区块链实现方式,但是区块链技术最广为人知的应用是比特币账本。出于方便和说明的目的,虽然本文可以引用“比特币”,但是应注意,本发明不限于用于比特币区块链,替代区块链实现方式和协议也落入本发明的范围内。
[0003] 区块链是基于共识的电子账本,其实现为基于计算机的去中心化的分布式系统,所述系统由区块组成,而区块又由交易组成。每笔交易(Tx)都是数据结构,所述数据结构对区块链系统中的参与者之间的数字资产进行控制的转移进行编码,且交易包括至少一个输入和至少一个输出。每个区块包含前一区块的散列,因此区块链接在一起以创建所有交易的永久性不可更改的记录,这些交易自区块链创建以来写入区块链。交易包括嵌入到其输入和输出中的小程序,这些小程序被称为脚本,其指定可以如何以及由谁访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
[0004] 接收新交易的网络节点会迅速试图把所述交易推送到网络中的其他节点。新交易传输到其他节点之前会对其进行“验证”,也就是说根据一组标准对其进行检查,以确保根据适用的区块链协议所述交易符合对合理交易的基本要求。
[0005] 为了把交易写入区块链,节点(“矿工”或“挖矿节点”)将交易并入到区块中,所述节点设计成用于收集交易并将其形成区块。然后,矿工试图针对该节点完成“工作量证明”。整个区块链网络中的矿工竞相最先组配交易区块并完成该区块相关工作量证明。成功的矿工将其已确认的区块添加到区块链中,且该区块通过网络传播,以便那些维护区块链副本的其他节点可以更新其记录。接收区块的节点还“验证”该区块以及其中的所有交易,以确保其符合协议的正式要求。
[0006] 使用基于区块链的网络(例如比特币)来使能或方便对广泛的、密码保护的交换的应用将会是有利的。这种交换可以涉及例如用于信用卡交易的支付处理。但是,每秒约为3的交易吞吐量不足以处理这种电子支付,目前,这种电子支付的交易量约为每秒50,000。与区块链网络速度相关的瓶颈之一是交易的传播。接收交易的每个节点验证该交易,然后将其发送到对等节点。实际上,在比特币协议中,节点将会向对等节点发送包含交易列表的INV消息,并收到GETDATA响应消息,该响应消息选择在INV消息中所公布的交易的某个子集。然后,该节点把请求的交易发送到对等节点。对该节点所连接的每个对等节点都执行该过程。
[0007] 因此,人们希望通过提高交易传播速度来找到针对速度和可扩展性约束的解决方案,这种约束目前限制了区块链处理大量交易的能。也期望找到一种更普遍适用于节点网络中的交易传播的解决方案,不管是否与区块链或其他应用有关。
[0008] 现在已经设计出这种解决方案。

发明内容

[0009] 因此,根据本发明,提供了如所附权利要求中定义的方法和设备。
[0010] 本申请描述并公开了促进交易(TXs)快速传播的方法和设备。在一些示例中,节点选择性地使用网络编码,来把交易合并成单个消息以发送到对等节点。可以基于确定该节点是否是潜在瓶颈而选择性使用网络编码。在一些实施例中,该解决方案可以在区块链网络环境中应用。
[0011] 在附加或替代方面,本申请描述了计算机实现的方法,用于在节点网络中传播交易,每个节点与其他节点有一个或多个连接。在这些节点之一的执行的方法包括:确定所述节点之一是交易传播的瓶颈;在第一时间段内,从节点网络中的一个或多个第一节点接收多个新交易;通过网络编码和本地编码向量来合并这些多个新交易,以生成消息;将消息和全局编码向量发送到节点网络中的一个或多个第二节点,而不是把这些多个新交易发送到所述一个或多个第二节点。
[0012] 在附加或替代方面,本申请描述了一种节点,该节点包括处理器、存储器、网络接口以及包含指令的应用程序,该指令在由处理器执行时会执行本文所述的一个或多个方法。
[0013] 在一些实施例中,所述方法或节点通过评估该节点的入站链接数量和出站链接数量,来确定该节点是否是瓶颈。如果入站链接数量大于出站链接数量,则确定该节点为瓶颈。该评估可以在接收到多个新交易中的首个交易时进行。在另一个实施例中,可以通过跟踪一段时间内的入站链接数量和出站链接数量来进行评估,且入站数量和出站数量均为平均值。在一些示例实施例中,响应于接收到多个新交易中的首个交易,节点开始确定它是否是瓶颈。
[0014] 在一些实施例中,响应于确定已经满足停止条件,来执行合并和发送。在一个示例中,停止条件是自接收多个新交易中的首个交易的持续时间到期或确定其中一个所述节点是瓶颈。在另一个示例中,停止条件是多个新交易已经达到新交易的最大数量。
[0015] 在一些实施例中,消息的长度不大于多个新交易中的最长交易。
[0016] 在附加或替代方面,本申请描述了一种在节点网络中传播交易的节点,每个节点具有与其他节点的一个或多个连接。该节点包括处理器、存储器、网络接口、和包含处理器可执行指令的应用程序。该指令在由处理器执行时会使处理器:在某个时间段内接收多个传入交易;使用网络编码将这些多个传入交易合并以生成复合消息;将该复合消息发送到网络中的一个或多个节点;以及基于平衡常数参数和在该时间段内接收到的多个传入交易中的交易的次数,来确定调整后的时间段。
[0017] 在又一附加或替代方面,本申请描述了一种计算机实现的方法,用于在节点网络中传播交易,每个节点与其他节点有一个或多个连接。该方法在其中一个节点执行,包括:一段时间内接收多个传入交易;使用网络编码将所述多个传入交易合并起来以生成复合消息;将该复合消息发送到网络中的一个或多个节点;以及基于平衡常数参数和在该时间段内接收的多个传入交易中的交易的次数,来确定调整后的时间段。
[0018] 一些实施例包括使用所述调整的时间段迭代地重复所述接收、组合和发送操作,并在每次迭代之后确定进一步调整的时间段,以在随后迭代中使用。
[0019] 在一些实施例中,确定所述调整的时间段包括基于平衡常数参数除以交易次数而确定调整后的时间段。在某些情况下,这种确定受制于所述调整后的时间段不能低于的最小时间段和所述调整后的时间段不能高于的最大时间段。
[0020] 一些实施例包括基于多个调整时间段来确定平均时间段,并将该平均时间段存储在所述节点之一处的存储器中。在某些情况下,会向节点网络中的一个或多个邻近节点发送平均时间段。
[0021] 一些实施例包括基于对连接到所述其中一个节点的一个或多个链路进行一个或多个吞吐量估计,来初始化平衡常数参数。但是其他实施例可以包括基于估计的初始时间段和估计的初始的交易次数来初始化平衡常数参数。
[0022] 一些实施例包括确定在所述时间段内接收到的交易的次数超过使用网络编码的最小次数,并且其中合并和发送取决于该确定。
[0023] 在附加或替代方面,本申请描述了一种非暂时性处理器可读介质,该介质存储处理器可执行指令,以在节点网络中传播交易,其中,在所述节点之一的处理器执行处理器可执行指令时,这些可执行指令会使得该处理器执行本文所述的一个或多个方法。
[0024] 在本文所述的多个示例实施例中,具体提到了区块链交易。然而,应理解可以结合非区块链交易传播来实现和应用本文所描述的方法和设备。附图说明
[0025] 参考本文描述的实施例,本发明的这些和其他方面将会变得显而易见并得以阐述。现在仅通过举例的方式并参考附图来描述本发明的实施例,其中:
[0026] 图1示出了与区块链关联的示例网络。
[0027] 图2示意性地示出了具有输入缓冲区和输出缓冲区的示例节点。
[0028] 图3示出了网络中节点的简化示例网络。
[0029] 图4示出了图3的另一个时间的网络。
[0030] 图5示意性地示出了示例网络的一部分。
[0031] 图6示出了具有入站链接和一个出站链接的节点。
[0032] 图7以流程图的形式示出了用于在节点网络中传播交易的示例过程。
[0033] 图8以流程图形式示出了在节点网络中传播交易的另一示例过程。
[0034] 图9示出了传播交易的节点的网络的示例。
[0035] 图10以流程图的形式示出了通过具有可调整时间段的网络编码来传播交易的示例方法。
[0036] 图11以流程图的形式示出了通过具有可调整时间段的网络编码来选择性地传播交易的示例方法。
[0037] 图12以框图的形式示出了示例区块链节点。

具体实施方式

[0038] 在本申请中,术语“和/或”旨在涵盖所列元素的所有可能的组合和子组合,包括单独列出的任何一个元素、任何子组合或所有元素,且不必排除其他元素。
[0039] 在本申请中,短语“……或……中的至少一个”旨在涵盖所列的任何一个或多个元素,包括单独列出的任何一个元素、任何子组合或所有元素,且不必排除任何其他元素,并且不一定需要所有元素。
[0040] 首先将参考图1,其以框图形式示出了与区块链相关联的示例网络,该网络在本文中可称为区块链网络100。区块链网络100是点对点的开放成员网络。任何人都可以在未经邀请或其他成员同意的情况下加入。
[0041] 运行区块链协议(区块链网络100在其下运行)实例的分布式电子设备可参与区块链网络100。这种分布式电子设备可称为节点102。区块链协议可以是比特币协议或其他例如加密货币
[0042] 运行区块链协议并形成区块链网络100的节点102的电子设备可以是各种类型的,包括计算机(例如台式电脑、笔记本电脑平板电脑服务器)、移动设备(例如智能手机)、可穿戴设备(例如智能手表)或其它电子设备。
[0043] 区块链网络100的节点102通过使用合适的通信技术彼此连接,所述通信技术可以包括有线和无线通信技术。在许多情况下,区块链网络100至少有一部分是在互联网上实现的,且一些节点102可以位于地理上分散的位置
[0044] 节点102维护区块链上所有交易的全局账本,所述区块链分为多个区块,每个区块都包含链中前一个区块的散列。全局账本是分布式账本,并且每个节点102可存储全局账本的完整副本或部分副本。影响全局账本的节点102的交易由其他节点102验证,从而保持全局账本的有效性。本领域的普通技术人员将理解实现和操作区块链网络(例如使用比特币协议的区块链网络)的细节。
[0045] 每个交易通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定了如何以及由谁访问交易的输出。交易的输出可以是作为交易结果的值的转移地址。然后将该值与该输出地址相关联,作为未花费交易输出(UTXO)。然后,随后的交易可以将该地址作为输入,以花费或分散该值。
[0046] 节点102可以根据其功能而具有不同的类型或种类。已经表明有四个与节点102相关联的基本功能:钱包、挖矿、完整的区块链维护、和网络路由。这些功能可以各不相同。节点102可具有多个功能。例如,“完整节点”提供所有四个功能。轻量级节点,例如可以在数字钱包中实现的节点,可能仅具有钱包和网络路由这两个功能。数字钱包不存储完整区块链,而是跟踪区块头,区块头在查询区块时用作索引。节点102通过TCP/IP(传输控制协议)等面向连接的协议进行彼此通信。
[0047] 在大多数区块链网络中,不管使用哪种管理协议,以下操作将会是有利的:确保新交易通过网络快速传播,以使得所有维护未确认交易池(通常称为“内存池”)的节点都能获得最新和准确的交易数据库,该数据库有待包含在新区块中。挖掘节点利用未确认交易池来构建潜在的新区块。在某些情况下,挖掘节点在本地维护完整的内存池,以便挖掘节点可以将未确认交易组合到一个新的区块中进行挖掘。在一些实施例中,可以由节点(可称为验证节点等)的单独网络来管理和维护内存池,且这些节点可以从内存池向挖掘节点发送一组未确认交易,从而使挖掘节点试图挖掘区块。在一些实施例中,可以将内存池存储在多个节点之间的分布式散列表中。无论是什么结构,都希望任何新交易都通过网络传播,以尽快到达必要的节点。还希望任何成功开采的新区块尽快通过网络传播,以减少孤块的出现。
[0048] 例如,在目前比特币网络的实现方案中,每个接收到新交易的节点都验证该交易,然后将其发送到与其连接的所有节点(如果这些节点尚未接收到新交易)。对于比特币,节点使用TCP/IP(传输控制协议)。接收新交易的节点向每个对等节点发送INV消息,其中包含有关可用新交易的数据,并从对接收新交易有兴趣的每个节点接收GETDATA消息。然后,该节点通过(单独的)TCP消息把交易发送给请求该交易的每个节点。
[0049] 现参考图2,其示意性地示出了具有输入缓冲区202和输出缓冲区204的示例节点200。示例节点200具有包括多个对等节点的网络接口,这些接口称为intA,intB,intC,intD等。输入缓冲区202示出了来自各个对等节点的传入交易,而输出缓冲区204示出了在各个接口上将某些接收到的交易传输到对等节点。根据节点202的操作系统提供的原语,在应用层上按顺序发送和接收网络数据包。假定交易x适合单个以太网/IP数据包,则它向m个对等节点的传输需要缓冲m个不同的输出数据包。输入和输出网络数据包以及其他信息将包含序列化的交易和逻辑接口ID,该逻辑接口ID代表与发送/接收对等方的TCP/IP连接。
[0050] 传入交易的预期处理时间取决于输入队列Li的平均长度(以数据包为单位),而正确传输已处理交易预期时间取决于输出队列Lo的平均长度。因此,交易的有效中继依赖于降低Li和Lo值。但是,用于选择性地将交易中继到对等方的概率模型直接影响Lo,并通过归纳法影响Li。
[0051] 当前比特币实施方案中,INV和GETDATA消息包以与交易相同的方式在I/O缓冲区中排队,对传输和接收延迟造成严重影响。
[0052] 提议使用区块链进行大批量快速交易。例如,正在考虑使用区块链来处理付款。支付处理可包括例如信用卡交易等。对于当前的区块链网络实施而言,此类交易数量巨大。因此,提供用于改进区块链网络处理通信(例如在节点之间发送交易)能力的方法和设备将是有利的。
[0053] 根据本申请的一个方面,区块链节点在特定时间段内缓冲新交易,用网络编码将交易合并成单个消息,然后将该消息发送到一个或多个其他区块链节点。此类区块链节点对新交易进行编码以生成消息,该消息以可分解的方式混合新交易,但会生成组合消息。该组合消息具有最大交易的大小以及较小的开销。
[0054] 如果区块链节点使用网络编码,那么该节点也可以不再依赖TCP/IP INV和GETDATA消息,因为该节点将以编码消息的形式发送所有新交易,而不是使节点挑选它们想要接收新交易的哪个子集。
[0055] 现在参考图3,图3示出了区块链网络300中节点的简化示例网络。每个节点都代表网络终端(即,区块链节点),而边线表示节点之间的链接。根据附图的目的,对于每个链接每次预计可以发送或接收单个比特。
[0056] 其中两个节点标记为源S1和S2,源S1和S2接收两个新交易tx1和tx2。在该示例区块链网络300中,这两个节点都维护未确认交易的内存池,因此,节点接收新交易时,通过网络将其传播到所有其他节点中。每个节点都将在各自的本地内存池中验证并存储新交易,并将新交易转发到尚未拥有新交易的任何对等节点。由于区块链网络300的点对点本质,所有节点不会同时接收新交易,也就是说新交易要花一些时间才能到达网络300中的所有节点。例如,在当前比特币网络实现中,新的有效交易平均需要3.5秒才会到达比特币网络90%的节点。从理论上讲,如果交易传输是即时的,例如交易到达网络中所有节点的时间为
0,即t=0,网络将受到保护,以防止出现重复付款的攻击的可能性。因此,提高区块链网络的吞吐量是实现整个系统可扩展性和可靠性的关键因素。
[0057] 区块链网络300的两个节点标记为接收节点R1和R2。
[0058] 节点I1和I2代表中间节点,中间节点可以存储或不存储内存池的副本,但更重要的是代表网络300在时间T的瓶颈。节点I1在接收Tx1和Tx2这两个新交易时,几乎同时也必须决定先发送哪一个交易。也就是说,从I1到I2的输出边线至少在时间T处是瓶颈。
[0059] 节点I1可以使用网络编码将新交易Tx1和Tx2合并为复合消息M,复合消息与Tx1和Tx2中的较大者大小相同。节点I1将消息M发送到节点I2,然后节点I2将消息M转发到接收节点R1和R2。接收节点R1和R2能恢复各个交易Tx1和Tx2。例如,接收节点R1将接收Tx1和M。M基于Tx1和Tx2的组合,因此R1只需要求解等式(Tx1,Tx1+Tx2)即可得出Tx2。相反,R2将接收Tx2,并且需要求解等式(Tx2,Tx1+Tx2)来得出Tx1。
[0060] 瓶颈可能会随时间出现或消失,具体取决于网络的配置以及在任何给定时间生成交易的位置。瓶颈是节点之间的链接(边线),严重限制了网络的性能,尤其是在区块链网络的情况下减慢交易(或区块)的传输。但是瓶颈(节点之间的链接)的源是节点。
[0061] 现在参考图4,其示出了在时间T'的相同区块链网络300。在此示例中,交易Tx1在节点R1处接收,交易Tx3在节点I2处接收。在这种情况下,节点I1处再次出现瓶颈,但这次由于Tx2和Tx3同时到达节点I1,而出现的节点I1与节点S1之间的链接。节点I1可以使用网络编码把Tx2和Tx3组合成消息M'。
[0062] 一种选择是使每个节点在所有情况下都应用网络编码。但是,通过在特定节点(此时可能会是有利的)选择性地应用网络编码,可能会进一步提高性能。例如,如果节点能确定它在任何给定的时间点是否表示瓶颈,则该节点可以选择性地或适应地将网络编码应用于消息的传输,而如果不是瓶颈,则节点对交易进行常规传输。
[0063] 因此,节点可用于评估或确定在给定的时间点是否为可能的瓶颈。从某种意义上来说,这可以基于入站链接和出站链接之间的平衡来确定。也就是说,在给定的时间点,节点可以在一个或多个链接上接收交易,且计划在一个或多个链接上发送那些交易。节点之间的连接(即边线)可以在任何给定的时间点根据网络中的流量充当入站链接或出站链接。在某些情况下,入站链接的数量可称为“扇入”(Fan-in),出站链接的数量可称为“扇出”(Fan-out)。
[0064] 在一个实施例中,区块链网络中的至少一些节点维护表或其他数据结构,所述表或其他数据结构用于跟踪到首要邻近节点的扇入链接和扇出链接的相对数量。图5示意性地示出了示例网络的一部分,其中第一节点I1和第二节点I2都在本地存储表或其他数据结构,所述表或其他数据结构用于在任何给定时间确定该节点的扇入量和扇出量。根据扇入和扇出的相对数量,节点可确定它是否是可能的瓶颈。通常,可以基于入站链接(扇入)的数量是否超过出站链接(扇出)的数量来确定,在这种情况下,该节点此时可能是瓶颈。
[0065] 在一个示例实施例中,在时间段ΔT内评估节点是否为瓶颈。表中的数量可以是时间段ΔT内的平均扇入和扇出。
[0066] 在一些实施例中,还可以部分基于对网络拓扑的了解来确定。例如,至少在某些情况下,作为外围节点的节点不太可能成为瓶颈,而作为中间节点的节点则更有可能成为瓶颈。
[0067] 在其他实施例中,可以基于输出队列的状态或随时间的推移对输出队列中积压的评估来确定节点是否为瓶颈。
[0068] 在一些实施例中,确定或识别瓶颈包括上述因素的组合或子组合。
[0069] 网络编码是在不到二十年前开发的,可替代当时主流的分组交换网。网络编码将网络建模为具有链路容量的有向图(N,L),表明节点n(n∈N)能以达到广播容量h的速度把信息传递给一组接收器 其中h是在网络内部节点编码的s和任何r(r∈R)之间的最小割集。
[0070] 切割C定义为把图G=(V,E)的顶点V分成两个不相交的子集S和T。切割C=(S,T)的割集是两个端点分别在S和T的边线集{(u,v)∈E|u∈S,v∈T}。
[0071] 在《大学》(2003年),40-49页,第41卷《,阿勒顿通信控制与计算年会文集》中的《实用网络编码》(P.A.Chou,Y.Wu,and K.Jain“, Practical Network Coding”,Proceedings of the annual Allerton conference on communication control and computing,v.41,pp.40-49,The University(2003))中,P.A.Chou,Y.Wu,和K.Jain描述了网络编码的示例方法,在此引用作为参考。这种方法去除了对网络拓扑或编码或解码函数的任何去中心化知识。Chou指出,网络N可以表示为具有单位容量边(e),发送方s(s∈V)和一定数量的接收方 的非循环图G=(V,E)。节点v=in(e)的每个边线e(e∈E)的输出都有一个符号y(e),该符号是进入节点v的边线e′上符号y(e′)的线性组合。图6示出了节点v和输出y(e)。特别地,输出表示为:
[0072] 其中,y(e′i)=xi,i=1,...,h,且向量me是本地编码向量,表示边线e在节点v处的编码函数,h表示发送方和接收方之间任何切割的最小边线数的广播容量。
[0073] Chou指出,任意边线e(e∈E)上的输出y(e)都是源符号的线性组合且系数g(e)=[g1(e) ,...,gh(e)]的h维向量可以由
通过递归获得,其中边线ei上的 实施
至第i个单位向量。g(e)可称为沿着e的全局编码向量。对于任何沿h个传入边线接收符号的节点t来说:
[0074] 如果全局编码向量的矩阵Gt的等级为h,则节点t可以恢复源符号x1,...,xh。在以上示例中,应用于区块链交易网络编码时,交易存储在数组[x1,…,xh]中。有关详细信息,请参见Chou。
[0075] 输出边线e的全局编码向量可描述为基于对输入边线e'的全局编码向量的本地编码。
[0076] 应当理解,网络编码可用于通过网络传播交易。在用于实现未确认交易的分布式散列表的覆盖网络中,也会使用网络编码,其中每个交易由至少两个节点存储,以确保分布式散列表内的冗余。在这种情况下,网络编码可以在把交易发送到两个或更多节点进行存储时使用。但是,使用网络编码可以提供额外的优势,即能从丢失两个或更多存储交易的节点中恢复过来。由于中间节点已接收一个或多个消息,该消息包含有关交易的组合数据,因此可以从网络编码消息中恢复丢失的交易。
[0077] 现在参考图7,其以流程图形式示出了用于在区块链网络中传播交易的示例过程700。过程700由区块链网络中的节点实现。在这种情况下,节点可理解为是指区块链网络中的挖掘节点、完整节点、验证节点或其他类型的离散区块链节点。该节点是一种具有网络连接、计算资源和实现区块链协议的执行软件的计算设备。
[0078] 在操作702中,节点在时间T确定它是网络中的潜在瓶颈。如上所述,可以基于在时间T扇入和扇出的比较来确定。例如,如果在时间T扇入超过扇出,则节点可以确定它是瓶颈。在确定该节点是否为瓶颈时,可替代地或附加地考虑其他因素。例如,一段时间内的平均扇入和扇出,网络拓扑中的节点位置,节点输出队列的当前或历史状态,或与传播所接收交易的节点容量有关的任何其他因素。
[0079] 在操作704中,确定为瓶颈后,节点在时间段ΔT内累积交易。该时间段可以是预定的时间长度。在一些示例实现中,时间段可基于网络流量测量、地理信息或这两者而变化。该时间段不是一段固定时间,而是直到接收到最小数量的交易,交易的累积可以出现。而这可能进一步受到最大时间的影响,这样累积的交易才不会保持太长时间。
[0080] 在操作706中,使用网络编码将节点已累积的多个交易组合成单个消息。在某些实现中,消息的长度可以与这些交易中最长的交易一样长。而在某些实现中,消息的长度(以比特为单位)可以不超过这些交易中的最长长度。该消息通过本地编码向量和网络编码算法生成。
[0081] 然后,在操作708中该节点把该消息和全局编码向量发送到一个或多个节点。发送消息而不是发送实际交易。也就是说,该节点不发送多个累积的交易,而是在其所有出站链接上把消息和全局编码向量发送给对等节点。
[0082] 现在将参考图8,其以流程图形式示出了用于在区块链网络中传播交易的示例方法800。如上所述,可以在具有多个入站链接和出站链接的区块链节点处执行方法800。
[0083] 在操作802中区块链节点接收交易。所接收的交易是通过入站链接接收的。区块链可以根据协议要求验证交易,以确保交易合法。在操作804中,节点可以确定它是否是与交易有关的瓶颈。可以基于评估当时入站(扇入)和出站(扇出)之间的平衡来进行确定。如上所述,也可以根据其他因素来确定。
[0084] 如果节点确定它不是瓶颈,则在操作806中该节点按正常方式在其出站链接上把交易发送到区块链网络中的一个或多个对等节点。但是,如果节点确定这是可能的瓶颈,则在操作807,节点把交易存储在存储器(如在缓冲区或其他存储元件中)。
[0085] 然后,如操作808所示,节点继续接收交易,并进行存储,直到确定已满足停止条件为止。在该示例中,停止条件是经过了持续时间ΔT。例如,该持续时间可以从确定该节点是瓶颈开始,或者从在操作802中接收到首次交易开始。可以使用其他条件代替持续时间;例如,在存储器中累积最大数量的交易,或者这些因素的任意组合。
[0086] 一旦满足停止条件,例如在这种情况下已经过去了ΔT,然后该节点如操作812所示的使用网络编码和本地编码向量从存储的交易中构建消息M。然后在操作814中,该节点在其所有出站链接上向其他节点发送该消息和全局编码向量。网络编码的可调时间段
[0087] 在一些实施例中,时间段ΔT可以不固定。也就是说,根据网络的特性或进出节点的交易流量,节点可以不时地调整ΔT。在一些实施例中,可以在每个ΔT期满之后调整时间段ΔT,使该时间段不断适应当前的流量平。在一些实施例中,对时间段ΔT的任何调整都限制在最小时间段和最大时间段内。在一些实施例中,仅可以周期性地调整时间段ΔT,诸如在每2、5、10或其他数量的时间段之后,或者仅当所确定的调整会按照超过一定的阈值数量或百分比时来改变所述时间段。
[0088] 为了适应流量状况,节点可以使用“吞吐量”的概念。该节点可以具有链接到网络中的多个其他节点的入站链接和出站链接。现在参考图9,其示意性地示出了节点900的示例网络。节点N3具有链接到节点N1、N2、N4、N5和N6的入站链接和出站链接。这些节点可表征为(逻辑)首要邻近节点。通常,节点知道其首要邻近节点。也就是说,该节点可以从这些节点直接(不通过网络节点中的另一个节点进行路由)接收交易或直接向这些节点发送交易。注意,“首要邻近节点”不一定在地理位置上很近,且可以通过遍历大量网络元件和链接(而不是通过另一个节点)来获得。
[0089] 节点N3可以在节点N3本地存储表中跟踪其首要邻近节点,如下示例表所示:表1
[0090] 在以上示例中,节点N3对从表中节点通过每个入站链接接收的消息的大小si进行跟踪,同时也对通过每个出站链接发送给表中节点的消息的大小so进行跟踪。可以假定链路的吞吐量在输入和输出之间平均分配,即,平均分配信道带宽,尽管该假设可能并不总是成立。但是,基于该假设,以下公式可以表示分析时间段内链路或信道的吞吐量Tr:
[0091] Tr≥∑si+so
[0092] 即,吞吐量Tr必须大于或等于通过链路发送或接收的数据总量。
[0093] 应当理解,在实际实现中可能不会遵守入站和出站上相等吞吐量的假设。所以平衡参数γ∈[0,1]可以定义为进/出吞吐率,因此:(用于输入)
(用于输出)
[0094] 在以上表达式中,参数ΔT表示对发送/接收的消息的大小进行测量的时间段。应理解以上表达式没有表明信道或链路的实际最大吞吐量Tr,而是示出了链路或信道的吞吐量Tr必须至少要与实际使用数据一样大(实际发送/接收的消息的大小)。因此,在一些实例中,可以基于历史使用数据来估计链路的吞吐量Tr,如测量通过链路发送和接收的消息的大小。
[0095] 可以通过其他一些经验数据对链路的吞吐量Tr进行估算。例如,在基于TCP/IP运行的网络(如比特币)的情况下,可以使用TCP接收窗口(RWIN)和往返时间(RTT)来确定链路的吞吐量。RWIN表明了在不向发送方发送任何确认时节点可以接收的数据量,且可以由网络使用的适用的通信协议来定义。RTT是对大小可忽略的消息从链路一端的节点到链路另一端的节点并再返回所需时间的测量,有时可称为ping消息等。
[0096] 其他机制也可用于确定吞吐量Tr,包括从邻近节点获取吞吐量信息、使用预设或预定吞吐量估计或其他吞吐量估计的来源。
[0097] 在本申请的一些实施例中,对于有关估计节点各种链路的吞吐量的本地存储信息,节点可以对其进行维护。这些链路可以是与首要邻近节点链接的链路。例如,可以修改上文表1以添加与每个链路的吞吐量估计有关的列:表2
[0098] 节点可进一步确定其可用链路的中值吞吐量或平均吞吐量。
[0099] 如上所述,网络编码可以包括组合在时间段ΔT接收到的一组交易以生成复合消息M,然后该复合消息M通过节点从出站链接发送出去,而不是传播单个消息。在本申请的一些实施例中,时间段ΔT可以至少部分地基于吞吐量和接收到的交易数量。
[0100] 如上所述,可以基于节点的可用链路的中值吞吐量或平均吞吐量来设置吞吐量。
[0101] 或者在一些情况下,基于关于网络的一些假设,节点可以把吞吐量初始化为全局估计的吞吐量值。例如,可以首先将时间段ΔT初始化为预设值,并将交易次数设置为估计的预设值,由此可以确定预估的吞吐量。在比特币网络的特定示例情况下,预设时间段ΔT可以是3.5秒,因为这是交易到达比特币网络中90%的节点所需的近似时间。在其他实施例中,时间段ΔT可初始化为另一个值。时间段ΔT内可接收的交易的次数也可以起初假定为预设值。在比特币网络的特定示例中,基于平均区块(在比特币的当前实现中)包含大约2000笔交易,而2000除以3.5大约为500,交易数量N初始化为500。在其他实现中也可以使用其他初始化值。
[0102] 选定时间段ΔT的初始值和交易次数之后,这些参数之间的关系就可以建立为时间段ΔT和交易次数的乘积。K=ΔT0·N0
[0103] 其中,将K设为相对于时间段ΔT和交易次数N的反比例常数。在上式中,ΔT0是时间段ΔT的初始值,而N0是所收到交易的次数的初始值。在其他实施例中,如上所述,可以基于其他假设或测量对常数K进行初始化。常数K与吞吐量Tr有关,因为常数K与N和ΔT之间的反比例关系有关。如果N个交易中的每一个都具有一定的大小,则N个交易累积起来则表示一定数量的数据,例如在ΔT时间段内所接收的si。在一些情况下,可以在部分基于估计或目标吞吐量Tr来确定常数K。
[0104] 吞吐量Tr的概念和常数K之间的关系用以下表达式表示:
[0105] 确定初始常数K之后,节点监视在ΔT过程中在其入站链接中实际接收的交易数,并决定是否调整ΔT。在至少一种实现中,根据至少前一个ΔT内接收的交易数量和常数K对ΔT进行调整。例如,一种用于确定ΔTi的方法如下:
[0106] 其中,i表示索引。在此简化示例中,次数i的ΔT基于紧接在前的ΔT内接收的交易数量,其中K为常数。在某种意义上,可以把K标记为平衡常数,因为它是基于时间段和交易数量的乘积,并且在一定程度上,一个时间段内接收的交易太少而无法满足平衡常数,所以可以通过延长时间段来维持平衡常数。
[0107] 在另一示例实施例中,所接收交易的次数可能不仅仅根据先前时间段ΔTi-1,而是可能基于两个或更多先前时间段的平均值。在一些情况下,平均值可以确定为加权平均值,以便为最近的时间段赋予更大的权重。
[0108] 在其他示例实施例中,还可以基于大量因素中的任何一个来随时间调整吞吐量。在一个实例中,可基于来自一个或多个临近节点的中间吞吐量或平均吞吐量值来初始化常数K。
[0109] 现在参考图10,其以流程图形式示出了一种示例方法1000,该方法在节点网络中使用网络编码来传播交易。方法1000在节点网络中的一个节点处实现。在该示例中,节点用于使用网络编码进行传播交易。
[0110] 在操作1002中,可以初始化某些参数。例如,初始时间段ΔT0可设置为预定值。如上所述,在某些情况下,初始时间段ΔT0可设置为从临近节点正在使用的当前时间段ΔT得出的值。在某些情况下,可以基于预定的吞吐量值和预期的交易数量来计算初始时间段。包括综合以上所述在内的其他机制也可以用于确定初始时间段ΔT0。
[0111] 另外,如果参数N0用于确定初始时间段ΔT0或常数K,即平衡常数,那么也可以初始化交易数量N0。在某些情况下,交易数量N0可用于确定常数K,例如使用以下表达式:K=ΔT0·N0
[0112] 在某些情况下,可通过使用预定常量K根据交易数量N0来确定初始时间段ΔT0,如使用以下表达式:
[0113] 可根据初始时间段ΔT0和交易次数N0来确定常数K,但是在某些其他情况下,可以将其常数K设置为预设的或预定的平衡常数值。如果对网络或所使用的协议的更改影响到节点的链路的可能特性,则节点可以随着网络的变化而更新常数K的预定值,这可能影响交易量和/或吞吐量。在某些情况下,常数K可以凭经验确定。例如,可以使用关于吞吐量的历史数据来确定常数K。在另一个示例中,如上所述,可以基于往返时间测试来确定常数K。在另一示例中,可以基于关于一个或多个相邻节点处的吞吐量的数据来确定常数K。作为说明,当前节点可以算出与其相邻节点相关联的平均吞吐量值,并使用该值来估计平衡常数以得出常数K。
[0114] 在操作1004中,在至少已经初始化初始时间段ΔT0和常数K后,节点在其入站链接上接收交易。交易在节点的储存器中缓冲。如操作1006所指示的,节点继续在其入站链接中接收并保留交易,直到时间段ΔTi到期。可以理解,i只是索引且起初设为0。
[0115] 一旦时间段到期,则在操作1008中使用网络编码发送交易。这可以包括使用网络编码操作来组合交易以生成消息M,以及通过节点出站链接发送消息。
[0116] 在操作1010中,索引i增加,然后节点在操作1012中更新时间段ΔTi。在该示例中,更新的时间段ΔTi基于常数K除以前一个时间段ΔTi-1内所接收交易的实际数量或次数。对时间段ΔTi的调整可能受制于某些约束,如不能超过的最大值或不能低于的最小值。在一些实施例中,调整可以基于一个以上的先前时间段以及在这些时间段中接收的交易次数。在一些实施例中,在对时间段ΔTi的调整上可以施加不同或附加的约束,例如,每次迭代的变化不得超过特定百分比。
[0117] 在此示例中,节点在每次迭代中使用网络编码发送交易。在另一示例实施例中,如果时间段内的交易量证明使用网络编码是合理的,节点可以选择性地使用网络编码。现在参考图11,其以流程图形式示出了用于在节点网络中传播交易的示例方法1100。
[0118] 操作1102、1104和1106对应于以上所述图10中的操作1002、1004和1006。在操作1108,节点评估在时间段ΔTi期间是否接收到足够数量的交易,以此来证明使用网络编码的合理性。在一些示例中,该评估可以涉及对接收到的交易数量Ni和为使用网络编码而规定的最小交易数量Nmin进行比较。如果满足最小值,则在操作1112中使用网络编码来发送交易。如果不满足最小值,则在操作1110中,使用常规的非网络编码传输来发送交易。
[0119] 操作1114和1116对应如上所述图10中的操作1010和1012。
[0120] 可以理解,示例方法1000和1100中的各种操作或步骤可以改变,在某些情况下也可以省略,但不能改变过程的操作原理。在不改变过程的操作原理的情况下,也可以添加未示出的附加操作。所有这样的变化都计划包括在本文中。
[0121] 每个节点可以维护其当前时间段ΔT(或者在某些情况下,运行平均时间段或加权平均时间段等)的记录,并且可以周期性地将其当前时间段ΔT通知其相邻节点。以这种方式,每个节点可以跟踪其临近节点正在使用的时间段ΔT。因此,新节点进入网络时,该节点可以基于邻近节点的参数来初始化其参数,而不是通过关于网络的假设来初始化节点的参数。例如,新节点可以获得其首要邻近节点所使用的时间段ΔT(或平均时间段ΔT),且可以基于首要邻近节点时间段的平均值或其他组合来设置其初始时间段ΔT。这可以加速新节点对网络特性的适应,并提高适应速度。
[0122] 现在将参考图12,其以框图的形式示出了参与节点1200的简化示例。节点1200包括处理器1202,该处理器可以包括一个或多个微处理器、专用集成芯片(ASIC)、微控制器或类似的计算机处理设备。节点1200还包括存储器1204和网络接口1206,存储器1204可以包括永久性和非永久性存储器,用来存储值、变量以及在某些情况下处理器可执行的程序指令,网络接口1206提供通过有线或无线网络的网络连接。
[0123] 节点1200包括处理器可执行的区块链应用程序1208,该应用程序包含处理器可执行指令,可执行指令执行时会使得处理器1202执行本文所述功能或操作中的一个或多个。
[0124] 可以理解,通过使用标准计算机编程技术和语言,可以实现本文所述的设备和过程,以及实现对所描述的用于配置节点的方法/过程进行执行的任何模块、例程、进程、线程、应用或其他软件组件。本申请不限于特定处理器、计算机语言、计算机编程规范、数据结构或其他实现细节等。
[0125] 应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)和(comprise)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,和包括(comprising)意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈