区块链网络中概率中继的流量控制

文档序号:1472493 发布日期:2020-02-21 浏览:6次 >En<

阅读说明:本技术 区块链网络中概率中继的流量控制 (Flow control for probabilistic relays in blockchain networks ) 是由 朱塞佩·德泰法尼 西蒙娜·马代奥 帕特里克·莫特林斯基 史蒂芬·文森特 亚历山德拉·科瓦奇 于 2018-06-25 设计创作,主要内容包括:本发明涉及一种方法,该方法用于调整区块链网络上的节点将连接的对等节点的最小和最大数量。该调整考虑了节点的带宽和处理能力。节点的带宽容量是基于该节点在一个时间段内可处理的最大数据量来确定的。监控通过节点的接口,发送至对等节点或从对等节点发出的数据,并根据输入数据与输出数据之间的差值确定节点的配置文件因子。在监控所述数据的多个时间段上,所分析的数据用于根据所述监控的数据和可连接到节点的对等方的最大数量来设置可连接到该节点的对等节点的最小数量和最大数量。该方法使节点能够根据性能限制因素例如带宽可用性和处理性能等来调整连接的数量。通过确定对等节点连接的数量,该节点可以进一步确定接口之间的相关矩阵和与它所连接的对等节点。可以用相关系数来编译矩阵,所述相关系数表示在所述节点的每个接口处处理的数据之间的相关性。本发明还涉及相应的计算机可读存储介质、电子设备、区块链网络的节点、或具有这种节点的区块链网络。(The present invention relates to a method for adjusting the minimum and maximum number of peer nodes to be connected by a node on a blockchain network. The adjustment takes into account the bandwidth and processing power of the node. The bandwidth capacity of a node is determined based on the maximum amount of data that the node can handle over a period of time. Data sent to or from the peer node via the node&#39;s interface is monitored, and a configuration file factor for the node is determined based on a difference between the input data and the output data. The analyzed data is used to set a minimum number and a maximum number of peer nodes connectable to a node based on the monitored data and the maximum number of peers connectable to the node over a plurality of time periods during which the data is monitored. The method enables the node to adjust the number of connections according to performance limiting factors such as bandwidth availability and processing performance. By determining the number of peer node connections, the node can further determine the correlation matrix between the interfaces and the peer nodes to which it is connected. The matrix may be compiled with correlation coefficients representing the correlation between data processed at each interface of the nodes. The invention also relates to a corresponding computer readable storage medium, an electronic device, a node of a blockchain network, or a blockchain network having such a node.)

区块链网络中概率中继的流量控制

技术领域

本说明书主要涉及适用于在区块链网络的节点中实现的计算机实现的方法和系统,对用于处理大量交易和大交易区块的修改后的区块链节点结构、网络架构和协议进行了说明。本发明特别适用于,但不限于,用于比特币区块链。

背景技术

在本文中,使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本。这些包括基于共识的区块链和交易链技术、许可及未许可的账本、共享账本及其变型。虽然已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币账本。虽然出于方便和说明的目的,本文中涉及的是比特币,但应当指出,本发明不限于用于比特币区块链,其他的区块链实施方案和协议也落入本发明的范围内。在本文中,术语“用户”可指人或基于处理器的资源。

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

为了将交易写入区块链,必须对该交易进行“验证”。网络节点(矿工)执行该工作以确保每个交易有效,无效交易则被网络拒绝。安装在所述节点上的软件客户端通过在未花费的交易(Unspent Transaction,简称UTXO)上执行其锁定和解锁脚本来执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),则该交易有效,将该交易写入区块链。因此,为了将交易写入区块链,该交易必须:i)由接收交易的第一节点进行验证——如果交易得到验证,则该节点将该交易中继到网络中的其他节点;ii)添加到矿工建造的新区块中;iii)被挖矿,即添加到过去交易的公共账本中。

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

根据参考文献[1],每个区块的平均比特币交易数量约为2000个单位。在不久的将来,对最大区块大小的限制可以放宽,并且每个区块的交易数量可能会大大增加。

有竞争力的加密货币需要尽快传播大量未经确认的交易。相比之下,Visa电子资金转账的峰值容量为每秒56k笔交易[2]。

当前用于通过清单在比特币网络中交换新交易的三步消息传递协议不足以应付快速传播比当前标准大几个数量级的交易量(每秒约5个交易[3])。

就计算工作而言,当今的比特币网络主要集中在挖矿方面。随着交易量的大大增加,这不一定是可行的。

不仅数据流管理至关重要,而且还需要考虑节点和网络的技术容量或能力。

本说明书中描述的解决方案使比特币网络能够处理大量交易的传播,同时考虑到节点和网络的限制。

已知的在比特币网络中发送数据包或交易的方法,例如通过三步消息传递来传播新交易,导致数据包在网络中的传播缓慢。先行步骤导致队列进出节点。当要求节点在其标称限值以上或附近运行时,这些问题会更加严重。

发明内容

总体而言,本发明涉及一种用于处理和传播增加的交易量的新方法,该交易量比当前区块链能力增大了若干个数量级。这可以通过在网络中支持数据包的更快传播来达到,而更快传播是通过减少节点间的通信来实现的。通过根据接口之间的相关性有选择地中继数据包,可以防止出现由于瓶颈而导致进出节点的长队列。附加地或替代地,本发明涉及一种新的方法,用于管理通过节点接口到达对等节点的数据或流量。可以考虑要传输的数据和本地资源。所述本地资源可包括带宽资源、数据配置文件、连接的对等方的数量和节点性能中的至少一项。也可以考虑节点的功能。

该方法使节点能够以自适应方式工作,使得(i)连接到对等节点的接口的数量不可知,并且(ii)与节点的接口相关联的改变不可知,从而解决了新连接、断掉的连接和恶意节点问题,并维护了网络的完整性。

该方法允许节点上可以管理的接口数量不受限制,这使网络的性能和规模不受限制,因为该方法可以适应网络和节点的情况。最小化了无效传输,并规避了恶意节点。

该方法允许确定连接的对等方的最小和最大数量。可以相应地调整执行关键任务的时间窗口。

该方法改进了区块链网络性能,并提供了改进的区块链网络或与区块链网络合作的覆盖网络。

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

因此,期望提供一种用于区块链网络的节点的计算机实现的方法,所述节点具有连接到对等节点的多个接口,该计算机实现的方法包括:基于所述节点在一定时间内可处理的最大数据量,确定节点的带宽容量;监控包括输入数据和输出数据的数据,该数据从对等节点发出经过节点的接口,和经过节点的接口到达对等节点,并根据输入数据与输出数据之间的差值确定节点的配置文件因子;在多个时间段内监控所述数据;根据所述监控数据和可连接到节点的对等方的最大数量,设置可连接到节点的对等节点的最小数量和对等节点的最大数量。

该方法使节点能够根据性能限制因素例如带宽可用性和处理性能来调整连接的数量。

在至少一个时间段内,所监控的数据可用于确定比值。可以使用所述比值来确定设置可连接到该节点的对等节点的最大数量和对等节点的最小数量。该比值可以根据通过节点的数据和节点可处理的最大数据量来计算。该比值可以是非线性的。

可根据节点的功能为配置文件因子分配一个值,其中配置文件因子的值对于用于路由数据的节点的值为一(1),对于收集数据的节点的值大于一(1),对于生成或提供数据的节点的值小于一(1)。

该节点可具有连接到对等节点的多个接口,并且可以根据表示在所述节点的每个接口处处理的数据之间的相关性的相关系数来确定相关矩阵。该时间段可以根据相关矩阵的变更之间的时间长度来确定。变更可能与节点启动有关,也可能与节点加入或离开网络有关。

该节点可接收与区块链网络上节点活动相关的信息,并根据相关矩阵变更之间的时间长度来确定时间段。

平均数据,所述平均数据包括多个时间段上的数据平均值,可用于通过确定平均数据与最大数据的比值来确定可连接到该节点的对等节点的最小数量和对等节点的最大数量。

该方法还可包括:确定多个时间段上的数据的方差;将比例因子应用于方差;以及根据该比例方差,确定可连接至该节点的对等节点的最小数量和对等节点的最大数量。

对等节点连接(m)的最小和最大数量可以由以下公式确定:

Figure BDA0002344586560000051

Figure BDA0002344586560000052

其中d*是多个时间段(T)的数据的平均水平(d),D是节点在时间段(T)可处理的最大数据(D),

P是可连接到该节点的对等方的最大数量(P),σ2是所述数据(d)的方差,t是比例因子或方差参数,且mmax≤P。

比例因子或方差参数t可用以下公式定义:

当确定可连接到该节点的对等节点的最小和最大数量时,可以使用t的平均值。

该时间段可由节点临时地调整为预定值,以适应以下至少一项:对节点的本地参数进行更新,起始时间段(其中该节点累积数据)以及将数据临时中继到所有对等节点。

该时间段可以是流量控制参数。可以调整参数以修改通过节点的流量。

确定了对等节点连接的数量,则节点可以进一步确定接口与其所连接的对等节点之间的相关矩阵。可以用相关系数来编译矩阵,该相关系数表示在所述节点的每个接口处处理的数据之间的相关性。

当节点具有连接到对等节点的多个接口时,所述多个至少是连接到对等节点的接口的最小数量(mmin)并且小于或等于连接到对等节点的接口的最大数量(mmax),该方法可以进一步包括:确定具有相关系数的相关矩阵,所述相关系数表示在所述节点的每个接口处处理的数据之间的相关性;在所述节点的接收接口处接收数据;选择所述节点的多个其他接口中的至少一个,并从所述接口或每个其他接口中继所述接收到的数据,其中,根据所述接收接口的一组相关系数来选择其他接口。

可以从相关矩阵中推导出该指标。如果接收接口与所述接口或每个其他接口之间的相关性低于指标,则可以中继数据。

该数据可以对应于对象(例如交易或区块)。如果所述相关性高于指标,则中继可以选择地发生。该指标可以是阈值。该指标可以表示接收数据的接口和多个接口之间的相关程度,例如平均值。平均值可以是接收接口和其他接口之间的相关系数的平均值。该指标可以用于确定度量,所述度量设置标准用于确定选择哪个其他接口来中继数据。该度量可以视为用于选择从哪些接口中继数据的指令。可以根据阈值或指标来设置指令。

例如,指令要求接口在指标以下具有相关性指数。指令可以根据相关指数是高于还是低于指标来确定哪个接口中继数据。

当指数低于指标时的数据中继示例可以是正常的稳态网络条件。在“稳态”条件下,接口和已连接对等方的数量保持不变,因此相关矩阵不变。

当指数高于指标时数据中继的示例,其条件可以是多变的,例如向节点添加新的对等节点连接。不同的指令可以应用于不同的接口。

分发的数据可包括从区块链网络接收的数据,包括来自矿工、对等节点和完整节点的数据。在节点的每个接口处处理的数据之间的相关性可以说明在节点处接收到的重复数据包或对象。该指标可以是节点的每个接口的相关指数的平均值或中值。该指标可定义最低和最高相关接口之间的点。当相关指数低于指标时,可以从接口中继数据或对象。可以优先考虑低相关程度的接口,因为可以很安全地假设高相关程度的接口将获取数据。

节点通过接口处理数据,所述处理包括发送和接收数据或对象,例如交易或区块。

数据可以属于代表串行化交易的网络数据包和代表与相邻或对等节点的连接的标识。该接口可以是逻辑接口ID,该逻辑接口ID代表与发送/接收对等方的TCP/IP连接。

节点可以通过监控(i)通过每个接口处理的每个数据包的数据标识符和(ii)通过接口对处理的相同交易来建立相关矩阵,并从中确定任何两个接口之间的相关系数。相关矩阵可具有m(m-1)个元素,并且可用于确定接口a的相关指数,如下所示:

Figure BDA0002344586560000071

其中,m是与对等节点相连的接口的数量。

所述相关矩阵可具有m(m-1)个元素,可用于以如下方式确定接口a的一组相关系数:

{Ca}=[c0a,c1a,…cam-1].

所述指标可以以如下方式确定:为连接到对等节点的每个接口确定从所述相关矩阵导出的一组相关系数,所述组在每个接口之间具有所述连接系数;从所述组中导出平均值或中值。

该指标可由一组指令用来确定哪些接口中继数据。

用来确定用于中继数据的节点的数量的指标还可以至少基于以下之一:重置时间,即自节点启动以来的时间,和变更时间,即变更事件之间的时间,所述事件包括以下至少一项:连接到接口的新对等节点;与接口的终止连接;和连接到恶意节点的接口。所述重置时间可用于新节点。变更时间可用于现有节点。

在节点启动时,该节点可以与对等节点连接,例如与所述节点相邻或直接连接到所述节点的对等节点,并在重置时间段内经由所有接口中继数据,在重置时间段期间建立相关矩阵,并且在经过所述时间段之后,该节点通过接口中继来自该节点的所有对象,所述接口具有位于指标以下的相关指数。

一旦检测到变更事件,所述相关矩阵可以被重置并重新确定。当需要定期重置时,可能会发生这种情况。

本发明还涉及一种计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令在被执行时用于使处理器执行所要求保护的方法。

本发明还涉及一种电子设备,该电子设备包括:接口设备;连接到接口设备的一个或多个处理器;连接到所述一个或多个处理器的存储器,该存储器上存储有计算机可执行指令,该计算机可执行指令在被执行时用于使所述一个或多个处理器执行所要求保护的方法。

本发明还涉及一种区块链网络的节点,该节点用于执行所要求保护的方法。如所要求的,本发明还涉及一种具有节点的区块链网络。

附图说明

参考本文描述的实施例,本发明的这些和其他方面将变得显而易见。现在将仅通过举例的方式并参考附图来描述本发明的实施例。

图1示出了通过比特币网络上的节点在应用层上串行发送和接收的网络数据包;

图2表示节点之间以及整个比特币网络中的单个交易所采用的路由;

图3是相关矩阵的图示,该相关矩阵示出了连接到对等节点的接口的相关系数;以及

图4是表示区块链网络中具有不同功能的节点的示意图。

具体实施方式

在本说明书中,描述了处理和存储大的、千兆字节大小的区块问题的解决方案。通过确定节点之间的连接性并相应地中继数据,可以提高跨区块链网络的数据的高效交易。此外,节点的规格和可用带宽会影响跨网络的数据流量以及节点具有的连接数,并且可以调整确定连接性的时间以改善流量。

处理区块链网络节点和验证节点的类型

区块链网络可描述为点对点开放式成员网络,任何人都可以加入该网络,而无需邀请或无需经其他成员同意。运行区块链协议(区块链网络在区块链协议下运行)实例的分布式电子设备可以参与到区块链网络中。这种分布式电子设备可以称为节点。例如,区块链协议可以是例如比特币协议或其他加密货币协议。

一些区块链网络(例如比特币)使用TCP进行节点对节点的通信。使用TCP发送的数据包具有相关联的序列号,该序列号用于排序。

除此之外,TCP协议在建立连接和终止连接时都涉及三次握手过程。通过TCP发送的数据包有相关的开销,所述数据包具有相关联的序列号并且有一个三次握手协议。建立连接时,传输了128–136字节,而关闭连接花费160字节。因此,包传输中的握手成本高达296字节。

此外,当节点接收新交易时,该节点通过包含交易散列的清单(INV)消息通知其他节点。接收INV消息的节点检查该交易的散列是否已经被看到过;如果没有,则该节点将通过发送获取数据(GETDATA)消息来请求交易。交易从节点A传输到节点B所需的时间为T1=verification+TCP(inv+getdata+tx),其中,TCP()表示由TCP握手过程引入的时间开销。

TCP协议和三次握手

当前的点对点比特币协议定义了10条数据消息和13条控制消息。在本文中,与对象传输(Object Transfer)有关的数据或数据包的传输可以指单个交易或区块。

