CN117176736A - 基于近邻节点分簇的区块传输方法 - Google Patents
基于近邻节点分簇的区块传输方法 Download PDFInfo
- Publication number
- CN117176736A CN117176736A CN202311224423.7A CN202311224423A CN117176736A CN 117176736 A CN117176736 A CN 117176736A CN 202311224423 A CN202311224423 A CN 202311224423A CN 117176736 A CN117176736 A CN 117176736A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- transmission
- message
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 159
- 238000000034 method Methods 0.000 title claims abstract description 26
- 241000854291 Dianthus carthusianorum Species 0.000 claims abstract description 115
- 238000012795 verification Methods 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 14
- 230000001934 delay Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种基于近邻节点分簇的区块传输方法。该方法包括:区块链网络中所有节点中带宽大于带宽阈值Tb的节点进行簇头节点申请,确定每个分簇的簇头节点和成员节点,在第一簇头节点接收到第二簇头节点发送的区块时,第一簇头节点获取其他簇头节点的信任值和消息转发概率,确定目标传输节点发送包含区块的区块头信息的INV消息,第一簇头节点对区块内的交易进行验证,获得验证结果并更新第二簇头节点的信任值和消息转发概率,在区块合法的情况下,向簇内与第一簇头节点建立连接的成员节点发送区块,根据目标传输节点基于INV消息的反馈消息,向目标节点发送区块。提高了区块传输的传输速率和安全性。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于近邻节点分簇的区块传输方法。
背景技术
区块链作为一种颠覆性技术,已经在金融、工业物联网、医疗保健等社会领域中得到广泛关注。然而作为一种去中心化的分布式账本,区块链技术虽然因其去中心化、透明可追溯、无法篡改等优点而获得越来越多研究者的关注,但也因其扩展性、安全性、去中心化三者之间无法同时优化而饱受争议。区块链被视为一种分布式账本技术,它的概念产生于比特币。区块链网络中的节点构成对等网络,即,所有节点都处于对等地位,都有相同功能,无主从之分。当区块链网络中的一个节点获得打包权时,它会将交易打包成区块并广播到邻居节点。收到区块的节点会对区块进行验证,将验证通过的区块存储在自己的本地账本中。
区块链网络的传输性能主要受传输速率和安全性影响。传输速率能直接决定区块能不能在生成后的第一时间传播到网络中的各个节点,从而直接影响分叉的产生。安全性能直接反映出在有恶意节点存在的情况下,网络的容错性能。在区块链网络中每个节点都是对等的,各自维护一个本地的分布式账本。区块由区块链网络中的矿工创建并广播到整个网络。而由于区块链网络的异步性、竞争性挖矿和不确定的区块传播延迟的存在,区块链分叉频繁产生(由于每个区块链接到先前生成的区块,区块链网络的规模随着网络中新区块的生成而增长。注意,由于块传输延迟的存在,网络中的矿工所维护的账本可能不同,这就导致了它们可能在不同的链上工作,从而产生分叉)。分叉的产生会导致算力的大量浪费,极大地影响区块链网络的效率,还会严重地影响区块链网络的安全性。除此之外,由于区块链网络中不同节点的邻居节点数量差距很大,因此会存在部分节点已经接收到了区块,但还是会有其它节点向其发送询问消息的现象,这种现象之所以产生是因为网络中节点并不知道邻居节点所存储的区块信息,当一个节点接收到新的区块时会像所连接的节点广播询问消息。这会导致网络中存在大量消息冗余。另外,节点的可靠性对区块传输速率也有很大影响。如果在区块链网络中产生了作恶节点,那么可能会存在如下情况:(1)恶意节点在接收到INV消息后将会选择不向其邻居节点广播区块的INV消息且不断向发送INV的节点请求区块,占用其带宽;(2)向其邻居节点广播恶意区块。前者会严重占用节点的带宽,后者不仅影响区块传输还会给其邻居节点造成传输压力(会接收无用的区块将会占用节点的带宽)。因此,目前的区块传输的传输速率和安全性较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高区块传输的传输速率和安全性的基于近邻节点分簇的区块传输方法。
一种基于近邻节点分簇的区块传输方法,所述方法包括:
区块链网络中所有节点中带宽大于带宽阈值Tb的节点向所述区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点;
在区块链网络中的第一簇头节点接收到第二簇头节点发送的区块时,所述第一簇头节点获取与所述第一簇头节点建立连接的其他簇头节点的信任值和消息转发概率,确定目标传输节点,所述第一簇头节点向目标传输节点发送包含所述区块的区块头信息的INV消息;
所述第一簇头节点对所述区块内的交易进行验证,获得验证结果,并根据验证结果更新所述第二簇头节点的信任值和消息转发概率;
在所述区块合法的情况下,所述第一簇头节点向簇内与所述第一簇头节点建立连接的成员节点发送所述区块,使所述成员节点向簇内所述成员节点的邻居节点发送所述区块;
根据所述目标传输节点基于所述INV消息的反馈消息,从所述目标传输节点中确定需要获取所述区块的目标节点,向所述目标节点发送所述区块。
在其中一个实施例中,区块链网络中所有节点中带宽大于带宽阈值Tb的节点向所述区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点,包括:
区块链网络中所有节点中带宽大于带宽阈值Tb的节点Nv向所述区块链网络中的邻居节点Nu广播HeadMsg消息申请成为簇头节点;
邻居节点Nu接收到节点Nv发送的HeadMsg消息时,在节点Nv的带宽大于邻居节点Nu的带宽且未成为其他节点的成员节点的情况下,邻居节点Nu向节点Nv发送响应消息HeadReply以申请成为节点Nv的成员节点;
在节点Nv收到邻居节点Nu发送的响应消息HeadReply,并且簇中成员节点数量没有超过阈值的情况下,节点Nv向邻居节点Nu发送确认消息,使邻居节点Nu将节点Nv设置成簇头节点,若分簇中成员节点数量超过阈值的情况下,节点Nv则向邻居节点Nu发送拒绝消息RejectMsg。
在其中一个实施例中,所述成员节点向簇内所述成员节点的邻居节点发送所述区块,包括:
在区块链网络中的成员节点接收到第一节点发送的区块时,所述成员节点获取与所述成员节点建立连接的邻居节点的信任值和消息转发概率,从各所述邻居节点中确定出第二节点,所述成员节点向第二节点发送包含所述区块的区块头信息的INV消息;
所述成员节点对所述区块内的交易进行验证,获得验证结果,并根据验证结果更新所述第一节点的信任值和消息转发概率;
在所述区块合法的情况下,根据所述第二节点基于所述INV消息的反馈消息,从所述第二节点中确定需要获取所述区块的第三节点,向所述第三节点发送所述区块。
在其中一个实施例中,所述信任值的更新表达式为:
其中,为在b个区块的传输过程节点i对节点j的信任值,β为第一权重系数,/>为在b个区块的传输过程中节点i对节点j的修正后的区块有效率,/>为在b个区块的传输过程中节点i对节点j的修正后的在线率,/>为在b个区块的传输过程中节点i对节点j在线率,α为第二权重系数,/>为在/>个区块的传输过程中节点i对节点j在线率,/>为/>个区块的传输期间节点j的在线时间,/>为/>个区块的传输期间节点i的在线时间,δ为在线率阈值,/>为b个区块的传输过程中节点i对节点j传输区块的有效率,γ为第三权重系数,为/>个区块的传输过程中节点i对节点j传输区块的有效率,/>为/>个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为/>个区块的传输过程中节点i接受的来自节点j的无效区块的数量,/>为区块有效率阈值,/>为节点i和节点j建立连接之后节点j的在线时间,/>为节点i和j建立连接之后节点i的在线时间,/>为b个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为b个区块的传输过程中节点i接受的来自节点j的无效区块的数量,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,/>表示预设时间段内节点i接收到节点j传输的区块个数。
在其中一个实施例中,所述消息转发概率的更新表达式为:
其中,为节点i向节点j发送第b+1个区块消息的消息转发概率,/>为在b个区块的传输过程中节点i对节点j的消息响应率,p为传输概率的权重系数,θ为传输稳定性的权重系数,/>为在最近/>个区块的传输过程中节点i对节点j的消息响应率,ω为消息响应率阈值,/>为节点i向节点j传输第b个区块的传输稳定性,/>为b个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为b个区块的传输过程中节点i向节点j发送INV消息的次数,/>为/>个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为/>个区块的传输过程中节点i向节点j发送INV消息的次数,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,/>表示预设时间段内节点i接收到节点j传输的区块个数。
在其中一个实施例中,所述传输稳定性的表达式为:
其中,为节点i向节点j传输第b个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j传输b-1个区块消息的平均时间,/>为节点i向节点j发送第b个区块的INV消息的时间,/>为节点i向节点j传输第k个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j发送第k个区块的INV消息的时间,/>为节点i向节点j传输b个区块消息的平均时间。
上述基于近邻节点分簇的区块传输方法,通过区块链网络中所有节点中带宽大于带宽阈值Tb的节点向所述区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点,在区块链网络中的第一簇头节点接收到第二簇头节点发送的区块时,所述第一簇头节点获取与所述第一簇头节点建立连接的其他簇头节点的信任值和消息转发概率,确定目标传输节点,所述第一簇头节点向目标传输节点发送包含所述区块的区块头信息的INV消息,进而所述第一簇头节点对所述区块内的交易进行验证,获得验证结果,并根据验证结果更新所述第二簇头节点的信任值和消息转发概率,在所述区块合法的情况下,所述第一簇头节点向簇内与所述第一簇头节点建立连接的成员节点发送所述区块,使所述成员节点向簇内所述成员节点的邻居节点发送所述区块,根据所述目标传输节点基于所述INV消息的反馈消息,从所述目标传输节点中确定需要获取所述区块的目标节点,向所述目标节点发送所述区块。由此,区块链网络各节点通过节点之间的延迟来选择加入延迟小的簇,簇头节点通过信任值和消息转发概率向簇内节点和其他簇头节点的转发包含该区块哈希值的INV消息,不需要先验证区块内的交易,因此能够使区块更快地被转发到网络中,从而提高了区块传输的传输速率和安全性。
附图说明
图1为一个实施例中基于近邻节点分簇的区块传输方法的流程示意图;
图2为一个实施例中基于近邻节点分簇的区块传输方法的结构示意图;
图3为一个实施例中基于近邻节点分簇的区块传输方法的区块传输流程示意图;
图4为一个实施例中基于近邻节点分簇的区块传输方法的区块的INV消息的传输概率示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1和图2所示,提供了一种基于近邻节点分簇的区块传输方法,包括以下步骤:
步骤S220,区块链网络中所有节点中带宽大于带宽阈值Tb的节点向区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点。
其中,当一个节点新加入区块链网络时,它首先会向区块链网络的DNS(DomainName Server)服务器发送获取可连接节点的请求。DNS向新加入的节点推荐地理位置近的节点。然后该新节点对DNS返回的推荐列表中的节点测量延迟,选择延迟小的节点连接作为邻居节点。等待其他节点发送请求成为簇头节点的消息。簇头节点会定期发送维护簇的消息,新加入区块链网络的节点接收到该消息时判断该簇头节点的带宽是否大于自己,若大于自身带宽则加入该簇。
其中,节点加入区块链网络后先与网络中节点建立连接,然后等待其他节点的请求成为簇头的消息。簇头之间会互相建立连接从而实现全连接。其他节点在加入簇之后,直接与簇头节点建立连接。
在一个实施例中,区块链网络中所有节点中带宽大于带宽阈值Tb的节点向区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点,包括:
区块链网络中所有节点中带宽大于带宽阈值Tb的节点Nv向区块链网络中的邻居节点Nu广播HeadMsg消息申请成为簇头节点;邻居节点Nu接收到节点Nv发送的HeadMsg消息时,在节点Nv的带宽大于邻居节点Nu的带宽且未成为其他节点的成员节点的情况下,邻居节点Nu向节点Nv发送响应消息HeadReply以申请成为节点Nv的成员节点;在节点Nv收到邻居节点Nu发送的响应消息HeadReply,并且簇中成员节点数量没有超过阈值的情况下,节点Nv向邻居节点Nu发送确认消息,使邻居节点Nu将节点Nv设置成簇头节点,若分簇中成员节点数量超过阈值的情况下,节点Nv则向邻居节点Nu发送拒绝消息RejectMsg。
其中,任何带宽达到阈值的节点都可以申请成为簇头节点。申请成为簇头的节点会定期向邻居节点发送请求其加入簇的请求。由于在区块链网络中每个节点都有多个邻居节点,因此一个节点可能会接受到多个请求其加入簇的请求。但是,每个节点会记录最先接收到的请求加入簇的消息,并加入发送该消息的节点的簇,成为其簇成员。该方式可以最小化簇内节点与簇头节点的通信延迟。
其中,可以使用节点的地理位置作为参考,选择地理位置邻近的节点测试通信延迟,每个节点选择通信延迟小的节点作为邻居节点。根据节点间的通信延迟对节点进行分簇,能够减少区块的传输延迟。
其中,在一个簇中,簇头节点通常承担着与其他簇通信和将区块广播到簇内的任务,簇头节点承担了通信的大部分的开销。基于这样一种情况,分簇中应尽可能的考虑选择具有高带宽的节点作为簇头节点。更高的带宽意味着能在更短的时间内将区块向其他簇头节点和簇内节点广播,使得区块传输更快。
其中,任何高带宽的节点都可以申请成为一个簇头节点,当一个节点想要申请成为簇头节点时,它会向邻居节点发送一个请求信息,该信息中包含了申请成为簇头节点的带宽。若接收到该消息的节点的带宽小于该消息中记录的带宽,该节点则会加入这个簇。比如:若节点C先接受来自节点A的请求消息,且节点C的带宽小于节点A的带宽,则节点C会加入节点A的簇。不久之后,节点C又接收到来自节点B的请求,则节点C会忽略该请求,因为节点C后接收先到节点A的请求说明节点A和C之间的通信延迟比节点B和C之间的通信延迟更小。所以,任一节点总是会加入最先接受到的请求所属的节点的簇。区块链网络中的节点只有在自身带宽达到一定阈值才会广播请求消息充当簇头节点。可以通过控制节点的带宽阈值控制区块链网络中的簇的数量。一旦簇形成,簇头节点将会向其它簇头节点请求所有的簇头节点信息,并与部分簇头节点建立连接。一旦一个节点加入了簇,该节点将会向簇头节点请求成员节点信息,并选择n个节点作为邻居节点。
步骤S240,在区块链网络中的第一簇头节点接收到第二簇头节点发送的区块时,第一簇头节点获取与第一簇头节点建立连接的其他簇头节点的信任值和消息转发概率,确定目标传输节点,第一簇头节点向目标传输节点发送包含区块的区块头信息的INV消息。
其中,目标传输节点可以是信任值满足阈值且通过消息转发概率被选中为发送区块的节点。
其中,为了提高区块传输速度,让区块在更短的时间内转发到更多的节点。簇头节点转发区块消息的策略可以是:让簇头节点在收到区块以后直接转发INV消息,与此同时对区块内的交易进行验证,并根据区块是否有效对传输区块的邻居节点进行评分(即更新信任值和消息转发概率)。利用这种区块验证的策略能够让区块更早地被广播到簇中的其它节点,从而实现让更多节点进行并行验证区块。即使簇头节点转发的是存在错误信息的区块,也不会使它在整个网络中被反复转发,只会使包含这个区块头信息的INV消息被多次转发。由于INV消息的大小仅仅8KB远远小于一个区块的大小,并且INV消息只会在簇头节点之间转发,因此INV消息被反复转发所造成的消息量冗余远远小于传统的转发方式。
其中,节点根据邻居节点的信任值维护连接,增强安全性。节点以一定的概率向邻居节点转发消息从而减少网络中的总消息量。
其中,簇头节点可以直接转发接收到的区块的INV消息并同时对区块内交易进行验证,从而加速区块传输。
在一个示例中,如图3所示,区块传输过程包括计算信任值、计算消息转发概率、簇头转发消息三个部分。1)信任值计算用于维护节点对邻居节点的信任,对于信任值较低的邻居,节点将拒绝向其发送消息和接受其发送的消息。假设图3中节点i对节点j的信任值小于一定的阈值,则其将不会向节点j发送消息,同时也拒绝接受节点j的消息。2)在节点进行消息转发时,改变现有的向所有邻居节点转发的方式,本申请是根据邻居节点对消息的响应情况计算出消息转发概率,从而确定是否向该邻居节点转发消息。3)确定节点转发区块的策略,簇头节点采用先转发区块的INV消息后验证区块的策略,以加速区块链网络中区块传输的速度。簇内节点采用传统的先验证区块后转发策略,以防止虚假的区块在簇内传输。
其中,簇头以一定的概率向其他簇头节点以及簇内成员节点转发。接收到区块的簇头节点同样以一定的概率迅速将包含该区块头信息的INV消息向其他簇和其簇内节点转发,簇内节点只向同簇的节点类似转发,以加速区块的传输。转发区块之后,簇头节点和簇内节点均需要对区块中的交易信息进行验证。
其中,节点对区块中的交易信息验证结束之后根据该区块是否合法对发送该区块的邻居节点进行评分,更新对邻居节点的信任值。信任值的引入用于评估邻居节点的可信度从而识别出恶意节点,减少网络中的不真实信息。
应理解,第一簇头节点通过信任值和消息转发概率确定目标传输节点,向目标传输节点发送包含区块的区块头信息的INV消息,以快速感知邻居节点中的恶意节点从而减少无效区块在网络中的传输,并能够快速感知邻居节点状态变化从而减少网络中的区块的INV消息的冗余。还采用直接将区块的INV消息向邻居节点转发的方式可以加速区块的传输。
应理解,除了区块链网络的传输速度之外,网络的可靠性也会影响着区块链网络的性能。通过信任值增强节点之间的可信性,维护可靠连接之外,还使用了概率广播方式减少区块链网络中的消息冗余,从而减少区块链网络中的节点处理消息的压力。
在一个示例中,如图4所示,节点1根据邻居节点2、3和5对其发送的消息做出的响应情况初步计算出下一次向每个邻居节点发送区块的INV消息的概率。节点1通过近期邻居节点的响应情况和传输稳定性对初步计算的广播概率做出修正,以得出最终的INV消息的消息转发概率。假设最终计算出的节点1向节点2、3和5广播INV消息的消息转发概率为60%、20%和20%。则向节点2、3和5发送INV消息时就根据计算出来的概率进行发送。
步骤S260,第一簇头节点对区块内的交易进行验证,获得验证结果,并根据验证结果更新第二簇头节点的信任值和消息转发概率。
其中,节点的信任值可以采用区块有效率和节点在线率进行评估,节点可以通过验证从邻居节点接收到的区块是否合法从而得出该邻居节点的区块传输的有效率。
应理解,如果节点的邻居节点在区块链网络中连接良好,则它们可能已经拥有某一区块,然而该节点并不知道到邻居节点已经拥有该区块从而继续向邻居节点发送该区块的消息,从而使网络中的消息产生冗余。对于有多个邻居节点的节点,该节点通常并不需要接收所有邻居节点发送的INV消息。对于接收到区块的节点,该节点也并不需要向所有邻居节点都发送区块的INV消息,因为它的部分邻居节点可能已经从其他节点接收该区块,所以并不会对该节点的INV消息做出响应。因此,一个节点只需要向对其INV消息频繁做出响应邻居节点发送INV消息,即,以更高的概率向对消息响应率高的邻居节点发送INV消息,以更低的概率向对消息响应率低的邻居节点发送INV消息。然而,区块链网络在实时变化,近期的节点响应情况能够更好的反应未来一段时间的响应情况。因此,可以根据节点的消息响应率以及传输稳定性确定向一个邻居节点传输区块的消息转发概率。
在一个实施例中,信任值的更新表达式为:
其中,为在b个区块的传输过程节点i对节点j的信任值,β为第一权重系数,/>为在b个区块的传输过程中节点i对节点j的修正后的区块有效率,/>为在b个区块的传输过程中节点i对节点j的修正后的在线率,/>为在b个区块的传输过程中节点i对节点j在线率,α为第二权重系数,/>为在/>个区块的传输过程中节点i对节点j在线率,/>为/>个区块的传输期间节点j的在线时间,/>为/>个区块的传输期间节点i的在线时间,δ为在线率阈值,/>为b个区块的传输过程中节点i对节点j传输区块的有效率,γ为第三权重系数,为/>个区块的传输过程中节点i对节点j传输区块的有效率,/>为/>个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为/>个区块的传输过程中节点i接受的来自节点j的无效区块的数量,/>为区块有效率阈值,/>为节点i和节点j建立连接之后节点j的在线时间,/>为节点i和j建立连接之后节点i的在线时间,/>为b个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为b个区块的传输过程中节点i接受的来自节点j的无效区块的数量,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,/>表示预设时间段内节点i接收到节点j传输的区块个数。
其中,节点i可以是区块链网络中的任意一个节点,节点j可以是与节点i建立连接的邻居节点。
其中,预设时间段可以根据实际情况进行设定。
应理解,簇头节点和簇内的节点均可采用该信任值的更新表达式对信任值进行更新,该信任值的更新表达式中采用近期(预设时间段)对邻居节点的信任值修正对邻居节点的历史信任值,使对邻居节点的信任值评估更准确。
在一个实施例中,消息转发概率的更新表达式为:
其中,为节点i向节点j发送第b+1个区块消息的消息转发概率,/>为在b个区块的传输过程中节点i对节点j的消息响应率,p为传输概率的权重系数,θ为传输稳定性的权重系数,/>为在最近/>个区块的传输过程中节点i对节点j的消息响应率,ω为消息响应率阈值,/>为节点i向节点j传输第b个区块的传输稳定性,/>为b个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为b个区块的传输过程中节点i向节点j发送INV消息的次数,/>为/>个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为/>个区块的传输过程中节点i向节点j发送INV消息的次数,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,/>表示预设时间段内节点i接收到节点j传输的区块个数。
在一个实施例中,传输稳定性的表达式为:
其中,为节点i向节点j传输第b个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j传输b-1个区块消息的平均时间,/>为节点i向节点j发送第b个区块的INV消息的时间,/>为节点i向节点j传输第k个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j发送第k个区块的INV消息的时间,/>为节点i向节点j传输b个区块消息的平均时间。
应理解,消息响应率可以是邻居节点响应INV消息的次数,区块链网络中,每个节点都有不同数量的邻居节点。然而每个节点都只知道自己的邻居节点,并不知道邻居节点是否接收到了区块,因此当一个节点接收到区块后会将该区块的INV消息发送给所有邻居节点。但是一个节点的邻居节点可能从它的其他邻居节点出获得区块,因此,根据消息响应率计算向邻居节点发送INV消息的概率可以从一定程度上避免INV消息的冗余。两个节点的消息响应率越高,则说明这两个节点之间的区块传输次数越多。当一个节点接收到区块时,应该以更高的概率向消息响应率高的邻居节点传输发送区块。
应理解,传输稳定性是指节点之间传输数据所需时间的波动,这种波动可能由节点离线、路径阻塞问题导致。区块传输时间的变化程度来评估传输稳定性,区块传输时间如果比之前块传输的时间均值大,则表明该次传输时间长相对较长,可能是由于节点的网络状态变差导致。那么就应该减少向这个节点传输区块的概率,反之增加。
步骤S280,在区块合法的情况下,第一簇头节点向簇内与第一簇头节点建立连接的成员节点发送区块,使成员节点向簇内成员节点的邻居节点发送区块。
在一个实施例中,成员节点向簇内成员节点的邻居节点发送区块,包括:在区块链网络中的成员节点接收到第一节点发送的区块时,成员节点获取与成员节点建立连接的邻居节点的信任值和消息转发概率,从各邻居节点中确定出第二节点,成员节点向第二节点发送包含区块的区块头信息的INV消息;成员节点对区块内的交易进行验证,获得验证结果,并根据验证结果更新第一节点的信任值和消息转发概率;在区块合法的情况下,根据第二节点基于INV消息的反馈消息,从第二节点中确定需要获取区块的第三节点,向第三节点发送区块。
其中,随着区块链网络规模的增长,每个簇中的节点可能会达到数百甚至上千个。若簇中成员节点之间若对区块进行验证直接转发区块消息会造成一系列的问题:1)若该区块是无效区块,则会造成虚假信息在较大范围内洪泛。2)较多的区块消息在簇内洪泛会给节点造成传输压力。因此,为了避免这些问题,对于簇内成员节点之间的消息广播仍采用先验证后转发的方式。即:先验证区块内的交易,若该区块为合法区块则将区块消息向邻居节点转发。若验证不通过,则不转发区块消息。簇内节点的增多使簇内的节点无法与所有节点建立连接。因此,每个邻居节点可以从簇中选择一部分节点建立连接,以减少节点的传输压力。
步骤S300,根据目标传输节点基于INV消息的反馈消息,从目标传输节点中确定需要获取区块的目标节点,向目标节点发送区块。
上述基于近邻节点分簇的区块传输方法,通过区块链网络中所有节点中带宽大于带宽阈值Tb的节点向区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点,在区块链网络中的第一簇头节点接收到第二簇头节点发送的区块时,第一簇头节点获取与第一簇头节点建立连接的其他簇头节点的信任值和消息转发概率,确定目标传输节点,第一簇头节点向目标传输节点发送包含区块的区块头信息的INV消息,进而第一簇头节点对区块内的交易进行验证,获得验证结果,并根据验证结果更新第二簇头节点的信任值和消息转发概率,在区块合法的情况下,第一簇头节点向簇内与第一簇头节点建立连接的成员节点发送区块,使成员节点向簇内成员节点的邻居节点发送区块,根据目标传输节点基于INV消息的反馈消息,从目标传输节点中确定需要获取区块的目标节点,向目标节点发送区块。由此,区块链网络各节点通过节点之间的延迟来选择加入延迟小的簇,簇头节点通过信任值和消息转发概率向簇内节点和其他簇头节点的转发包含该区块哈希值的INV消息,不需要先验证区块内的交易,因此能够使区块更快地被转发到网络中,从而提高了区块传输的传输速率和安全性。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种基于近邻节点分簇的区块传输方法,其特征在于,所述方法包括:
区块链网络中所有节点中带宽大于带宽阈值Tb的节点向所述区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点;
在区块链网络中的第一簇头节点接收到第二簇头节点发送的区块时,所述第一簇头节点获取与所述第一簇头节点建立连接的其他簇头节点的信任值和消息转发概率,确定目标传输节点,所述第一簇头节点向目标传输节点发送包含所述区块的区块头信息的INV消息;
所述第一簇头节点对所述区块内的交易进行验证,获得验证结果,并根据验证结果更新所述第二簇头节点的信任值和消息转发概率;
在所述区块合法的情况下,所述第一簇头节点向簇内与所述第一簇头节点建立连接的成员节点发送所述区块,使所述成员节点向簇内所述成员节点的邻居节点发送所述区块;
根据所述目标传输节点基于所述INV消息的反馈消息,从所述目标传输节点中确定需要获取所述区块的目标节点,向所述目标节点发送所述区块。
2.根据权利要求1所述的方法,其特征在于,区块链网络中所有节点中带宽大于带宽阈值Tb的节点向所述区块链网络中的各邻居节点播HeadMsg消息进行簇头节点申请,基于节点间的通信延迟划分出节点分簇,并确定每个分簇的簇头节点和成员节点,包括:
区块链网络中所有节点中带宽大于带宽阈值Tb的节点Nv向所述区块链网络中的邻居节点Nu广播HeadMsg消息申请成为簇头节点;
邻居节点Nu接收到节点Nv发送的HeadMsg消息时,在节点Nv的带宽大于邻居节点Nu的带宽且未成为其他节点的成员节点的情况下,邻居节点Nu向节点Nv发送响应消息HeadReply以申请成为节点Nv的成员节点;
在节点Nv收到邻居节点Nu发送的响应消息HeadReply,并且簇中成员节点数量没有超过阈值的情况下,节点Nv向邻居节点Nu发送确认消息,使邻居节点Nu将节点Nv设置成簇头节点,若分簇中成员节点数量超过阈值的情况下,节点Nv则向邻居节点Nu发送拒绝消息RejectMsg。
3.根据权利要求1所述的方法,其特征在于,所述成员节点向簇内所述成员节点的邻居节点发送所述区块,包括:
在区块链网络中的成员节点接收到第一节点发送的区块时,所述成员节点获取与所述成员节点建立连接的邻居节点的信任值和消息转发概率,从各所述邻居节点中确定出第二节点,所述成员节点向第二节点发送包含所述区块的区块头信息的INV消息;
所述成员节点对所述区块内的交易进行验证,获得验证结果,并根据验证结果更新所述第一节点的信任值和消息转发概率;
在所述区块合法的情况下,根据所述第二节点基于所述INV消息的反馈消息,从所述第二节点中确定需要获取所述区块的第三节点,向所述第三节点发送所述区块。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述信任值的更新表达式为:
其中,为在b个区块的传输过程节点i对节点j的信任值,β为第一权重系数,/>为在b个区块的传输过程中节点i对节点j的修正后的区块有效率,/>为在b个区块的传输过程中节点i对节点j的修正后的在线率,/>为在b个区块的传输过程中节点i对节点j在线率,α为第二权重系数,/>为在/>个区块的传输过程中节点i对节点j在线率,/>为/>个区块的传输期间节点j的在线时间,/>为/>个区块的传输期间节点i的在线时间,δ为在线率阈值,为b个区块的传输过程中节点i对节点j传输区块的有效率,γ为第三权重系数,/>为/>个区块的传输过程中节点i对节点j传输区块的有效率,/>为/>个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为/>个区块的传输过程中节点i接受的来自节点j的无效区块的数量,θ为区块有效率阈值,/>为节点i和节点j建立连接之后节点j的在线时间,/>为节点i和j建立连接之后节点i的在线时间,/>为b个区块的传输过程中节点i接受的来自节点j的有效区块的数量,/>为b个区块的传输过程中节点i接受的来自节点j的无效区块的数量,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,表示预设时间段内节点i接收到节点j传输的区块个数。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述消息转发概率的更新表达式为:
其中,为节点i向节点j发送第b+1个区块消息的消息转发概率,/>为在b个区块的传输过程中节点i对节点j的消息响应率,p为传输概率的权重系数,θ为传输稳定性的权重系数,/>为在最近/>个区块的传输过程中节点i对节点j的消息响应率,ω为消息响应率阈值,/>为节点i向节点j传输第b个区块的传输稳定性,/>为b个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为b个区块的传输过程中节点i向节点j发送INV消息的次数,/>为/>个区块的传输过程中节点i接收到节点j的GETDATA的次数,/>为/>个区块的传输过程中节点i向节点j发送INV消息的次数,b为区块链网络从开始运行到当前为止节点i接收到节点j传输的区块个数,/>表示预设时间段内节点i接收到节点j传输的区块个数。
6.根据权利要求5所述的方法,其特征在于,所述传输稳定性的表达式为:
其中,为节点i向节点j传输第b个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j传输b-1个区块消息的平均时间,/>为节点i向节点j发送第b个区块的INV消息的时间,/>为节点i向节点j传输第k个区块的过程中节点i接收到节点j发送的GETDATA的时间,/>为节点i向节点j发送第k个区块的INV消息的时间,/>为节点i向节点j传输b个区块消息的平均时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311224423.7A CN117176736A (zh) | 2023-09-21 | 2023-09-21 | 基于近邻节点分簇的区块传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311224423.7A CN117176736A (zh) | 2023-09-21 | 2023-09-21 | 基于近邻节点分簇的区块传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117176736A true CN117176736A (zh) | 2023-12-05 |
Family
ID=88946584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311224423.7A Pending CN117176736A (zh) | 2023-09-21 | 2023-09-21 | 基于近邻节点分簇的区块传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117176736A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117675669A (zh) * | 2024-01-29 | 2024-03-08 | 南京信息工程大学 | 一种簇间区块传输方法、存储介质及计算设备 |
CN117687578A (zh) * | 2024-02-01 | 2024-03-12 | 南京信息工程大学 | 区块链中基于动态分簇的区块协同存储方法、介质及设备 |
-
2023
- 2023-09-21 CN CN202311224423.7A patent/CN117176736A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117675669A (zh) * | 2024-01-29 | 2024-03-08 | 南京信息工程大学 | 一种簇间区块传输方法、存储介质及计算设备 |
CN117675669B (zh) * | 2024-01-29 | 2024-05-14 | 南京信息工程大学 | 一种簇间区块传输方法、存储介质及计算设备 |
CN117687578A (zh) * | 2024-02-01 | 2024-03-12 | 南京信息工程大学 | 区块链中基于动态分簇的区块协同存储方法、介质及设备 |
CN117687578B (zh) * | 2024-02-01 | 2024-04-16 | 南京信息工程大学 | 区块链中基于动态分簇的区块协同存储方法、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117176736A (zh) | 基于近邻节点分簇的区块传输方法 | |
KR102406020B1 (ko) | 탈 중앙화된 비잔틴 오류 감내 분산 합의 장치 및 방법 | |
EP3646570B1 (en) | Probabilistic relay for efficient propagation in a blockchain network | |
US8130676B2 (en) | Method for on demand distributed hash table update | |
Tang et al. | GoCast: Gossip-enhanced overlay multicast for fast and dependable group communication | |
CN108616596A (zh) | 基于动态授权和网络环境感知的区块链自适应共识方法 | |
Aikebaier et al. | Reliable message broadcast schemes in distributed agreement protocols | |
CN114218612B (zh) | 一种适用于联盟链高频交易场景的共识方法 | |
CN110891050B (zh) | 全链条的原子级主动安全路由方法 | |
KR20200081533A (ko) | 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법 | |
CN115277722A (zh) | 一种基于信誉值模型的dr-pbft改进算法 | |
CN111769867A (zh) | 卫星网络安全路由方法 | |
CN115022205A (zh) | 一种应用于海量终端高并发场景的跨网数据传输方法 | |
CN113163411B (zh) | 一种卫星网络聚类方法、装置、电子设备及存储介质 | |
CN107438026A (zh) | 域间路由系统的失效恢复方法和装置 | |
Aikebaier et al. | Trustworthiness among peer processes in distributed agreement protocol | |
CN113452801A (zh) | 区块链网络中一种面向块传输的可信节点选择优化方法 | |
Doss et al. | Packet integrity defense mechanism in OppNets | |
CN101170498A (zh) | 应用于Ad hoc网络的安全多路径路由方法 | |
CN115883577B (zh) | 一种区块链网络分簇及数据传输方法 | |
CN117082054A (zh) | 一种数据传输方法、装置、系统和介质 | |
CN101969405A (zh) | 一种p2p环境下基于可信度的安全路由方法 | |
Hackfeld | A lightweight BFT consensus protocol for blockchains | |
CN115276999A (zh) | 一种基于信任模型的自适应切换高效容错共识方法 | |
CN112260971B (zh) | 网络设备系统的容错方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |