用于区块链网络中的高效传播的概率中继的制作方法

未命名 07-20 阅读:129 评论:0

用于区块链网络中的高效传播的概率中继
1.本技术为中国申请号为201880043972.5,申请日为2018年06月25日,名称为“用于区块链网络中的高效传播的概率中继的方法和系统”的专利申请的分案申请。
技术领域
2.本说明书主要涉及适用于在区块链网络的节点中实现的计算机实现的方法和系统,对用于处理大量事务和大事务区块的修改后的区块链节点结构、网络架构和协议进行了说明。本发明特别适用于,但不限于,用于比特币区块链。


背景技术:

3.在本文中,使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式账本。这些包括基于共识的区块链和事务链技术、许可及未许可的账本、共享账本及其变型。虽然已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币账本。虽然出于方便和说明的目的,本文中涉及的是比特币,但应当指出,本发明不限于用于比特币区块链,其他的区块链实施方案和协议也落入本发明的范围内。在本文中,术语“用户”可指人或基于处理器的资源。
4.区块链是点对点的电子账本,实现为由区块组成的基于计算机的去中心化的、分布式系统,而区块由事务组成。每个事务是对区块链系统中参与者之间的数字资产的控制的转移进行编码的数据结构,每个事务包括至少一个输入和至少一个输出。每个区块包含前一区块的散列,使得这些区块链接在一起,以创建所有事务的永久的、不可更改的记录,这些事务自区块链诞生之始写入区块链。事务包含小程序,这些小程序称为脚本,脚本嵌入至所述事务的输入和输出中,指定了如何以及由谁来访问事务的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
5.为了将事务写入区块链,必须对该事务进行“验证”。网络节点(矿工)执行该工作以确保每个事务有效,无效事务则被网络拒绝。安装在所述节点上的软件客户端通过在未花费的事务(unspent transaction,简称utxo)上执行其锁定和解锁脚本来执行此验证工作。如果锁定和解锁脚本的执行评估为真(true),则该事务有效,将该事务写入区块链。因此,为了将事务写入区块链,该事务必须:i)由接收事务的第一节点进行验证——如果事务得到验证,则该节点将该事务中继到网络中的其他节点;ii)添加到矿工建造的新区块中;iii)被挖矿,即添加到过去事务的公共账本中。
6.尽管区块链技术是因加密货币实施方案的使用而闻名,但数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据来实施新系统。如果可以将区块链用于不限于加密货币领域的自动化任务和流程,那将是非常有利的。这样的解决方案将能够利用区块链的长处(例如,事件,分布式处理等的永久性的、防篡改记录),同时在其应用中更具通用性。
7.根据参考文献[1],每个区块的平均比特币事务数量约为2000个单位。在不久的将来,对最大区块大小的限制可以放宽,并且每个区块的事务数量可能会大大增加。
[0008]
有竞争力的加密货币需要尽快传播大量未经确认的事务。相比之下,visa电子资金转账的峰值容量为每秒56k个事务[2]。
[0009]
当前用于通过清单在比特币网络中交换新事务的三步消息传递协议不足以应付快速传播比当前标准大几个数量级的事务量(每秒约5个事务[3])。
[0010]
就计算工作而言,当今的比特币网络主要集中在挖矿方面。随着事务量的大大增加,这不一定是可行的。本说明书中描述的解决方案使比特币网络能够处理大量事务的传播。
[0011]
已知的在比特币网络中发送数据包或事务的方法,例如通过三步消息传递来传播新事务,导致数据包在网络中的传播缓慢。先行步骤导致队列进出节点。


技术实现要素:

[0012]
总体而言,本发明涉及一种用于处理和传播增加的事务量的新方法,该事务量比当前区块链能力增大了若干个数量级。这可以通过在网络中支持数据包的更快传播来达到,而更快传播是通过减少节点间的通信来实现的。通过根据接口之间的相关性有选择地中继数据包,可以防止出现由于瓶颈而导致进出节点的长队列。
[0013]
该方法使节点能够以自适应方式工作,使得(i)连接到对等节点的接口的数量不可知,并且(ii)与节点的接口相关联的改变不可知,从而解决了新连接、断掉的连接和恶意节点问题,并维护了网络的完整性。
[0014]
该方法允许节点上可以管理的接口数量不受限制,这使网络的性能和规模不受限制,因为该方法可以适应网络和节点的情况。最小化了无效传输,并规避了恶意节点。
[0015]
该方法改进了区块链网络性能,并提供了改进的区块链网络或与区块链网络合作的覆盖网络。
[0016]
因此,根据本发明,提供了如所附权利要求书所限定的方法。
[0017]
因此,期望提供一种用于区块链网络的节点的计算机实现的方法,所述节点具有连接到对等节点的多个接口,该计算机实现的方法包括:
[0018]-确定具有相关系数的相关矩阵,所述相关系数表示在所述节点的每个接口处处理的数据之间的相关性;
[0019]-在所述节点的接收接口处接收数据;
[0020]-选择所述节点的多个其他接口中的至少一个,并从所述接口或每个其他接口中继所述接收到的数据,其中,根据所述接收接口的一组相关系数来选择其他接口。
[0021]
该数据可对应于对象,例如事务或块。
[0022]
如果接收接口与另一个接口或每个其他接口之间的相关性低于指标,则可以从相关矩阵中推导出该指标,并中继数据。如果相关性高于指标,则中继可以选择地发生。
[0023]
该指标可以是阈值。该指标可以表示接收数据的接口和多个接口之间的相关程度,例如平均值。平均值可以是接收接口和其他接口之间的相关系数的平均值。
[0024]
该指标可以用于确定度量,所述度量设置标准用于确定选择哪个其他接口来中继数据。
[0025]
该度量可以视为用于选择从哪些接口中继数据的指令。可以根据阈值或指标来设置指令。
[0026]
该度量可用于对节点与一个或多个其他节点之间的(单个)接口之间的相关性进行排名。其优点可以是能够更好地理解和响应网络中节点对等方提供的中继的质量。这将在下文更详细地描述。这样不仅可以更细致地了解网络行为,并可以对网络行为做出适当的响应,还可以具有与恶意行为的检测和响应有关的优势。因此,本发明可提供更高效和更安全的网络。
[0027]
网络中的每个节点可以仅基于接收到的事务流与相关矩阵相关联。在网络中的节点或对等方之间不可交换任何关联信息,以免传播恶意信息。
[0028]
举例来说,指令可以要求接口在指标以下具有相关性指数。指令可以根据相关指数是高于还是低于指标来确定哪个接口中继数据。
[0029]
当指数低于指标时的数据中继示例可以是正常的稳态网络条件。在“稳态”条件下,接口和已连接对等方的数量保持不变,因此相关矩阵不变。
[0030]
当指数高于指标时数据中继的示例,其条件可以是多变的,例如向节点添加新的对等节点连接。不同的指令可以应用于不同的接口。
[0031]
分发的数据可包括从区块链网络接收的数据,包括来自矿工、对等节点和完整节点的数据。在节点的每个接口处处理的数据之间的相关性可以说明在节点处接收到的重复数据包或对象。该指标可以是节点的每个接口的相关指数的平均值或中值。该指标可定义最低和最高相关接口之间的点。当相关指数低于指标时,可以从接口中继数据或对象。可以优先考虑低相关程度的接口,因为可以很安全地假设高相关程度的接口将获取数据。
[0032]
节点通过接口处理数据,所述处理包括发送和接收数据或对象,例如事务或区块。
[0033]
数据可以属于代表串行化事务的网络数据包和代表与相邻或对等节点的连接的标识。该接口可以是逻辑接口id,该逻辑接口id代表与发送/接收对等方的tcp/ip连接。
[0034]
节点可以通过监控(i)通过每个接口处理的每个数据包的数据标识符和(ii)通过接口对处理的相同事务来建立相关矩阵,并从中确定任何两个接口之间的相关系数。
[0035]
相关矩阵可具有m(m-1)个元素,并且可用于确定接口a的相关指数,如下所示:
[0036][0037]
其中,m是与对等节点相连的接口的数量。
[0038]
所述相关矩阵可具有m(m-1)个元素,可用于以如下方式确定接口a的一组相关系数:
[0039]
{ca}=[c
0a
,c
1a
,
…cam-1
].
[0040]
所述指标可以以如下方式确定:为连接到对等节点的每个接口确定从所述相关矩阵导出的相关系数的集合,所述集合在每个接口之间具有所述连接系数;从所述集合中导出平均值或中值。
[0041]
该指标可由一组指令用来确定哪些接口中继数据。
[0042]
用来确定用于中继数据的节点的数量的指标还可以至少基于以下之一:重置时间,即自节点启动以来的时间,和变更时间,即变更事件之间的时间,所述事件包括以下至少一项:连接到接口的新对等节点;与接口的终止连接;和连接到恶意节点的接口。所述重置时间可用于新节点。变更时间可用于现有节点。
[0043]
在在节点启动时,该节点可以与对等节点连接,例如与所述节点相邻或直接连接
到所述节点的对等节点,并在重置时间段内经由所有接口中继数据,在重置时间段期间建立相关矩阵,并且在经过所述时间段之后,该节点通过接口中继来自该节点的所有对象,所述接口具有位于指标以下的相关指数。
[0044]
一旦检测到变更事件,所述相关矩阵可以被重置并重新确定。当需要定期重置时,可能会发生这种情况。
[0045]
在检测到变更事件时,节点可经由具有高于指标的相关指数的接口来中继来自节点的所有对象。当需要“软”更新时,可能会发生这种情况。
[0046]
在检测到对等节点从接口的断开连接时,可以重置并重新确定所述相关矩阵。当需要定期重置时,可能会发生这种情况。
[0047]
在检测到与新的对等节点的连接时,所述对等节点连接到接口,所述接口可经由所有其他接口,在所述重置时间期间,和/或在所述变更时间期间中继数据。
[0048]
该节点可生成原始数据以及选择用于处理和传输所述原始数据的接口的数量。可以通过将指标提高到为中继而选择的当前或名义上的接口数量与接口总数之间的数量来增加此数量。
[0049]
还期望提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令在被执行时用于使处理器执行所要求保护的任何方法。
[0050]
还期望提供一种电子设备,该电子设备包括:接口设备;连接到接口设备的一个或多个处理器;连接到所述一个或多个处理器的存储器,该存储器上存储有计算机可执行指令,该计算机可执行指令在被执行时用于使所述一个或多个处理器执行所要求保护的任何方法。
[0051]
还期望提供一种区块链网络的节点,该节点用于执行所要求保护的任何方法。
[0052]
如所要求的,还期望提供一种具有节点的区块链网络。
[0053]
所要求保护的发明特别适用于,但不限于,用于比特币(btc)区块链。
[0054]
还期望提供一种区块链网络的超级节点,该超级节点包括:多个所要求保护的节点;以及用于存储区块链的共享存储实体,其中该共享存储实体是公共存储节点,或分布式存储,或两者的组合,并且其中由多个节点组配的区块被发送到并存储在共享存储实体,通过此共享存储实体维护区块链。所述共享存储实体包括至少100gb的存储容量。
[0055]
还期望提供一种包括多个如所要求保护的超级节点的区块链网络,其中,所述超级节点连接在区块链网络上,其中,每个超级节点的共享存储实体用于存储区块链的副本。其中,区块链网络包括至少10个超级节点。
[0056]
现已设计出这种改进的解决方案。
附图说明
[0057]
参考本文描述的实施例,本发明的这些和其他方面将变得显而易见。现在将仅通过举例的方式并参考附图来描述本发明的实施例。
[0058]
图1示出了区块的整体结构;
[0059]
图2以操作图的形式示出了比特币网络的一种经过修改的架构,该操作图示出了从用户提交事务到事务最终在区块链上的步骤;
[0060]
图3示出了表示在内存池(mempool)中等待确认的事务的合计大小的示例的曲线
图;
[0061]
图4示出了链接到内部去中心化存储设施的多个节点;
[0062]
图5示出了一种配置,其中每个节点都是分布式内存池和分布式存储设施的一部分;
[0063]
图6示出了通过比特币网络上的节点在应用层上串行发送和接收的网络数据包;
[0064]
图7表示节点之间以及整个比特币网络中的单个事务所采用的路由;
[0065]
图8是相关矩阵的图示,该相关矩阵示出了连接到对等节点的接口的相关系数。
具体实施方式
[0066]
在本说明书中,描述了处理和存储大的、千兆字节大小的区块问题的解决方案。
[0067]
区块链网络节点和验证节点的类型
[0068]
区块链网络可描述为点对点开放式成员网络,任何人都可以加入该网络,而无需邀请或无需经其他成员同意。运行区块链协议(区块链网络在区块链协议下运行)实例的分布式电子设备可以参与到区块链网络中。这种分布式电子设备可以称为节点。例如,区块链协议可以是例如比特币协议或其他加密货币协议。
[0069]
运行区块链协议并形成区块链网络的节点的电子设备可以是各种类型的,包括例如计算机(如台式计算机、笔记本电脑、平板电脑、服务器、计算机群组)、移动设备(如智能手机)、可穿戴计算机(如智能手表)、或其他电子设备。
[0070]
区块链网络的节点使用合适的通信技术彼此连接,该通信技术可以包括有线和无线通信技术。在许多情况下,区块链网络至少部分地在互联网上实现,并且一些节点可以位于地理上分散的位置。
[0071]
当前,节点维护区块链上所有事务的全局账本,所有事务分组到多个区块中,其中每个区块包含区块链上前一个区块的散列。全局账本是分布式账本,每个节点可以存储全局账本的完整副本或部分副本。影响全局账本的节点的事务由其他节点验证,从而保持全局账本的有效性。本领域的普通技术人员将会理解实现和操作区块链网络(例如使用比特币协议的区块链网络)的细节。
[0072]
每个事务通常具有一个或多个输入和一个或多个输出。嵌入到输入和输出中的脚本指定了如何以及谁可以访问所述事务的输出。事务的输出可以是作为事务结果的值被转移到的地址。然后,该值与该输出的地址相关联,作为未花费的事务输出(unspent transaction output,简称utxo)。随后的事务可以参考作为输入的该地址以便花费或分散该值。
[0073]
节点可以根据其功能而具有不同的类型或类别。已经提出了与节点相关联的四个基本功能:钱包、挖矿、全区块链维护和网络路由。这些功能可能有所不同。节点可具有多个功能。例如,“全节点”(“full node”)提供了所有四种功能。轻量级节点例如可以在数字钱包中实现,并且可以仅具有钱包和网络路由功能。数字钱包可保持对区块头的跟踪(区块头在查询区块时用作指数),而不是存储全区块链。节点使用面向连接的协议(例如tcp/ip(传输控制协议))相互通信。
[0074]
可提供节点的附加类型或类别:商户节点(merchant node)(本文有时称为“m节点”)。m节点旨在专注于事务的快速传播。m节点可存储也可不存储全区块链,并且不执行挖
矿功能。从这个意义上讲,m节点与轻量级节点或钱包类似。但是,m节点包括附加功能以实现事务的快速传播。m节点的操作重点是未确认事务的快速验证和传播,特别是传播到其他m节点,未确认事务被从这些m节点快速推动到区块链网络中的其他节点。为了便于实现此功能,允许m节点进行更多数量的传入连接以及特别是传出连接,否则,这些连接可能会被允许用于管理协议下的节点。
[0075]
m节点可统称为商户网络(merchant network)(或“m网络”)。术语“商户”可解释为“专用的”。m节点可集成到区块链网络中。每个m节点都是区块链网络上的满足特定的硬件和性能能力、确保其能够执行m节点的功能的专用节点。也就是说,m网络可视为区块链网络内的一个子网,并通过区块链网络分布。m节点可设置用于执行一个或多个专用功能或服务。
[0076]
为了使m网络可靠地运行,能够在一定的安全级别上提供服务,m节点需要保持对整个m网络的良好概览,因此需要建立有效的路由协议。每当m节点接收到启动事务时,其需要将事务广播给其他几个m节点以及其他节点。在m网络环境下,这相当于寻找多旅行商问题(multiple traveling salesman problem,mtsp)的解决方案。有许多解决方案可以解决这个问题,其中任何一个方案都可运用于m网络。每个m节点都以某种最新的形式运行路由优化。
[0077]
在一些实施方式中,m网络实现为去中心化的ip多播类型的网络。也就是说,为了使传入事务能够快速扩散到区块链网络,可以使用多播来确保事务在整个m网络中快速广播,从而使得所有m节点专注于将事务转发到区块链网络中的其他节点。
[0078]
多播网络架构允许向一组目的节点同时分发数据的可能性,无需为每个对接收信息感兴趣的节点复制数据。如果节点想要接收多播传输,那么节点加入多播组(注册阶段),此后该节点将能够接收通过多播组发送的所有数据。ip多播不需要具备有多少个接收器的先验知识就能扩展到更大的接收器群,且通过仅要求源发送一次数据包,就可以有效地利用网络架构。对于多播网络的性质,由于与大量其他节点同时通信,因此使用面向连接的协议(如tcp)是不切实际的。据此,使用无连接协议。
[0079]
一些区块链网络(例如比特币)使用tcp进行节点对节点的通信。使用tcp发送的数据包具有相关联的序列号,该序列号用于排序。
[0080]
除此之外,tcp协议在建立连接和终止连接时都涉及三次握手过程。通过tcp发送的数据包有相关的开销,所述数据包具有相关联的序列号并且有一个三次握手协议。建立连接时,传输了128

136字节,而关闭连接花费160字节。因此,包传输中的握手成本高达296字节。
[0081]
此外,当节点接收新事务时,该节点通过包含事务散列的清单(inv)消息通知其他节点。接收inv消息的节点检查该事务的散列是否已经被看到过;如果没有,则该节点将通过发送获取数据(getdata)消息来请求事务。事务从节点a传输到节点b所需的时间为t1=verification+tcp(inv+getdata+tx),其中,tcp()表示由tcp握手过程引入的时间开销。
[0082]
tcp协议和三次握手
[0083]
当前的点对点比特币协议定义了10条数据消息和13条控制消息。在本文中,与对象传输(object transfer)有关的数据或数据包的传输可以指单个事务或区块。
[0084]
已知比特币点对点协议使用的消息的完整列表,有关完整列表,请参阅参考文献
[4]。
[0085]
消息的子组与对象的请求或分发相关。这些消息是区块(block)、获取数据(getdata)、清单(inv)、事务(tx)、内存池(mempool)和未找到(notfound)。
[0086]
block消息发送单个串行化的区块,并且可以出于两个不同的原因发送该消息。任一节点将始终响应getdata消息而发送该消息,该getdata消息请求清单类型为msg_block的区块(前提是该节点具有可用于中继的区块)。或者,替代地,节点或矿工可以向其对等方发送未经请求的、广播其新挖掘的区块的区块消息。
[0087]
getdata消息从另一个节点请求一个或多个数据对象。通常,对象是通过清单来请求,该清单通过inv消息先前就被接收。对getdata消息的响应可以是tx消息,block消息或notfound消息。
[0088]
getdata消息不能用于请求任意数据,例如内存池或中继集合中不再存在的历史事务。getdata消息应用于从先前已发布对象的节点请求对象。
[0089]
inv消息(清单消息)传输一个或多个对传输对等方已知的对象的清单。可以发送:未经请求而发布新的事务或区块;或回复getblocks消息或mempool消息。接收对等方可以将inv消息中的清单与先前存储的清单进行比较,以请求未见对象。
[0090]
tx消息传输单个事务,事务响应于getdata消息而发送,getdata消息使用具有请求的事务标识(id)的清单来请求事务。
[0091]
mempool消息请求事务的id,该事务为接收节点已验证为有效但未在区块中发布,即接收节点的内存池中的事务。
[0092]
此消息的响应是一个或多个包含事务id的inv消息。节点发送所需数量的inv消息以引用其完整的内存池。完整的节点可以使用mempool消息来快速收集网络上可用的大多数或所有未确认的事务。节点可以在发送mempool之前设置过滤器,以仅接收与该过滤器匹配的事务。
[0093]
notfound消息是对getdata消息的答复,getdata消息请求对象,该对象不可用于接收节点处的中继。例如,节点可能已经从较旧的区块中修剪了已花费的事务,因此这些区块的传输是不可能的。
[0094]
消息的子组与对象的可靠性和效率相关。这些消息是feefilter,ping,pong和reject。
[0095]
feefilter消息是对接收对等方的请求,从而如果事务的费用费率低于指定值,则不中继inv消息中的事务。mempool限制提供保护,防止费率较低且不太可能包含在已挖矿区块中的攻击和垃圾事务。接收方可以选择忽略该消息,且选择不过滤inv消息中的事务。
[0096]
ping消息有助于确认接收对等方仍处于连接状态。如果在发送ping消息时遇到tcp/ip错误,例如如果连接超时,则发送节点可以假定接收节点已断开连接。对ping消息的响应是pong消息。该消息包含随机数。
[0097]
pong消息响应ping消息,向正在发出ping消息的节点证明该正在发出pong消息的节点仍处于活动状态。默认情况下,比特币核心钱包(bitcoin core)会在20分钟内与所有未响应ping消息的客户端断开连接。为了允许节点跟踪延迟时间,pong消息会发回在相应ping消息中接收到的相同随机数。
[0098]
拒绝消息通知接收节点其先前的消息之一已被拒绝。拒绝消息的原因例如包括:
[0099]-无法解码消息。
[0100]-区块无效,即提供了无效的工作量证明或无效的签名。
[0101]-事务无效,即提供了无效的签名或大于输入值的输出值。
[0102]-区块使用了不再受支持的版本。
[0103]-连接节点使用拒绝节点不支持的协议版本。
[0104]-事务花费的输入与先前接收到的事务相同(双重花费(double spend))。
[0105]-事务没有足够多的费用或优先级来被中继或被挖矿。
[0106]
例如,比特币网络上的节点“i”和“j”通过以下步骤进行通信:
[0107]
1.节点i发送包含事务列表的inv消息。
[0108]
2.节点j用getdata消息答复,要求提供先前通知的事务的子集。
[0109]
3.节点i传输所请求的事务。
[0110]
本文中的方法试图优化区块链网络的协议以至少改善数据的传播。
[0111]
图6说明了实际场景,在该场景中,按照操作系统提供的原语在应用层串行发送和接收网络数据包形式的数据。
[0112]
假设事务x适合单个以太网/ip数据包,则它向m个对等方的传输需要缓冲m个不同的输出数据包。输入和输出网络数据包以及其他信息将包含:
[0113]-串行化事务。
[0114]-逻辑接口id,代表与发送/接收对等方的tcp/ip连接。
[0115]
即将处理的传入事务的预期时间取决于输入队列li的平均长度(以数据包为单位),而正确传输已处理的事务的预期时间取决于输出队列lo的平均长度。
[0116]
因此,事务的有效中继依赖于li和lo值的降低。但是,用于选择性地将事务中继到对等方的概率模型直接影响lo,并通过归纳法也影响li。
[0117]
在当前的比特币实施方案中,inv和getdata消息包以与事务相同的方式在i/o缓冲区中排队,这严重影响了传输和接收延迟。
[0118]
高效的事务传播——概率中继
[0119]
如果允许节点i在不使用清单交换的情况下直接传输新事务,则事务将以更快的速度在网络中传播。但是,如果没有某种规定,网络将被淹没。
[0120]
因此,本文的方法使用一种机制,用于将数据或对象从节点选择性地中继到对等节点,以避免传输大量不必要的事务。因此,本发明提供了改进的网络效率并减少了网络所需的资源量。该机制可以是概率模型。
[0121]
参照图7,用于事务中继的机制或概率模型基于假设,其中三个节点i,j和k是比特币网络的一部分,并且连接在一起。节点i直接连接到节点j和节点k。节点j和k通过节点i或通过比特币网络间接连接。
[0122]
示出了节点i具有两个接口a和b,它们以事务r的形式处理数据,该事务在节点i处启动并经历在节点之间以及整个比特币网络中传播的各个阶段,所述阶段包括:
[0123]-第一阶段r1处理事务,以从接口a传输到对等节点,并在节点j处接收,
[0124]-第二阶段r2节点j处理事务,该事务通过比特币网络传输,在节点k处接收,和
[0125]-第三阶段r3节点k处理事务,以传输到对等节点i,对等节点i在接口b处接收该事务。
[0126]
为避免疑问,r1,r2和r3是相同的事务,后缀表示中继。
[0127]
进行以下假设:
[0128]-如果节点从接口(b)接收到与从另一接口(a)的传输处理的相同的事务,则这两个接口具有一定的相关度。
[0129]-如果在节点i处生成的事务通过给定j的输入接口到达节点j,则在节点i处生成的第二个事务将很可能通过同一接口到达j。
[0130]
再次参考图7,作为中继相关性的示例,节点j和k是节点i的对等方。如果i生成新事务并将其中继到节点j,然后节点i从节点k接收到相同的事务,则j和k通过网络共享逻辑路径。因此,始发节点不需要将相同的信息中继到其两个对等节点。需要明确的是,节点i不需要将事务r传输到节点k,因为节点k接收到该事务的可能性很高。类似地,相反,节点k不需要将事务r发送到节点i,因为接收到该事务的可能性很高。该逻辑在两个方向上均有效。
[0131]
节点接口之间的关系
[0132]
图8是可以为节点i确定的本地相关矩阵c的示例,该节点i具有五个连接到对等节点的接口a、b、c、d和e。该矩阵表示传入流量的相关程度。所述矩阵的形成和应用描述如下。图8中示出的值仅用于说明目的。
[0133]
每个节点通过确定例如系数c
ab
来建立相关矩阵c,该系数c
ab
代表从接口a和b接收的事务之间的相关性。在所有接口对之间确定这样的系数。
[0134]
使用从每个接口接收到的事务id的列表,令ta和tb分别是从接口a和b接收到的事务数,而t
ab
是从a和b接收到的重复事务数。接口a和b的相关系数通过公式1来定义:
[0135][0136]
按照惯例,对于系数c
ab
,假设其指数的字典顺序为a《b,即在接口id和数值之间,a被分配为
‘0’
(a=0),b被分配为
‘1’
(b=1),而c被分配为
‘2’
(c=2),等等。给定一组接口{a,b,d,e}的相关系数,如果c
ab
》c
de
,则接口a和b比接口d和e更相关。
[0137]
由于主对角线上的元素不重要,因此矩阵大小可以减小为m(m

1)个元素,如图8所示。
[0138]
为节点接口分配值
[0139]
接口a的整体相关指数在公式2中定义为如下所示:
[0140][0141]
以图8中的相关矩阵为例,接口a的相关指数ca可以表示为每个接口之间的相关系数之和。
[0142]
ca=c
ab
+c
ac
+c
ad
+c
ae
=0.2+0.8+0.2+0.2=1.4
[0143]
此度量可用于对各个接口的相关性进行排序,并理解节点对等方提供的中继质量。例如,如果a的相关指数明显高于平均值,则从a接收的事务是高度冗余的。
[0144]
相反,如果a的相关指数大大低于平均值,则(i)从a接收的事务在某种程度上是唯一的,或者(ii)连接到a的对等节点的行为是恶意的。恶意行为将在下文更详细地讨论。
[0145]
要注意的是,每个节点仅基于接收到的事务流来建立其自己的相关矩阵。节点或对等方之间不会交换任何关联信息,以避免传播恶意信息。
[0146]
指标
[0147]
给定来自接口a的传入事务,该节点将中继到[m
min
,m
max
]范围内的m*个对等方。
[0148]
当前值m*取决于m

1个相关系数{ca}的当前分布,所述相关系数包含连接指数a:
[0149]
{ca}=[c
0a
,c
1a
,
…cam-1
]
[0150]
换句话说,{ca}是相关系数的列表或集合,该集合具有接口a的系数。连接指数是系数的总和,即ca=c
ab
+c
ac
+c
ad
+c
ae
,如图8和以上示例所示。
[0151]
从接口a选择的用于中继的接口的数量m*(a)取决于对集合{ca}中每个元素的度量θ
i(a)
的计算,其中:
[0152][0153]
度量θ
i(a)
用作转换器或选择器,并表示接口是否中继数据。例如,如果接口的度量为“1”,则接口将中继数据;如果接口的度量为“0”,则不中继数据。
[0154]
通过将定义为集合{ca}中的系数的平均值,如果相应的相关系数c
ai
小于则度量θ
i(a)
将有助于m*(a):
[0155][0156]
或者,θ
i(a)
可以基于{ca}的中值而不是平均值。度量θ
i(a)
也可以基于使用统计分析从集合{ca}推导出的替代值,也可以由使用统计分析从集合{ca}推导出的替代值确定,例如如果相应的相关系数c
ai
为集合{ca}的平均值之下的至少一个标准偏差,则度量θ
i(a)
有助于m*(a)。
[0157]
例如,来自图8中的接口a的传入事务将根据{ca}中的相关系数被中继到m*(a)个最不相关的接口。选择用于中继的{ca}的子集将定义为{c*a}。
[0158]
返回图8的示例,如果{ca}={0.2,0.8,0.2,0.2},则,
[0159][0160]
θ
b(a)
=1
[0161]
θ
c(a)
=0
[0162]
θ
d(a)
=1
[0163]
θ
e(a)
=1
[0164]
因此,从接口a选择的用于中继的接口的数量m*(a)为“3”。子集中的落在平均值或指标以下的系数为{0.2,0.2,0.2},所述系数用于确定度量θ
i(a)
,选择与{c*a}和接口b、d、e对应的所述系数进行中继。
[0165]
上文示例中用于确定度量的“截止”点或系数标准为系数的平均值
‑“
0.35”。此阈值或度量确定度量θ
i(a)
,从θ
i(a)
中确定m*(a)。
[0166]
因此,总的来说,可以说该方法根据指标从接口中继数据。所述指标可用于确定每个接口的度量,该度量确定其是否将中继数据。
[0167]
尽管在上文示例中使用指标来确定度量,但其他因素也会影响每个接口的度量。可以根据相关矩阵的变更来计算每个接口的度量。
[0168]
适应变更
[0169]
如上所述,确定将使用哪些接口来中继信息,假定了矩阵未发生变更的稳态条件。
[0170]
下文提供了该协议的更多详细信息,以解释该协议如何适应变更,例如,当对等节点加入网络并与该节点建立新连接时,或者当对等节点离开网络并且不再与网络连接时。
[0171]
在适应变化时,可以基于度量来中继数据,该度量考虑了指标以及相关指数。
[0172]
启动
[0173]
当启动节点i时,它会初始化与区块链(例如比特币网络)中其他节点的m个对等连接。有关详细信息,参见例如比特币开发者参考文献[4]。在初始阶段,节点i没有有关通过其接口的数据之间的相关性的任何信息,并且具有表示通过或流经其的数据的有限数据集。因此,将在一段时间内执行完整的事务中继。
[0174]
在t
bootup
期间,度量θ
i(a)
通过将每个接口设置为“1”并从所有接口中继数据从而有助于m*(a)。因此,该度量允许在一段时间内不考虑指标而中继数据。
[0175]
周期t
bootup
的长度是m的函数f(m),即,连接数越多,则需要的用于建立准确的相关矩阵的时间就越长。提出以下功能,仅作为示例:
[0176]
f1(m):=m f2(m):=m2[0177]
在t
bootup
之后,节点i按照下文所示的现有节点执行选择性中继。
[0178]
现有节点
[0179]
通用节点j的连接将随时间的变更而变更,这种变更是由于其他节点(i)加入,(ii)离开网络和/或(iii)表现出恶意而产生,所述恶意节点被选择性地列入黑名单,且相应的连接被关闭。
[0180]
因此,整个网络图中的任何变更都可以通过数量t
change
来进行检测和参数化,数量t
change
表示两个(或多个)连续变更事件之间的平均时间。每t
change
一次,节点j的本地相关矩阵都需要更新。
[0181]
节点的相关矩阵的更新可包括以下至少一项:
[0182]-定期重置,其中相关矩阵被重置。
[0183]
对于新节点,将在一段时间t
bootup
内执行完整的事务中继。然后,
[0184]
节点j对连接到对等节点的每个接口的新m*值执行选择性中继。
[0185]-更新,其中,相关矩阵被更新。
[0186]
给定的来自所选集合{c*a}的接口a(即β个最相关接口,0《β《m
min
)
[0187]
将与不在{c*a}中的β最不相关接口交换。
[0188]
换句话说,通常,当将数据中继到子集{c*a}中的m*(a)个最不相关的接口时,当矩阵更新时,将不属于子集{c*a}且具有低相关指数的接口添加到所述子集中,以代替在所述子集中具有高相关指数的接口。这样可以确保变更时跨网络的数据流的完整性。
[0189]
再次回到图8的示例,通常,
[0190]cd
=c
da
+c
db
+c
dc
+c
de
=0.2+0.4+0.4+0.6=1.6
[0191]
{cd}={0.2,0.4,0.4,0.6}
[0192]
将作为集合{cd}中的系数的平均值,如果相应的相关系数c
di
小于则度量
θ
i(d)
有助于m*(d):
[0193][0194]
则:
[0195][0196]
θ
a(d)
=1
[0197]
θ
b(d)
=1
[0198]
θ
c(d)
=1
[0199]
θ
e(d)
=0
[0200]
通常,从接口d选择的用于中继的接口m*(d)的数量为“3”。子集中的落在平均值或指标以下的系数为{0.2,0.4,0.4},所述系数用于确定度量θ
i(d)
,选择与{c*d}和接口a、b、c对应的所述系数进行中继。
[0201]
为了避免疑问,对应于接口e即{0.6}的系数不在所选择的子集{c*d}内。
[0202][0203]
当发生更新时,关于接口d,巧合的是在集合{c*d}中有两个接口属于β个最相关的接口,即接口b和c,两者的值均为0.4。
[0204]
只有一个接口符合作为不属于{c*d}中的β个最不相关接口,所述接口为e。因此,只能进行一次“交换”,并且选择要交换的接口是b或c,因为两者的系数相同,均为0.4。举例来说,可以根据词典顺序优先级来做出选择哪个接口进行交换的选择。
[0205]
然后将该接口与不在{c*a}中的β个最不相关接口交换,这意味着将从集合{cd}={0.4,0.4,0.6}中的其余系数中选择最低的系数。最低系数对应于接口b和c,因此数据将中继到连接到这些接口的对等节点,而不是中继到接口a。
[0206]
如果对等方断开连接,则其在相关矩阵中的系数将变为无效。在t
change
期结束时,需要进行上述定期重置。然后,节点j在每个连接接口的新m*值上执行选择性中继。
[0207]
如果新的对等方b加入,则将选择与之连接的接口进行中继,而与每个其他具有节点a的对等接口的{c*a}的当前值无关。举例来说,可以在时间t
join
内以每γ个输入事务的频率随机选择具有b的接口进行中继。
[0208]
根据t
bootup
和/或t
change
周期设置t
join
。该中继将帮助节点b建立自己的相关矩阵。在t
join
结束时,将仅根据节点a上每个其他对等接口的更新值{c*a}来选择b进行中继。
[0209]
节点i可能需要检查其对等方j是否仍然存在,因为未从其接口接收到传入流量。可以用任意少量时间t
temp
将临时中继请求发送给j。
[0210]
发布新事务的节点,即始发节点,需要选择选定对等方的集合以进行仔细中继,从而保证在网络中的传播。例如,可以将任意接口a的m**个节点选为第一中继,其中m*(a)《m**《m。
[0211]
下表1中详细列出了参数的完整列表。
[0212][0213]
表1
[0214]
恶意节点
[0215]
恶意节点旨在降低用于事务传播的概率模型的效率。恶意节点可以以下列任何一种方式起作用。
[0216]-恶意节点不传播应传播的事务。连接到该恶意节点的诚实节点可能能够从其他诚实(或恶意)对等方找回这些事务。但是,假设一组矿工仍然可以将这些事务接收并包括在新的已挖矿区块中,则不需要在网络中完全传播事务。
[0217]-恶意节点多次传播同一合法事务。接收节点能够通过查找表来跟踪先前接收到的事务。因此,不当行为很容易被发现,恶意对等方将被移除。
[0218]-恶意节点传播无效事务。如果接收节点执行事务验证,则容易发现不当行为,并且将移除恶意对等方。
[0219]-恶意节点生成并传播大量虚拟事务。接收方节点可以对来自对等方的大量有效传入事务进行不同的响应。作为响应,(i)接收方将要求发送方降低事务中继率。如果问题
仍然存在,则将移除发送方对等方;(ii)接收方可以向中继事务要求(并检查)最低事务费。
[0220]
这使攻击对于恶意节点而言代价高昂。如果不遵守最低事务费用,将移除发送方对等方,和/或(iii)简单移除发送方对等方。
[0221]
基于前文提到的攻击和概率模型,可以推断出以下属性。
[0222]-事务中继率取决于带宽可用性和单个节点的处理性能。因此,不执行默认的最大速率。
[0223]-恶意节点无法轻易做到保持沉默。恶意节点一定会转发有效事务,以保持其连接的存在。
[0224]
消息
[0225]
本文的方法包括来自比特币网络上的节点接口的数据或对象的概率中继,为了支持本文方法的实现,可以引入新的消息类型。此外,不再使用上文关于当前点到点比特币协议详细描述的一些当前消息类型,而下文未提及的消息类型则相对于比特币点对点协议保持不变。
[0226]
数据消息
[0227]
从另一个节点请求一个或多个数据对象的消息getdata不再使用。类似地,用于传输对等方已知的对象的一个或多个清单的消息inv不再使用。不再使用notfound消息作为对getdata的答复。
[0228]
上文已介绍的mempool消息请求接收节点已验证为有效但未在区块中公开的事务(即接收节点的内存池中的事务)的id,此消息的响应是一个或多个包含事务id的inv消息。节点发送所需数量的inv消息以引用其完整的内存池。节点可以禁用此功能,因此不需要传输其本地的mempool。
[0229]
控制消息
[0230]
移除了用于确认对等方仍处于连接状态的ping和pong消息。对静默节点等恶意节点进行如上所述的管理。消息feefilter保持不变。但是,不遵守收费阈值的对等方将被移除。
[0231]
引入了新消息temp和flow。
[0232]-当因未从节点的接口接收到传入流量而需要节点检查对等节点是否仍然存在时,使用temp消息。将临时中继请求temp(用任意少量的时间t
temp
)发送到连接到所述接口的对等方。如果接收对等方开始中继,但不遵守给定的时间窗口t
temp
,则会将该对等方从矩阵中删除。
[0233]-当节点要求对等方根据本地流量控制来修改事务中继速率(例如,每秒事务数)时,则使用flow消息。该速率可能会上升、降低或暂时中止(中继速率=0)。如果接收方不遵守新的中继速率,则将该接收方移除。将需要一个新的flow请求来修改当前中继速率。如果接收方没有收到第二个flow请求以恢复中继,则将删除发送方。
[0234]-要求节点接收按最低事务费用过滤的事务时,使用minfee消息。如果单个ip数据包中有多个事务,则可以为单个事务和/或费用总额设置最小值。如果接收对等方不遵守事务费用限额,则将其移除。
[0235]
应当注意的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求
中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)和包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,包括(comprising)”意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。
[0236]
小结
[0237]
就计算工作而言,当今的比特币网络主要集中在挖矿方面。随着事务量的大大增加,这将不一定可行。本说明书中描述的解决方案产生概率中继,概率中继能够处理大量事务的传播。
[0238]
本发明可提供一种传播数据包的方法,作为对已知方法的补充或优选的替换。已知方法包括在区块链网络例如比特币网络上发送数据包或事务,例如通过三步消息传递来传播新事务。
[0239]
本发明可支持通过减少节点之间的通信,在网络上更快地传播数据包。
[0240]
而且,通过根据接口之间的相关性来选择性地中继数据包,从而抑制了由节点处的瓶颈引起的长队列。
[0241]
在保持安全级别的信息冗余的同时,减少了数据包传输的总数。
[0242]
最后,本发明可提供一种自适应装置,用于适应与节点的接口相关联的变更,从而考虑到新的连接、断开的连接和恶意节点,以维护网络的完整性。这意味着对于可管理的节点上的接口的数量没有最大限制,并且网络的性能和大小不受限制,因为该方法适用于网络和节点的情况。无效传输得以最小化,并规避了恶意节点。
[0243]
参考资料
[0244]
[1]bitcoin transaction levels are made available via blockchain luxembourg s.a.r.l.and retrievable from http://blockchain.info.
[0245]
[2]visa transaction levels are summarised in a document published by visa inc.visa inc at glance.june 2015.it is retrievable fromhttp://usa.visa.com/dam/vcom/download/corporate/media/visa-fact-sheet-jun2015.pdf.
[0246]
[3]decker,christian and wattenhofer,roger(2013).information propagation in the bitcoin network.ieee thirteenth international conference on peer-to-peer computing(p2p),2013.
[0247]
[4]a bitcoin developer reference is retrievable fromhttp://bitcoin.org/en/developer-reference.

技术特征:
1.一种计算机实现的方法,用于区块链网络的节点,所述节点具有连接到对等节点的多个接口,所述计算机实现的方法包括:确定具有相关系数的相关矩阵,所述相关系数表示在所述节点的每个接口处处理的数据之间的相关性,其中所述数据对应于区块链对象;在所述节点的接收接口处接收数据;以及选择所述节点的多个其他接口中的至少一个,并从所选择的至少一个接口中继所述接收到的数据,其中其他接口是根据所述接收接口的相关系数的集合来选择的;其中,从所述相关矩阵导出指标,并且如果所述接收接口与所选择的至少一个接口之间的相关性低于所述指标,则中继数据;其中,所述指标用于确定度量,所述度量设置标准,所述标准用于对所述其他接口中的所选择用于中继数据的接口进行选择;其中,所述标准与相关指数结合使用,以表示网络状态。2.根据权利要求1所述的方法,其中,所述数据属于代表串行化事务的网络数据包和代表与相邻或对等节点的连接的标识。3.根据权利要求1所述的方法,其中,所述节点通过监控以下内容来建立所述相关矩阵:(i)通过每个接口处理的每个数据包的一个或多个数据标识符,和(ii)通过多对接口处理的多个相同事务,以及从中确定任意两个接口之间的相关系数。4.根据权利要求1所述的方法,其中具有m(m-1)个元素的所述相关矩阵用于以如下方式确定接口a的相关指数c
a
:其中,m是与对等节点相连的接口的数量,c
ia
是对应于节点i、接口a的第一相关系数,c
ai
是对应于接口a、节点i的第二相关系数。5.根据权利要求1所述的方法,其中具有m(m-1)个元素的所述相关矩阵用于以如下方式确定接口a的相关系数的集合:{c
a
}=[c
0a
,c
1a
,

c
am-1
],其中,c
am
表示对于接口a和接口m的相关系数,{c
a
}表示来自接口a的对等方的相关系数的集合。6.根据权利要求1所述的方法,其中所述指标以如下方式确定:为连接到对等节点的每个接口确定从所述相关矩阵导出的相关系数的集合,所述集合在每个接口之间具有所述连接系数;以及从所述集合中导出平均值或中值。7.根据权利要求1所述的方法,其中,为从接口中继而选择的所述接口的数量取决于以如下方式确定的接口的相关系数的集合导出的度量:
其中,a是所述接口,m是与对等节点连接的所述接口的数量,m*(a)是为节点的中继接口选择的节点数,θ是与指标进行比较的度量,例如集合{c
a
}中的接口的相关系数的集合的平均值其中,8.根据权利要求1所述的方法,其中中继数据还基于以下至少一项:(i)重置时间,即自节点启动或创始以来的时间,和(ii)变更时间,即变更事件之间的时间,所述事件包括以下至少一项:连接到接口的新对等节点;与接口的终止连接;和连接到被分类或被判断为恶意的节点的接口。9.根据权利要求8所述的方法,其中,在节点启动时,所述节点与对等节点连接,并在重置时间段内通过所有接口中继数据,在此期间建立所述相关矩阵,并且在所述时间段过去之后,如果所述接收接口和所述其他接口之间的相关性低于所述指标,则所述节点中继所有数据。10.根据权利要求8所述的方法,其中,在检测到变更事件时,重新设置并重新确定所述相关矩阵。11.根据权利要求8所述的方法,其中,在检测到变更事件时,如果所述接收接口和所述其他接口之间的相关性高于所述指标,则所述节点通过接口中继来自所述节点的所有对象。12.根据权利要求8所述的方法,其中,在检测到对等节点从接口断开连接时,重置并重新确定所述相关矩阵。13.根据权利要求8所述的方法,其中,在检测到新的对等节点与接口之间的连接时,所述接口通过所有接口在(i)在所述重置时间段内、和/或(ii)在所述变更时间内中继数据。14.一种计算机可读存储介质,包括非暂时性的计算机可执行指令,所述计算机可执行指令在被执行时使处理器用于执行权利要求1所述的方法。15.一种电子设备,包括:接口设备;连接到所述接口设备的一个或多个处理器;连接到所述一个或多个处理器的存储器,所述存储器上存储有非暂时性的计算机可执行指令,所述计算机可执行指令在被执行时用于使所述一个或多个处理器用于执行权利要求1所述的方法。16.一种区块链网络的节点,所述节点包括处理器和存储器,所述存储器存储非暂时性的计算机可执行指令,所述计算机可执行指令在被执行时用于使所述处理器执行权利要求
1所述的方法。17.一种区块链网络,具有根据权利要求16所述的节点。

技术总结
本发明涉及用于区块链网络的节点的方法,该计算机实现的方法包括:在节点处接收或生成用于在区块链网络中分发的数据,所述节点具有多个接口,所述数据对应的对象例如为事务或区块。该事务可以是在区块链中记录的比特币事务。该方法确定具有相关系数的相关矩阵,该相关系数表示在所述节点的每个接口处处理的数据之间的相关性。从相关矩阵确定每个接口的相关指数。根据接收数据的接口的一组相关系数,计算阈值或指标,并通过接口从节点中继数据或对象(例如比特币事务)。可以从相关矩阵得出指标或阈值,并且如果接收接口和另一个接口之间的相关性低于指标,则中继数据。本发明还涉及相应的计算机可读存储介质,电子设备,区块链网络的节点,区块链网络的超级节点,或区块链网络。网络。网络。


技术研发人员:西蒙娜
受保护的技术使用者:区块链控股有限公司
技术研发日:2018.06.25
技术公布日:2023/7/19
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