已知比特币点对点协议使用的消息的完整列表,有关完整列表,请参阅参考文献[4]。消息的子组与对象的请求或分发相关。这些消息是区块(BLOCK)、获取数据(GETDATA)、清单(INV)、交易(TX)、内存池(MEMPOOL)和未找到(NOTFOUND)。消息的子组与对象的可靠性和效率相关。这些消息是FEEFILTER,PING,PONG和REJECT。

例如,比特币网络上的节点“i”和“j”通过以下步骤进行通信:

1.节点i发送包含交易列表的INV消息。

2.节点j用GETDATA消息答复,要求提供先前通知的交易的子集。

3.节点i传输所请求的交易。

本文中的方法试图优化区块链网络的协议以至少改善数据的传播。

图1说明了实际场景,在该场景中,按照操作系统提供的原语在应用层串行发送和接收网络数据包形式的数据。假设交易x适合单个以太网/IP数据包,则它向m个对等方的传输需要缓冲m个不同的输出数据包。输入和输出网络数据包以及其他信息将包含:

-串行化交易。

-逻辑接口ID,代表与发送/接收对等方的TCP/IP连接。

即将处理的传入交易的预期时间取决于输入队列Li的平均长度(以数据包为单位),而正确传输已处理的交易的预期时间取决于输出队列Lo的平均长度。

因此,交易的有效中继依赖于Li和Lo值的降低。但是,用于选择性地将交易中继到对等方的概率模型直接影响Lo,并通过归纳法也影响Li

在当前的比特币实施方案中,INV和GETDATA消息包以与交易相同的方式在I/O缓冲区中排队,这严重影响了传输和接收延迟。

连接性——高效的交易传播——概率中继

如果允许节点i在不使用清单交换的情况下直接传输新交易,则交易将以更快的速度在网络中传播。但是,如果没有某种规定,网络将被淹没。

因此,本文的方法使用一种机制,用于将数据或对象从节点选择性地中继到对等节点,以避免传输大量不必要的交易。该机制可以是概率模型。

参照图2,用于交易中继的机制或概率模型基于假设,其中三个节点i,j和k是比特币网络的一部分,并且连接在一起。节点i直接连接到节点j和节点k。节点j和k通过节点i或通过比特币网络间接连接。

示出了节点i具有两个接口a和b,它们以交易r的形式处理数据,该交易在节点i处启动并经历在节点之间以及整个比特币网络中传播的各个阶段,所述阶段包括:

-第一阶段r1处理交易,以从接口a传输到对等节点,并在节点j处接收,

-第二阶段r2节点j处理交易,该交易通过比特币网络传输,在节点k处接收,和

-第三阶段r3节点k处理交易,以传输到对等节点I,对等节点I在接口b处接收该交易。

为避免疑问,r1,r2和r3是相同的交易,后缀表示中继。

进行以下假设:

-如果节点从接口(b)接收到与从另一接口(a)的传输处理的相同的交易,则这两个接口具有一定的相关度。

-如果在节点i处生成的交易通过给定j的输入接口到达节点j,则在节点i处生成的第二笔交易将很可能通过同一接口到达j。

再次参考图2,作为中继相关性的示例,节点j和k是节点i的对等方。如果i生成新交易并将其中继到节点j,然后节点i从节点k接收到相同的交易,则j和k通过网络共享逻辑路径。因此,始发节点不需要将相同的信息中继到其两个对等节点。需要明确的是,节点i不需要将交易r传输到节点k,因为节点k接收到该交易的可能性很高。类似地,相反,节点k不需要将交易r发送到节点i,因为接收到该交易的可能性很高。该逻辑在两个方向上均有效。

节点接口之间的关系

图3是可以为节点i确定的本地相关矩阵C的示例,该节点i具有五个连接到对等节点的接口a、b、c、d和e。该矩阵表示传入流量的相关程度。所述矩阵的形成和应用描述如下。图3中示出的值仅用于说明目的。

每个节点通过确定例如系数cab来建立相关矩阵C,该系数cab代表从接口a和b接收的交易之间的相关性。在所有接口对之间确定这样的系数。

使用从每个接口接收到的交易ID的列表,令ta和tb分别是从接口a和b接收到的交易数,而tab是从a和b接收到的重复交易数。接口a和b的相关系数通过公式1来定义:

Figure BDA0002344586560000131

按照惯例,对于系数cab,假设其指数的字典顺序为a<b,即在接口ID和数值之间,a被分配为‘0’(a=0),b被分配为‘1’(b=1),而c被分配为‘2’(c=2),等等。给定一组接口{a,b,d,e}的相关系数,如果cab>cde,则接口a和b比接口d和e更相关。

由于主对角线上的元素不重要,因此矩阵大小可以减小为m(m–1)个元素,如图3所示。

为节点接口分配值

接口a的整体相关指数在公式2中定义为如下所示:

Figure BDA0002344586560000132

以图3中的相关矩阵为例,接口a的相关指数ca可以表示为每个接口之间的相关系数之和。

ca=cab+cac+cad+cae=0.2+0.8+0.2+0.2=1.4

此度量可用于对各个接口的相关性进行排序,并理解节点对等方提供的中继质量。例如,如果a的相关指数明显高于平均值,则从a接收的交易是高度冗余的。

相反,如果a的相关指数大大低于平均值,则(i)从a接收的交易在某种程度上是唯一的,或者(ii)连接到a的对等节点的行为是恶意的。恶意行为将在下文更详细地讨论。

要注意的是,每个节点仅基于接收到的交易流来建立其自己的相关矩阵。节点或对等方之间不会交换任何关联信息,以避免传播恶意信息。

指标

给定来自接口a的传入交易,该节点将中继到[mmin,mmax]范围内的m*个对等方。

当前值m*取决于m–1个相关系数{ca}的当前分布,所述相关系数包含连接指数a:

{ca}=[c0a,c1a,…cam-1]

换句话说,{ca}是相关系数的列表或集合,该集合具有接口a的系数。连接指数是系数的总和,即ca=cab+cac+cad+cae,如图3和以上示例所示。

从接口a选择的用于中继的接口的数量m*(a)取决于对集合{ca}中每个元素的度量θi (a)的计算,其中:

Figure BDA0002344586560000141

度量θi (a)用作转换器或选择器,并表示接口是否中继数据。例如,如果接口的度量为“1”,则接口将中继数据;如果接口的度量为“0”,则不中继数据。

通过将

Figure BDA0002344586560000151

定义为集合{ca}中的系数的平均值,如果相应的相关系数cai小于

Figure BDA0002344586560000152

则度量θi (a)将有助于m*(a):

Figure BDA0002344586560000153

或者,θi (a)可以基于{ca}的中值而不是平均值。度量θi (a)也可以基于使用统计分析从集合{ca}推导出的替代值,也可以由使用统计分析从集合{ca}推导出的替代值确定,例如如果相应的相关系数cai为集合{ca}的平均值之下的至少一个标准偏差,则度量θi (a)有助于m*(a)。

例如,来自图3中的接口a的传入交易将根据{ca}中的相关系数被中继到m*(a)个最不相关的接口。选择用于中继的{ca}的子集将定义为{c*a}。

返回图3的示例,如果{ca}={0.2,0.8,0.2,0.2},则,

Figure BDA0002344586560000154

θb (a)=1

θc (a)=0

θd (a)=1

θe (a)=1

因此,从接口a选择的用于中继的接口的数量m*(a)为“3”。子集中的落在平均值或指标以下的系数为{0.2,0.2,0.2},所述系数用于确定度量θi (a),选择与{c*a}和接口b、d、e对应的所述系数进行中继。

上文示例中用于确定度量的“截止”点或系数标准为系数的平均值-“0.35”。此阈值或度量确定度量θi (a),从θi (a)中确定m*(a)。

因此,总的来说,可以说该方法根据指标从接口中继数据。所述指标可用于确定每个接口的度量,该度量确定其是否将中继数据。

尽管在上文示例中使用指标来确定度量,但其他因素也会影响每个接口的度量。可以根据相关矩阵的变更来计算每个接口的度量。

适应变更

如上所述,确定将使用哪些接口来中继信息,假定了矩阵未发生变更的稳态条件。

下文提供了该协议的更多详细信息,以解释该协议如何适应变更,例如,当对等节点加入网络并与该节点建立新连接时,或者当对等节点离开网络并且不再与网络连接时。

在适应变更时,可以基于度量来中继数据,该度量考虑了指标以及相关指数。

启动

当启动节点i时,它会初始化与区块链(例如比特币网络)中其他节点的m个对等连接。有关详细信息,参见例如比特币开发者参考文献[4]。在初始阶段,节点i没有有关通过其接口的数据之间的相关性的任何信息,并且具有表示通过或流经其的数据的有限数据集。因此,将在一段时间内执行完整的交易中继。

在Tbootup期间,度量θi (a)通过将每个接口设置为“1”并从所有接口中继数据从而有助于m*(a)。因此,该度量允许在一段时间内不考虑指标而中继数据。

周期Tbootup的长度是m的函数f(m),即,连接数越多,则需要的用于建立准确的相关矩阵的时间就越长。提出以下功能,仅作为示例:

f1(m):=m f2(m):=m2

在Tbootup之后,节点i作为下文所示的现有节点执行选择性中继。

现有节点

通用节点j的连接将随时间的变更而变更,这种变更是由于其他节点(i)加入,(ii)离开网络和/或(iii)表现出恶意而产生,所述恶意节点被选择性地列入黑名单,且相应的连接被关闭。

因此,整个网络图中的任何变更都可以通过数量Tchange来进行检测和参数化,数量Tchange表示两个(或多个)连续变更事件之间的平均时间。每Tchange一次,节点j的本地相关矩阵都需要更新。

节点的相关矩阵的更新可包括以下至少一项:

-定期重置,其中相关矩阵被重置。

作为新节点,将在一段时间Tbootup内执行完整的交易中继。然后,节点j对连接到对等节点的每个接口的新m*值执行选择性中继。

-更新,其中,相关矩阵被更新。

给定的来自所选集合{c*a}的接口a(即β个最相关接口,0<β<mmin)将与不在{c*a}中的β个最不相关接***换。

换句话说,通常,当将数据中继到子集{c*a}中的m*(a)个最不相关的接口时,当矩阵更新时,将不属于子集{c*a}且具有低相关指数的接口添加到所述子集中,以代替在所述子集中具有高相关指数的接口。

这样可以确保变更时跨网络的数据流的完整性。

再次回到图3的示例,通常,

cd=cda+cdb+cdc+cde=0.2+0.4+0.4+0.6=1.6

{cd}={0.2,0.4,0.4,0.6}

作为集合{cd}中的系数的平均值,如果相应的相关系数cdi小于则度量θi (d)有助于m*(d):

Figure BDA0002344586560000183

则:

Figure BDA0002344586560000184

θa (d)=1

θb (d)=1

θc (d)=1

θe (d)=0

通常,从接口d选择的用于中继的接口的数量m*(d)为“3”。子集中的落在平均值或指标以下的系数为{0.2,0.4,0.4},所述系数用于确定度量θi (d),选择与{c*d}和接口a、b、c对应的所述系数进行中继。

为了避免疑问,对应于接口e即{0.6}的系数不在所选择的子集{c*d}内。

当发生更新时,关于接口d,巧合的是在集合{c*d}中有两个接口属于β个最相关的接口,即接口b和c,两者的值均为0.4。

只有一个接口符合作为不属于{c*d}中的β个最不相关接口,所述接口为e。因此,只能进行一次“交换”,并且选择要交换的接口是b或c,因为两者的系数相同,均为0.4。例如,可以根据词典顺序优先级来做出选择哪个接口进行交换。然后将该接口与不在{c*a}中的β个最不相关接***换,这意味着将从集合{cd}={0.4,0.4,0.6}中的其余系数中选择最低的系数。最低系数对应于接口b和c,因此数据将中继到连接到这些接口的对等节点,而不是中继到接口a。

如果对等方断开连接,则其在相关矩阵中的系数将变为无效。在Tchange期结束时,需要进行上述定期重置。然后,节点j对每个连接接口的新m*值上执行选择性中继。

如果新的对等方b加入,则将选择与之连接的接口进行中继,而与每个其他具有节点a的对等接口的{c*a}的当前值无关。例如,可以在时间Tjoin内以每γ个输入交易的频率随机选择具有b的接口进行中继。

根据Tbootup和/或Tchange周期设置Tjoin。该中继将帮助节点b建立自己的相关矩阵。在Tjoin结束时,将仅根据节点a上每个其他对等接口的更新值{c*a}来选择b进行中继。

节点i可能需要检查其对等方j是否仍然存在,因为未从其接口接收到传入流量。可以用任意少量时间Ttemp将临时中继请求发送给j。

发布新交易的节点,即始发节点,需要选择选定对等方的集合以进行仔细中继,从而保证在网络中的传播。例如,可以将任意接口a的m**个节点选为第一中继,其中m*(a)<m**<m。

下表1中详细列出了参数的完整列表。

Figure BDA0002344586560000191

Figure BDA0002344586560000201

表1

恶意节点

恶意节点旨在降低用于交易传播的概率模型的效率。恶意节点可以以下列任何一种方式起作用。

-恶意节点不传播应传播的交易。连接到该恶意节点的诚实节点可能能够从其他诚实(或恶意)对等方找回这些交易。但是,假设一组矿工仍然可以将这些交易接收并包括在新的已挖矿区块中,则不需要在网络中完全传播交易。

-恶意节点多次传播同一合法交易。接收节点能够通过查找表来跟踪先前接收到的交易。因此,不当行为很容易被发现,恶意对等方将被移除。

-恶意节点传播无效交易。如果接收节点执行交易验证,则容易发现不当行为,并且将移除恶意对等方。

-恶意节点生成并传播大量虚拟交易。接收方节点可以对来自对等方的大量有效传入交易进行不同的响应。作为响应,(i)接收方将要求发送方降低交易中继率。如果问题仍然存在,则将移除发送方对等方;

(ii)接收方可以向中继交易要求(并检查)最低交易费。这使攻击对于恶意节点而言代价高昂。如果不遵守最低交易费用,将移除发送方对等方,和/或(iii)简单移除发送方对等方。

基于前文提到的攻击和概率模型,可以推断出以下属性。

-交易中继率取决于带宽可用性和单个节点的处理性能。因此,不执行默认的最大速率。

-恶意节点无法轻易做到保持沉默。恶意节点一定会转发有效交易,

以保持其连接的存在。

消息

本文的方法包括来自比特币网络上的节点接口的数据或对象的概率中继,为了支持本文方法的实现,可以引入新的消息类型。此外,不再使用上文关于当前点到点比特币协议详细描述的一些当前消息类型,而下文未提及的消息类型则相对于比特币点对点协议保持不变。

数据消息

从另一个节点请求一个或多个数据对象的消息GETDATA不再使用。类似地,用于传输对等方已知的对象的一个或多个清单的消息INV不再使用。不再使用NOTFOUND消息作为对GETDATA的答复。

上文已介绍的MEMPOOL消息请求接收节点已验证为有效但未在区块中公开的交易(即接收节点的内存池中的交易)的ID,此消息的响应是一个或多个包含交易ID的INV消息。节点发送所需数量的INV消息以引用其完整的内存池。节点可以禁用此功能,因此不需要传输其本地的MEMPOOL。

控制消息

移除了用于确认对等方仍处于连接状态的PING和PONG消息。对静默节点等恶意节点进行如上所述的管理。消息FEEFILTER保持不变。但是,不遵守收费阈值的对等方将被移除。

引入了新消息TEMP和FLOW。

-当因未从节点的接口接收到传入流量而需要节点检查对等节点是否仍然存在时,使用TEMP消息。将临时中继请求TEMP(用任意少量的时间Ttemp)发送到连接到所述接口的对等方。如果接收对等方开始中继,但不遵守给定的时间窗口Ttemp,则会将该对等方从矩阵中删除。

-当节点要求对等方根据本地流量控制来修改交易中继速率(例如,每秒交易数)时,则使用FLOW消息。该速率可能会上升、降低或暂时中止(中继速率=0)。如果接收方不遵守新的中继速率,则将该接收方移除。将需要一个新的FLOW请求来修改当前中继速率。如果接收方没有收到第二个FLOW请求以恢复中继,则将删除发送方。

-要求节点接收按最低交易费用过滤的交易时,使用MINFEE消息。

如果单个IP数据包中有多个交易,则可以为单个交易和/或费用总额设置最小值。如果接收对等方不遵守交易费用限额,则将其移除。

确定

图4示出了具有节点i,j,k和l的区块链网络的元素。节点可以具有不同的流量配置文件,并且可以例如分类和被称为

-“提供商”,是主要产生交易的节点,节点i可以代表一个或多个具有专门业务活动的商户节点

-“收集器”,是主要收集交易的节点,节点l可以表示一个或多个具有专门业务活动的商户节点

-“路由器”,是主要路由交易的节点,例如节点j和节点k。

每个节点都能够根据其连接的当前状态和本地可用的带宽资源来自动控制输入/输出流量。输入和输出资源或接口之间的带宽分配可以根据节点的类型或功能进行调整。节点i和j将不平衡,而节点j和k将是平衡的,因为流入路由器节点的相同数量的数据将从该节点流出。

一个节点,例如节点j,具有连接到对等节点的多个接口。节点可以基于节点在时间段(T)内可处理的最大数据量(D)来确定其带宽(B)容量。一些节点具有由其网络提供商施加的带宽上限。

Bj是节点j处可用的应用层带宽。带宽Bj是一个总体预算,取决于(i)互联网服务提供商(Internet Service Provider,简称ISP)提供的网络访问的质量和(ii)其他本地应用的网络使用情况。

Bj的值取决于输入流量Bj i和输出流量Bj o的不同带宽要求。因此:

Figure BDA0002344586560000241

对于路由器,假定:

对于收集器,假定:

Figure BDA0002344586560000243

kj是节点的配置文件因子,并且例如根据节点的类型(即,名义上设置的)或根据进出节点的实际数据之间的差值来确定。所述配置文件因子kj优选地由输入到节点的数据和从节点发送的数据的比值来确定,其可以包括中继数据和/或本地生成的数据。

数据(dj)可以从经过节点j的接口的、从对等节点发出的输入数据(dj i)和发送到对等节点的输出数据(dj o)来监控和建立,并且可以根据输入数据(dj i)和输出数据(dj o)之间的差值确定节点j的配置文件因子(kj)。

可以在多个时间段(T)上监控数据(dj)。当新的周期T开始时,可以将监控的数据值重置为零。节点j内生成的数据有助于输出数据(dj o)。

时间段(T)可用于确定节点j可处理的最大数据量(Dj),从而

Figure BDA0002344586560000244

其中,dj i和dj o是该时间段内支持的最大传入和传出数据量。

时间段T可以是流量控制时间窗口Tflow。考虑到节点j的变量,则:

Figure BDA0002344586560000251

Figure BDA0002344586560000252

因此,Dj i和Dj o是取决于kj,Tflow和Bj的系统参数。

Figure BDA0002344586560000253

Figure BDA0002344586560000254

当前因素

为了优化区块链网络的性能,以比特币为例。默认情况下,比特币核心的规范最多允许125个连接到不同的对等方的连接,其中8个是出站连接。因此,最多可能有117个入站连接。

可连接到节点的对等方P的数量m受限制,因此对于当前系统,mmin为1,mmax为125。在没有当前限制的情况下,可连接到节点的对等方P的数量m为mmin≥1且mmax≤P。

可根据所述监控数据(d)和可连接到节点j的对等方的最大数量(P)来设置可连接到节点j的对等方节点的最小数量(mmin)和对等方节点的最大数量(mmax)。

在两个或更多个时间段(T)内,所监控的数据(d)可用于确定比值,并使用所述比值来设置可连接到节点j的对等节点的最小数量(mmin)和对等节点的最大数量(mmax)。该比值可以在实际数据和数据限值之间。可以使用其他关系,例如数据(d)与最大数据(D)之间的非线性关系。

除了数据(d)和数据限值(D)之间的关系外,可以将节点j的类型或功能作为确定节点j可以连接的对等节点数量的因素。通过使用配置文件因子(k)来考虑该功能,根据节点的功能为该配置文件因子分配一个值。配置文件因子可以是可变的。

例如,对于用于路由数据的节点,配置文件因子值是一(1),对于收集数据的节点来说,配置文件因子值大于一(1),对于生成或提供数据的节点来说,配置文件因子值小于一(1)。

为了减少波动或流氓数据,可以使用平均数据(d*)通过确定平均数据(d*)与最大数据(D)之比,来确定可连接到节点j的对等节点的最大和最小数量,平均数据(d*)包括多个时间段(T)内数据(d)的平均值。

更进一步地,可以在确定可连接到该节点的对等节点的最小数量(mmin)和对等节点的最大数量(mmax)时将缓冲因素作为考虑因素。这样的缓冲因素可包括在多个时间段(T)上使用数据(d)的标准偏差(σ)或方差(σ2),对方差应用比例因子,以及根据比例方差确定可连接到节点的对等方的最小和最大数量。比例因子可以是方差参数t。

监控数据(dj)是经过节点j的接口、发送到对等节点的输出数据(dj o)和从对等节点发出的输入数据(dj i)的总和。这样,可通过以下方式设置可连接到节点j的对等节点m的最小和最大数量:

Figure BDA0002344586560000262

其中,

mmin和mmax是对等节点连接的整数数量

dj*是多个时间段(T)内数据(d)的平均水平,

Dj i和Dj o是在时间段(T)内支持的最大传入和传出数据量,

P是可连接到该节点的对等方的最大数量(P),

σ2是所述数据(d)在给定个时间段(T)内的方差,

t是比例因子或方差参数,并且

mmax≤P

线性范围[1,P]和[mmin,mmax]值之间可以有直接和成比例的关系。

用于平均dj和更新t的时间段(T)或Tflow时间窗口的数量可以是恒定的。方差参数t可以是一个乘数。

通过在前面的方程式中加上mmin≥1和mmax≤P,可以重新排列所述方程式,以确定方差参数t的值的范围,可以写成:

Figure BDA0002344586560000271

在节点自举或初始设置期间,mmin=1且mmax=P。

变量P、d*和Dj的操作范围是有限的,因此,依赖于σj 2的t的操作范围是有限的。例如,给定P=125且dj*/Dj=0.5,则

Figure BDA0002344586560000272

可以使用范围平均值的近似值来确定方差参数,可用以下公式表示:

Figure BDA0002344586560000273

一旦确定了mmin和mmax(对等节点连接的整数数量),该节点就可以进一步确定接口之间的相关矩阵和与它所连接的对等节点。用相关系数编译矩阵,该相关系数表示在所述节点的每个接口处处理的数据之间的相关性。

时间窗口(T)

时间段(T)由相关矩阵变更之间的时间长度确定。

节点可以额外或替代地接收与区块链网络上节点活动相关的信息,并根据相关矩阵的变更和/或网络上活动级别的变更之间的时长来设置时间段(T)。

两个连续的本地相关矩阵更新之间的时间窗口可用于确定T。

活动节点的平均数量为75611(2017年6月),平均每24小时增加0.85%,时间T可以由此确定或至少受此影响。在这种情况下,考虑到每小时平均有2.5个新节点加入网络,可以将T的初始值固定为60分钟。在节点的正常中继操作期间,可以将T当做与传入数据(dj i)的当前累积量成反比。

当连接了新的对等节点时,可以在专用时间段Tjoin内将数据中继到所述新的对等方。根据网络的状态,可以将其当做与传出数据dj o的当前累积量成反比。

Tbootup是新节点建立稳定的相关矩阵所需的时间,该值与函数f(m)成正比,即,连接数越多,建立准确的相关矩阵所需的时间就越长。

为了达到本发明的目的,时间段T与Tflow相同,Tflow是传入和传出数据的累积量的两个连续更新之间的时间窗口。该值可以与Tchange成正比,在最简单的情况下,Tflow=Tchange=T。

换句话说,时间段(T)可以是流量控制参数(Tflow),并且调整所述参数以修改通过节点的流量。节点可以将时间段(T)临时调整为预定值。这可以基于节点的本地变更,该本地变更影响带宽以及随后通过的数据流。在这些情况下,可以在有限的时间段内使用更长的时间段,例如前一个周期长度的两倍(即2T)。类似地,可以将时段T设置为启动时段,其中节点累积数据。本地变更或启动周期都可能导致一段时间内将数据临时中继到所有对等节点。

应当注意的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)和包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,包括(comprising)”意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。

小结

就计算工作而言,当今的比特币网络主要集中在挖矿方面。随着交易量的大大增加,这将不一定可行。本说明书中描述的解决方案使得根据待处理数据和带宽限制来调整或确定对等方连接的数量。尽管概率中继改善大量交易的处理和传播,但并没有考虑到每个节点上的性能容量或可用带宽。

本发明可提供一种确定连接的对等方的数量并调整节点采取动作的时机的方法,所述时机包括相关矩阵的重置或重新确定,启动时间等。

因此,除了根据性能调整连接性以通过避免瓶颈来优化跨网络的流之外,本发明还通过优化节点之间的通信来有利于数据包的传播。

通过控制连接性以及根据接口之间的相关性(可选)有选择地中继数据包,来抑制由节点瓶颈引起的长队。

对等方连接的总数可以以减少数据包传输同时保持安全级别的信息冗余来管理和完善。

参考资料

[1]Bitcoin transaction levels are made available via BlockchainLuxembourg S.A.R.L.and retrievable from http://blockchain.info.

[2]VISA transaction levels are summarised in a document published by VisaInc.Visa Inc at Glance.June 2015.It is retrievable from http://usa.visa.com/ dam/VCOM/download/corporate/media/visa-fact-sheet-Jun2015.pdf.

[3]Decker,Christian and Wattenhofer,Roger(2013).Information propagationin the bitcoin network.IEEE Thirteenth International Conference on Peer-to-Peer Computing(P2P),2013.

[4]A Bitcoin Developer Reference is retrievable from http://bitcoin.org/ en/developer-reference.

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:网络切片方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类