CN112055048A - 一种面向高吞吐率分布式账本的p2p网络通信方法和系统 - Google Patents

一种面向高吞吐率分布式账本的p2p网络通信方法和系统 Download PDF

Info

Publication number
CN112055048A
CN112055048A CN202010747527.6A CN202010747527A CN112055048A CN 112055048 A CN112055048 A CN 112055048A CN 202010747527 A CN202010747527 A CN 202010747527A CN 112055048 A CN112055048 A CN 112055048A
Authority
CN
China
Prior art keywords
node
network
nodes
module
communication module
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.)
Granted
Application number
CN202010747527.6A
Other languages
English (en)
Other versions
CN112055048B (zh
Inventor
朱晓旻
向往
蔡华谦
张舒汇
郭京申
舒俊宜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhirong Yunhe Technology Co ltd
Original Assignee
Beijing Zhirong Yunhe Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhirong Yunhe Technology Co ltd filed Critical Beijing Zhirong Yunhe Technology Co ltd
Priority to CN202010747527.6A priority Critical patent/CN112055048B/zh
Publication of CN112055048A publication Critical patent/CN112055048A/zh
Application granted granted Critical
Publication of CN112055048B publication Critical patent/CN112055048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种面向高吞吐率分布式账本的P2P网络通信方法和系统,所述方法和系统具体为预先设计并构建P2P网络通信模块;初始化所述P2P网络通信模块;监听外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;基于去中心化的订阅‑发布机制的全网节点列表同步机制,同步全网节点列表;等待上层程序的调用。本发明实施例提供的方法和系统,通过对P2P网络通信模块的功能进行配置,并基于自定义的引导程序和全网节点列表同步机制,满足高吞吐率分布式账本的功能需求和安全性要求。

Description

一种面向高吞吐率分布式账本的P2P网络通信方法和系统
技术领域
本发明涉及P2P网络通信技术领域,特别是涉及一种面向高吞吐率分布式账本的P2P网络通信方法和一种面向高吞吐率分布式账本的P2P网络通信系统。
背景技术
P2P(Peer to Peer,对等式网络),又称点对点技术,区别于C/S(客户/服务器)架构,是一种没有中心服务器的网络架构。P2P作为分布式账本底层的网络通信技术,承担节点发现、节点定位、节点间的通信等职责。不同的分布式账本技术在应用场景和共识机制的设计上存在着差异,在节点的通信等功能需求上也存在差异,通常需要设计并实现定制化的P2P网络来满足需求。
当下采用随机见证共识机制的大数据可信图式结构分布式账本,相对于传统的采用全网节点共识机制的链式结构分布式账本,解决了节点间不能并发产生区块和吞吐量受限的问题,有效提高了全网TPS(Transaction Per Second,每秒钟的交易数量)。但是,基于共识机制的特性差异和数据吞吐量的大幅提高,采用随机见证共识机制的高吞吐率分布式账本,在安全性和通信功能方面,对P2P网络通信模块提出了更高的要求,而现有的分布式账本的P2P网络通信模块已经难以满足这些要求。
发明内容
鉴于上述问题,提出了本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的一种面向高吞吐率分布式账本的P2P网络通信方法和一种面向高吞吐率分布式账本的P2P网络通信系统。
为了解决上述问题,本发明实施例提供了一种面向高吞吐率分布式账本的P2P网络通信方法,所述方法包括:针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块;加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块;通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID;所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
可选地,针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块之前,还包括:分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求,包括:高吞吐率分布式账本对P2P网络通信模块提出的基础功能需求、随机见证共识机制对P2P网络提出的特殊需求、分布式查询模块对P2P网络模块提出的需求、随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求、高吞吐率分布式账本对P2P网络通信模块提出的安全性需求。
可选地,所述随机见证共识机制对P2P网络提出的特殊需求,包括:获取全网节点列表;所述分布式查询模块对P2P网络模块提出的需求,包括:查询内容、分发查询请求;所述随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求,包括:管理连接、统计流量;所述高吞吐率分布式账本对P2P网络通信模块提出的安全性需求,包括:保障通信过程中数据的私密性、防止外部节点加入网络。
可选地,分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求之后,还包括根据分析并整合的结果,将所述P2P网络通信模块按功能划分为:功能配置模块、Kad协议模块、NAT穿越模块、连接中继模块、低延迟加密通信模块、专用网模块、订阅与发布模块、连接管理流量统计模块、全网节点列表同步模块。
可选地,加载所述P2P网络通信模块的功能配置文件,包括:逐一地尝试加载所述功能配置文件,若发现某一个或多个所述功能配置文件不存在,则根据默认配置在当前路径生成相应的一个或多个功能配置文件。
可选地,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通,包括:首先,从配置文件中加载引导节点;然后,启动定时维护节点与网络联通性的程序,检查所述新节点与P2P网络中其它节点已经建立的连接数,若当前的连接数M少于配置中指定的最小连接数N,则从引导节点和K-Buckets中与自身节点唯一标识Node ID异或距离最近的N个节点的集合中随机选出N-M个节点,并与之建立连接,使所述新节点达到并至少保持最小连接数N,以此保证每个节点与P2P网络的联通性;最后,启动Kad协议的引导程序,所述引导程序每隔一定时间分别以本地节点的节点唯一标识Node ID和随机生成的节点唯一标识Node ID为目标,运行Kad协议,以保证自身K-Buckets中节点的时效性,并在K-Buckets中的节点数量小于设定的阈值时,及时地对K-Buckets进行填充,以此保持任一节点与所述P2P网络联通的时效性。
可选地,还包括:所述引导程序每隔指定的时间将执行一次连通性维护算法,通过与P2P网络中合适的节点保持至少N个连接来确保所述新节点与网络的连通性;所述合适的节点包括引导节点和异或距离较近的节点;其中,所述引导节点通常是比较稳定的节点,与所述新节点间的连接通常能保持较长时间;Kad协议引导程序定时以本地节点自身的节点唯一标识Node ID为目标进行查询,与相对于所述本地节点异或距离较近的节点进行通信,以降低通信延迟。
可选地,所述外部节点成为所述新节点之后,还包括:所述新节点订阅所述自定义的全网节点列表同步机制对应的主题,表示自己愿意接收P2P网络中关于所述主题的相关消息;P2P网络中每个节点定时向所述主题发布自身的心跳数据包;所述新节点从所述P2P网络中选择至少一个加入所述P2P网络时间最长的邻居节点,向所述邻居节点获取全网节点列表,并存储为所述新节点自身的全网节点列表;定时从每个节点自身的全网节点列表中清除已经掉线的节点的节点唯一标识Node ID。
可选地,还包括:所述P2P网络通信模块可以根据所述上层程序的调用,通过预先定义的接口,向所述上层程序提供网络层的服务,若上层程序调用Close接口,则相应的节点按照预先定义的逻辑退出所述P2P网络,并注销该节点的P2P网络相关服务。
本发明实施例还提供了一种面向高吞吐率分布式账本的P2P网络通信系统,所述系统具体包括:构建模块,用于针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块;初始化模块,用于加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块;引导模块,用于通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;同步模块,用于基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID;等待模块,所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
从上述技术方案可以看出,本发明实施例提供了一种面向高吞吐率分布式账本的P2P网络通信方法和系统,对基于随机见证共识机制的分布式账本的功能需求进行模块化分析,进而设计了一种P2P网络通信模块,在满足高吞吐率分布式账本基础功能需求的同时,通过预先设计的引导程序引导新节点的加入、保持网络中所有节点与P2P网络的连通性,同时,针对随机见证共识机制所需的全网节点列表的领域特定需求,设计了一种基于发布-订阅机制的全网节点列表同步机制,在节点同步过程中权衡节点更新的实时性与通讯开销,进一步优化P2P网络的通信功能和性能,进而满足基于随机见证共识机制的高吞吐率分布式账本对P2P网络通信模块的功能需求和安全性能要求。
附图说明
图1是一种DAG结构的图式账本区块组织结构示意图;
图2是一种基于随机见证共识机制的区块写入的运行示意图;
图3是本发明提供的一种面向高吞吐率分布式账本的P2P网络通信方法的步骤流程图;
图4是本发明实施例提供的一种P2P网络通信模块用况图;
图5是本发明实施例提供的一种P2P网络通信模块的功能模块图;
图6是本发明实施例提供的一种P2P网络通信模块的功能配置模块的UML类图;
图7是本发明实施例提供的一种P2P网络架构的示意图;
图8是本发明实施例提供的一种引导程序的工作流程图;
图9是本发明实施例提供的一种自定义的全网节点列表同步机制示意图;
图10是本发明实施例提供的一种全网节点列表同步机制相关类的UML图;
图11是本发明实施例中提供的所述P2P网络通信模块的总体流程设计图;
图12是本发明提供的一种面向高吞吐率分布式账本的P2P网络通信系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
分布式账本技术是一种去中心化的记录技术,其本质是一种在网络成员之间共享、复制和同步数据的分布式数据库。分布式账本由不同物理位置的节点共同维护,任意节点向该账本写入新数据时,均需遵循参与维护该账本的节点间事先约定好的共识机制。分布式账本的实现方式并不唯一,它们之间的区别主要在于区块的组织方式和节点间运行的共识机制。按区块的组织方式划分,分布式账本主要分为链式账本和图式账本两大类。
区块链是链式账本的代表,是由区块首尾相连拼接而成的链,由密码学进行串联并保护其中记录的数据。在区块链中写入新的区块时,需要运行POW(Proof of Work,工作量证明)共识机制,由全网所有的矿工节点通过计算来竞争新区块的记账权,最先计算出新区块哈希值的矿工则获得新区块的写入权,将新区块接入到全网最长的区块链的末尾,其它参与竞争的矿工节点的算力则被浪费掉。同时,基于POW共识机制的区块链,在产生新区块后需要向全网所有参与共识的节点转发完整的区块,随着节点规模的扩大,节点的带宽将成为瓶颈。
图1是一种DAG(Directed Acyclic Graph,有向无环图)结构的图式账本区块组织结构示意图,如图1所示,由于并非图式账本单链结构,所以可以同时写入多个新的区块,解决了链式结构不能并发产块的问题。
图2示出了一种基于随机见证共识机制的区块写入的运行示意图,参照图2所示,交易节点在生成新的区块时,从全网节点中随机选择3个节点作为见证节点,每个见证节点再随机选择2个节点作为备份节点,备份所述区块。由于随机见证共识机制在新的区块写入时,转发区块的节点数量大大减少,所以随机见证共识机制解决了POW共识机制的带宽瓶颈问题,进一步提高了分布式账本的全网TPS。相比较于基于POW共识机制的链式账本,基于随机见证共识机制的图式账本的数据量吞吐量得到了极大提高,因此,这种分布式账本对于底层的网络通信技术,也有了更高的要求。
实施例一
图3是本发明提供的一种面向高吞吐率分布式账本的P2P网络通信方法的步骤流程图。如图3所示,本发明实施例提供的方法可以应用于基于随机见证共识机制的高吞吐率分布式账本,具体的方法包括如下步骤:
步骤S101,针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块。
所述P2P网络通信模块位于高吞吐率分布式账本的最底层,为共识模块和分布式查询模块提供网络通信服务。
图4示出了本发明实施例提供的一种P2P网络通信模块用况图。所述P2P网络通信模块用于基于随机见证共识机制的高吞吐率分布式图式账本,图中示出了基于随机见证共识机制的高吞吐率分布式图式账本的功能需求,包括:发送块体、路由查询、连接指定节点、建立加密连接、查询内容、管理连接、统计流量、获取全网节点列表、订阅消息、广播块头、发布消息、分发查询请求等。
在本发明提供的一种优选实施例中,在实施步骤S101之前,分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求,包括:高吞吐率分布式账本对P2P网络通信模块提出的基础功能需求、随机见证共识机制对P2P网络提出的特殊需求、分布式查询模块对P2P网络模块提出的需求、随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求、高吞吐率分布式账本对P2P网络通信模块提出的安全性需求。其中,所述随机见证共识机制对P2P网络提出的特殊需求,包括:获取全网节点列表;所述分布式查询模块对P2P网络模块提出的需求:查询内容、分发查询请求;所述随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求:管理连接、统计流量;所述高吞吐率分布式账本对P2P网络通信模块提出的安全性需求,包括:保障通信过程中数据的私密性、防止外部节点加入网络。
图5示出了本发明实施例提供的一种P2P网络通信模块的功能模块图。参照图5所示,在本发明提供的一种优选实施例中,分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求之后,根据分析并整合的结果,将所述P2P网络通信模块按功能划分为:功能配置模块、Kad协议模块、NAT穿越模块、连接中继模块、低延迟加密通信模块、专用网模块、订阅与发布模块、连接管理流量统计模块、全网节点列表同步模块。具体地:
功能配置模块。Libp2p最大的特点就是它的模块化设计,不同的功能模块有固定的接口,并提供了多种实现。为了便于在不同的实现之间自由切换,提高P2P网络模块的可维护性和可扩展性,本文设计了配置功能。P2P网络的使用者只需通过配置和修改配置文件,就可以指定P2P网络应具备的功能以及各功能采用的具体实现方式。
Kad协议模块。Kad协议定义了P2P网络拓扑,并基于该拓扑实现了高效的路由查询和节点定位协议,能灵活的应对节点的加入和退出。全分布式结构化的拓扑使得整个网络中没有任何中心服务器,不会出现单点故障和性能瓶颈,且能有效抵御拒绝服务攻击。本文在Libp2p实现的Kad协议的基础上,对其中的路由查询过程进行优化,以降低查询所需的时间。
NAT穿越模块。P2P网络中的各个节点部署的环境是不同,由于IPv4地址短缺,许多节点将部署在具备NAT功能的网络设备之后。位于NAT之后的节点通常只被分配了内网IP地址,只有在需要通信时才会动态地分配临时的公网IP地址和端口号,导致外部节点无法事先得知与内网节点的IP地址和端口号,从而无法通信。因此,P2P网络必须具备穿透NAT的功能。
连接中继模块。NAT穿越技术无法穿透对称型NAT(Symmetric NAT),在这种情况下,位于对称型NAT设备后的两个节点只能通过中间节点来传输数据,这些作为中间人传递数据的节点称之为中继节点,这种节点间的连接方式则叫做连接中继。
低延迟加密通信模块。对于有的分布式账本来说,数据需在节点间安全高效的流通。
专用网模块。专用网指的是需要持有入网凭证才能加入的网络,网络成员之间的通信对外不可见。网络中的节点的IP地址既可以是公网IP,也可以是内网IP。有的P2P网络分布式账本是联盟账本,不允许非联盟成员的节点加入P2P网络,因此,联盟成员间需要建立专用网,提高网络的安全性。
订阅与发布模块(Pub-Sub)。该功能模块为节点提供了在P2P网络中订阅和发布消息的能力。基于Pub-Sub功能,可简单高效地实现全网节点列表的获取、区块头的广播、查询请求的分发等功能。
连接管理模块。分布式账本的节点之间通过网络进行通信,进而协作完成功能,节点之间的通信前必须建立加密连接。不同的功能对连接的要求不尽相同,有的功能不需要长连接,有的功能需要长连接,有的节点能够支持较多的连接,有的节点则只能支持少量连接等。因此,连接管理是不可或缺的功能。
流量统计模块。在系统测试和运维时,往往需要观察节点在每个连接上产生的流量,故P2P网络需对每个连接上的输入输出流量进行详细的统计。
全网节点列表同步模块。该功能模块主要为了支撑随机见证共识机制的实现,根据随机见证共识机制的特性,其需要在全网节点中随机选择见证节点和备份节点。因此,需要在P2P网络中实现全网节点列表同步的机制。但在大规模的P2P网络中进行全网节点列表的实时同步需要消耗大量的带宽资源,且随机见证共识机制对全网节点列表没有提出实时性的需求,故本发明实施例设计并实现的全网节点列表同步机制的功能是:为上层应用提供非实时的近似的网节点列表。
在本发明实施例中,所述P2P网络通信模块的基础功能配置,可根据实际应用进行调整。如基于libP2P的网络通信模块,可以对功能进行模块化的配置,再通过加载自定义的功能配置文件,初始化所述网络通信模块。
图6示出了本发明实施例提供的一种P2P网络通信模块的功能配置模块的UML类图。参照图6所示,在本发明实施例中,根据所述功能模块的划分,对功能配置模块进行设计,其核心功能配置模块类具体包括:
配置类Conf作为配置功能的聚合根,包含了其它与配置功能相关的类。
节点标识配置类Identity用于配置为节点的标识,包括唯一标识一个节点的节点唯一标识Node ID,以及用于对数据进行签名的私钥PrivKey。
地址配置类Addresses用于配置本地节点监听的地址和端口号;配置对外声明的地址和不对外声明的地址。
路由配置类Routing用于配置采用哪种P2P网络拓扑结构和路由协议。
交换配置类SwarmConfig用于指定需要过滤的地址;配置是否开启流量统计功能;配置是否开启NAT(Network Address Translation,网络地址转换)端口映射;配置是否开启连接中继功能;配置本地节点是否充当中继节点;配置连接是否加密;配置是否自动的充当其他节点的中继节点;配置是否向其它节点提供NAT自动检测服务。
连接管理器配置类ConnMgr用于配置连接管理功能的相关参数;指定采用那种连接管理功能的具体实现;指定连接数的低水位线,若连接数低于该值说明节点还能够接受更多的连接;指定连接数的上限,连接数超过该值说明节点不会接受更多的连接请求,并将裁剪部分连接,使连接数保持在低水位线附近;指定了容忍时间,当连接数超过低水位线时,将选择一部分连接作为待裁剪的连接,考虑到节点间建立连接后需要传输数据,因此,若某个待裁剪的连接的建立的时间还未超过指定的容忍时间,暂时不裁剪该连接。
发布订阅功能类PubSubConfig用于配置Pub-Sub(发布-订阅)功能:配置订阅发布机制中消息的路由方式;配置是否对收到的消息的签名进行严格的验证;配置是否开启对消息的签名。
其他选项类ExtraOpts用于配置是否开启Pub-Sub功能;配置是否开启连接的多重多路复用功能;配置是否优先使用QUIC协议作为节点间的通信协议;配置是否优先使用TLS协议作为加密协议。
此外,还包括在配置类中聚合的配置功能类还包括:
引导程序类Bootstrap,用于配置引导节点,这样做的目的是避免将引导节点硬编码在代码中,使得每个节点可以配置不同的节点作为自己的引导节点。
密钥集群类SwarmKey,用于指定一个文件路径,该文件中存储着专用网的入网凭证。网络的成员通过共用同一份入网凭证,从而建立起专用网。节点间通信时会校验对方是否持有与自己相同的入网凭证,从而防止外部节点加入网络。
在本发明提供的一种优选实施例中,基于开源的LibP2P框架,构建P2P网络,以实现功能模块化。
在本发明提供的一种优选实施例中,所述P2P网络采用KAD(Kademlia)网络,所述KAD网络是使用基于DHT(Distributed Hash Table,分布式散列表)的KAD协议的P2P网络,在资源的发现和定位的效率上表现优异。Kad协议规定每一个节点通过一个一定长度的散列值作为唯一标识,可以视作节点的PeerID,即,节点唯一标识Node ID。当任意节点A需要与任意节点B进行通信时,都必须以节点A为发起点,在P2P网络中运行Kad协议,根据节点B的节点唯一标识Node ID查询节点B的IP地址和端口号。当节点A获得了节点B的IP地址和端口号后,方可与之进行通信。
步骤S102,加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块。
在本发明提供的一种优选实施例中,逐一地尝试加载所述功能配置文件,若发现某一个或多个所述功能配置文件不存在,则根据默认配置在当前路径生成相应的一个或多个功能配置文件。
在本发明实施例中,加载P2P网络通信模块的功能配置文件之后,根据所述功能配置文件的内容,完成对通用基础功能的初始化。节点的身份信息Identity随配置文件生成,其中,PeerID(Node ID)是对整个P2P网络中特定节点的唯一引用,私钥PrivKey则用于对数据进行签名,它们由工具方法随机身份生成模块MakeRandomIdentity生成。PeerID不仅充当每个节点的唯一标识,而且与其公钥Pubkey之间存在可验证的关系。每个节点都有一个私钥,私钥对其它节点都保密。每个私钥都有一个对应的公钥,公钥与其它节点共享。公钥和私钥一起使得节点之间可以建立安全的通信通道。PeerID是节点公钥的加密散列,当与其它节点建立安全通信通道时,可以使用该散列来验证用于保护通信通道的公共密钥与用于标识节点的公共密钥相同。
步骤S103,通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络,同时,通过所述引导程序保持任意节点与所述P2P网络的联通。
图7是本发明实施例提供的一种P2P网络架构的示意图。如图7所示,本发明实施例将某一特定时刻,在所述外部节点的视角中,P2P网络中的其它节点分为三类:
1.引导节点。在Kad网络中,新的节点为了加入网络,需指定网络中已知的某些节点作为自己的引导节点,并通过引导节点逐步发现网络中的其它节点。网络中的任何一个节点都具备引导节点的功能。参照图7所示,外部节点A将节点B和节点C作为自己的引导节点,从而加入该P2P网络。节点A顺利加入网络后,节点B和节点C在节点A的视角中与普通节点一致。
2.中继节点。每个节点通常部署在不同的物理机器上,有的节点部署在具有公网IP地址的机器上,有的节点则部署在位于NAT设备之后的机器上。图7中的节点A、D、F部署在NAT设备之后,没有自己独享的公网IP。这时,外部节点想要与节点A进行通信,需要节点A穿透NAT。对于引导节点B和C来说,节点A主动与之进行通信,因此不存在NAT穿透的问题;对于情况相同的节点D来说,若想与节点A通信,则必须和A一样完成NAT穿透;对于节点F,其位于无法穿透的NAT之后。这种情况下,若节点A与F之间想要通信,就必须选择一个双方都能连接的节点作为中继节点(图中为节点E),通过该中继节点转发各自的数据,从而达到通信的目的。通信结束后,节点E在节点A的视角中与普通节点一致。
3.普通节点。在节点A的视角中,除引导节点和中继节点外的其它节点均为普通节点。
在本发明实施例中,所述引导程序需要实现的功能包括:引导外部节点加入P2P网络、确保任意节点与P2P网络的联通性。
基于步骤S101,所述P2P网络采用全分布式结构化拓扑Kad,在Kad网络中,新节点加入网络的标志是该节点获知了部分散列表,从而有能力通过这个散列表获取网络中其它节点的信息,引导节点加入P2P网络,即,引导节点加入KAD网络。
同样的,基于步骤S101,由于基于随机见证共识机制的分布式账本P2P网络提出了全网节点同步的特殊需求,本发明实施例中设计的全网节点同步机制,依赖于P2P网络消息的订阅发布机制。而保持P2P网络的联通性,对于订阅发布机制的实现是至关重要的。在理想情况下,订阅发布机制希望P2P网络中的任意两个节点间存在连接通路。节点A和节点B存在连通路指的是节点A能够将消息传达给节点B,节点B也能将消息传达给节点A,消息直接通过节点A和节点B之间已有的连接进行传输,或者通过中间节点转发。在P2P网络消息的订阅与发布机制中,若发布消息M的节点A和订阅消息M的节点B之间不存在连接通路,则节点A发布的消息将无法传递给节点B,使得订阅与发布机制失效。然而,在大规模的P2P网络中试图保证任意两个节点之间的联通性的开销巨大且没有必要,故引导程序只需确保任意节点与P2P网络的联通性。
图8是本发明实施例提供的一种引导程序的工作流程图。参照图8所示,在本发明提供的一种优选实施例中,第一步,从配置文件中加载引导节点;第二步,判断是否配置引导节点,若是,则进入第三步,否则结束引导程序;第三步,启动定时维护节点与网络联通性的程序,检查所述外部节点与P2P网络中其它节点已经建立的连接数,若当前的连接数M少于配置中指定的最小连接数N,则从引导节点和K-Buckets中与自身节点唯一标识Node ID异或距离最近的N个节点的集合中随机选出N-M个节点,并与之建立连接,使所述外部节点达到并至少保持最小连接数N,以此保证每个节点与P2P网络的联通性;第四步,启动Kad协议的引导程序,所述引导程序每隔一定时间分别以本地节点的节点唯一标识Node ID和随机生成的节点唯一标识Node ID为目标,运行Kad协议,以保证自身K-Buckets中节点的时效性,并在K-Buckets中的节点数量小于设定的阈值时,及时地对K-Buckets进行填充,以此保持任意节点与所述P2P网络联通的时效性;第五步,结束所述引导程序。
表1是本发明实施例提供的一种引导程序中的网络连通性维护算法。
表1
Figure BDA0002608876500000141
Figure BDA0002608876500000151
如表1所示,首先获取本地节点的节点唯一标识Node ID,根据所述节点唯一标识Node ID,获取与本地节点距离最近的节点,同时获取与本地节点已经建立了连接的节点,检查候选节点的集合candidatePeers中是否存在未连接的节点,随机选择至少一个未连接节点进行连接,其中,超时时间由配置设定。
表2示出了本发明实施例中提供的一种所述引导程序中连通性维护算法的配置参数:
表2
Figure BDA0002608876500000152
参照表2所示,连通性维护算法的配置参数包括:节点与P2P网络的最小连接数,连接数小于该数值时需要进行补充;时间间隔,定时检查本地节点与P2P网络中其它节点之间的连接数;发起连接后的最长等待时间;引导节点的列表。
所述引导程序每隔指定的时间将执行一次连通性维护算法,通过与P2P网络中合适的节点保持至少N个连接来确保所述新节点与网络的连通性;所述合适的节点包括引导节点和异或距离较近的节点;其中,所述引导节点通常是比较稳定的节点,与所述新节点间的连接通常能保持较长时间;Kad协议引导程序定时以本地节点自身的节点唯一标识NodeID为目标进行查询,与相对于所述本地节点异或距离较近的节点进行通信,以降低通信延迟。
步骤S104,基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID。
随机见证共识机制在选择见证节点和备份节点时,需获取全网节点的列表。列表包含的节点越全,随机性越强。同时,P2P网络规模越大,同步越困难,开销也越大。现有的节点同步方案是在P2P网络中设置一个用于同步节点列表的中心服务器,由所有节点定时向该中心服务器发送心跳数据包,并定时向其获取最新的全网节点列表,但是这种中心化的设计容易导致单点故障和性能瓶颈:当中心服务器因各种原因而宕机时,整个网络将无法获取最新的节点列表,使得随机见证共识机制无法运行;而当节点规模扩大时,中心服务器将不堪重负,实质上等同于全网所有节点对中心服务器发起了分布式拒绝服务攻击。
图9是本发明实施例提供的一种自定义的全网节点列表同步机制示意图。参照图9所示,本发明实施例利用消息的订阅与发布机制,在带宽开销较小的前提下,设计了一个无中心服务器的、去中心化的全网节点列表同步机制。在本发明实施例中,接受所述新节点的连接请求之后,具体包括如下步骤:
1.新节点订阅所述自定义的全网节点列表同步机制对应的主题,表示自己愿意接收P2P网络中关于所述主题的相关消息。当网络中有其它节点发布了关于主题的心跳消息时,会转发给新节点,由于新节点订阅了主题,将接收并处理该消息。
2.P2P网络中每个节点定时向所述主题发布自身的心跳数据包。由于全网节点列表是节点节点唯一标识Node ID的列表,因此,心跳数据包的数据内容携带节点自身的节点唯一标识Node ID。同时,为了避免当节点规模较大时心跳数据包占用带宽较大的问题,节点会根据当前收到的不同节点的心跳数据包的数量动态地调整发送心跳数据包的间隔,使心跳数据包占用的网络带宽维持在某一恒定的数值。
3.新节点向所述P2P网络中至少一个原有的节点获取全网节点列表,并存储为新节点自身的全网节点列表。每个节点在加入网络后,都会与部分节点建立连接,这些节点称之为邻居节点。在与邻居节点建立连接时,新节点会知晓邻居节点加入P2P网络的时间,因此,节点将从邻居节点中选择至少一个加入P2P网络时间最长的“老”节点,获取“老”节点所知道的全网节点的列表,从而快速地获得较为全面的全网节点列表信息。假设当前心跳数据包的间隔为20分钟,若所述外部节点不向“老”节点获取全网节点列表,那么,新节点将需要花费至少20分钟的时间,才能收到所有节点的心跳数据包;若新节点的一个邻居节点已经加入网络10分钟,在节点启动时间随机的前提下,该邻居节点所知晓的全网节点列表中的节点数量约占全网节点总数的一半,若新节点向该“老”邻居节点获取全网节点列表,将直接知晓全网约一半的节点的节点唯一标识Node ID;若新节点的一个邻居节点已经加入网络超过20分钟,则该邻居节点几乎拥有全网所有节点的节点唯一标识Node ID,其知晓的全网节点列表接近真实的全网节点列表,新节点向该“老”邻居节点可以直接获取到该列表。因此,该过程能够大大加速新节点的冷启动过程。
4.定时从每一个节点自身的全网节点列表中清除已经掉线的节点的节点唯一标识Node ID。在分布式账本的P2P网络中,参与记账的节点身份往往是已知的,且可以认为是非常可靠的,但不可避免地会出现节点宕机的问题。当节点宕机后,将不再定时向主题H中发布带有自己节点唯一标识Node ID的心跳数据包,所以每个节点需定时从自己的全网节点列表中清理未及时发送心跳数据包的节点的节点唯一标识Node ID,以尽可能的保证列表中的节点处于在线状态。
图10是本发明实施例提供的一种全网节点列表同步机制相关类的UML图。
P2P主机类P2PHost用于启动本节点的全网节点同步机制;获取当前已知的全网节点节点唯一标识Node ID列表;实现向“老”节点获取全网节点列表的功能。
路由主机类RoutedHost用于实现Libp2p的Host接口和Kad协议;调用与外部节点进行通信的相关功能;为特定的协议绑定特定的处理程序;根据节点唯一标识Node ID与指定的节点建立连接并运行指定的协议。
交换器类Swarm用于实现Network接口;负责监听、发起连接请求以及对连接进行复用。
心跳数据包通知类hbNotifee用于实现Libp2p的Notifee接口。用于在节点与P2P网络中任意节点建立连接后,通过通道connected通知其它子程序。
发布-订阅类PubSub是Libp2p用于实现的消息的订阅与发布机制;订阅指定的主题,从而使得节点能够从P2P网络中接收其他节点发布的关于某主题的消息;向指定的主题发布消息。
订阅类Subscription用于实现对某个主题相关消息的订阅功能;从P2P网络中获取关于该主题的新的消息。
步骤S105,所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
在本发明提供的一种优选实施例中,所述P2P网络通信模块可以根据所述上层程序的调用,通过预先定义的接口,向所述上层程序提供网络层的服务,若上层程序调用Close接口,则相应的节点按照预先定义的逻辑退出所述P2P网络,并注销该节点的P2P网络相关服务。
图11是本发明实施例中提供的所述P2P网络通信模块的总体流程设计图。参照图11所示,第一步,加载配置文件;第二步,判断配置文件是否存在,是则进入第三步,否则生成默认配置文件,再进入第三步;第四步,根据配置文件中的配置内容,初始化P2P网络通信模块;第五步,启动监听网络连接;第六步,启动引导程序,通过引导程序,接受外部节点的加入,成为P2P网络中的新节点,并通过所述引导程序,使包括新节点在内的任一节点保持与P2P网络的连接;第七步,启动自定义的全网节点列表同步机制,基于自定义的全网节点列表同步机制,使新节点获得全网节点列表,并通过订阅-发布机制,保持网络中所有节点自身的全网节点列表的时效性;第八步,所述P2P网络通信模块等待分布式账本上层程序的调用即可,若调用close,则执行预定义的关闭逻辑,注销该节点的P2P网络相关服务;第九步,结束P2P网络通信流程。
可以看出,本发明提供的上述方法实施例,对基于随机见证共识机制的分布式账本的功能需求进行模块化分析,进而设计了一种P2P网络通信模块,在满足高吞吐率分布式账本基础功能需求的同时,通过预先设计的引导程序引导新节点的加入、保持网络中所有节点与P2P网络的连通性,同时,针对随机见证共识机制所需的全网节点列表的领域特定需求,设计了一种基于发布-订阅机制的全网节点列表同步机制,在节点同步过程中权衡节点更新的实时性与通讯开销,进一步优化P2P网络的通信功能和性能,进而满足基于随机见证共识机制的高吞吐率分布式账本对P2P网络通信模块的功能需求和安全性能要求。
实施例二
图12是本发明提供的一种面向高吞吐率分布式账本的P2P网络通信系统的结构框图。如图12所示,本发明实施例提供的系统可以应用于基于随机见证共识机制的高吞吐率分布式账本,具体的系统包括:
构建模块201,用于针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块。
初始化模块202,用于加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块;
引导模块203,用于通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;
同步模块204,用于基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID;
等待模块205,所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
可以看出,本发明提供的上述系统实施例,对基于随机见证共识机制的分布式账本的功能需求进行模块化分析,进而设计了一种P2P网络通信模块,在满足高吞吐率分布式账本基础功能需求的同时,通过预先设计的引导程序引导新节点的加入、保持网络中所有节点与P2P网络的连通性,同时,针对随机见证共识机制所需的全网节点列表的领域特定需求,设计了一种基于发布-订阅机制的全网节点列表同步机制,在节点同步过程中权衡节点更新的实时性与通讯开销,进一步优化P2P网络的通信功能和性能,进而满足基于随机见证共识机制的高吞吐率分布式账本对P2P网络通信模块的功能需求和安全性能要求。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种面向高吞吐率分布式账本的P2P网络通信方法和一种面向高吞吐率分布式账本的P2P网络通信系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种面向高吞吐率分布式账本的P2P网络通信方法,其特征在于,所述方法包括:
针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块;
加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块;
通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;
基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID;
所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
2.根据权利要求1所述的方法,其特征在于,针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块之前,还包括:
分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求,包括:高吞吐率分布式账本对P2P网络通信模块提出的基础功能需求、随机见证共识机制对P2P网络提出的特殊需求、分布式查询模块对P2P网络模块提出的需求、随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求、高吞吐率分布式账本对P2P网络通信模块提出的安全性需求。
3.根据权利要求2所述的方法,其特征在于,
所述随机见证共识机制对P2P网络提出的特殊需求,包括:获取全网节点列表;
所述分布式查询模块对P2P网络模块提出的需求,包括:查询内容、分发查询请求;
所述随机见证共识机制与分布式查询模块对P2P网络模块提出的共同需求,包括:管理连接、统计流量;
所述高吞吐率分布式账本对P2P网络通信模块提出的安全性需求,包括:保障通信过程中数据的私密性、防止外部节点加入网络。
4.根据权利要求2或3所述的方法,其特征在于,分析并整合所述高吞吐率分布式账本对P2P网络通信模块提出的需求之后,还包括:
根据分析并整合的结果,将所述P2P网络通信模块按功能划分为:功能配置模块、Kad协议模块、NAT穿越模块、连接中继模块、低延迟加密通信模块、专用网模块、订阅与发布模块、连接管理流量统计模块、全网节点列表同步模块。
5.根据权利要求1所述的方法,其特征在于,加载所述P2P网络通信模块的功能配置文件,包括:
逐一地尝试加载所述功能配置文件,若发现某一个或多个所述功能配置文件不存在,则根据默认配置在当前路径生成相应的一个或多个功能配置文件。
6.根据权利要求1所述的方法,其特征在于,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通,包括:
首先,从配置文件中加载引导节点;然后,启动定时维护节点与网络联通性的程序,检查所述新节点与P2P网络中其它节点已经建立的连接数,若当前的连接数M少于配置中指定的最小连接数N,则从引导节点和K-Buckets中与自身节点唯一标识Node ID异或距离最近的N个节点的集合中随机选出N-M个节点,并与之建立连接,使所述新节点达到并至少保持最小连接数N,以此保证每个节点与P2P网络的联通性;最后,启动Kad协议的引导程序,所述引导程序每隔一定时间分别以本地节点的节点唯一标识Node ID和随机生成的节点唯一标识Node ID为目标,运行Kad协议,以保证自身K-Buckets中节点的时效性,并在K-Buckets中的节点数量小于设定的阈值时,及时地对K-Buckets进行填充,以此保持任一节点与所述P2P网络联通的时效性。
7.根据权利要求6所述的方法,其特征在于,还包括:
所述引导程序每隔指定的时间将执行一次连通性维护算法,通过与P2P网络中合适的节点保持至少N个连接来确保所述新节点与网络的连通性;所述合适的节点包括引导节点和异或距离较近的节点;其中,所述引导节点通常是比较稳定的节点,与所述新节点间的连接通常能保持较长时间;Kad协议引导程序定时以本地节点自身的节点唯一标识Node ID为目标进行查询,与相对于所述本地节点异或距离较近的节点进行通信,以降低通信延迟。
8.根据权利要求1所述的方法,其特征在于,所述外部节点成为所述新节点之后,还包括:
所述新节点订阅所述自定义的全网节点列表同步机制对应的主题,表示自己愿意接收P2P网络中关于所述主题的相关消息;P2P网络中每个节点定时向所述主题发布自身的心跳数据包;所述新节点从所述P2P网络中选择至少一个加入所述P2P网络时间最长的邻居节点,向所述邻居节点获取全网节点列表,并存储为所述新节点自身的全网节点列表;定时从每个节点自身的全网节点列表中清除已经掉线的节点的节点唯一标识Node ID。
9.根据权利要求1所述的方法,其特征在于,还包括:
所述P2P网络通信模块可以根据所述上层程序的调用,通过预先定义的接口,向所述上层程序提供网络层的服务,若上层程序调用Close接口,则相应的节点按照预先定义的逻辑退出所述P2P网络,并注销该节点的P2P网络相关服务。
10.一种面向高吞吐率分布式账本的P2P网络通信系统,其特征在于,所述系统包括:
构建模块,用于针对所述高吞吐率分布式账本的P2P网络,预先设计并构建P2P网络通信模块;
初始化模块,用于加载所述P2P网络通信模块的功能配置文件,根据所述功能配置文件,初始化所述P2P网络通信模块;
引导模块,用于通过监听所述P2P网络中指定的端口号,监听所述P2P网络的连接状态,以接受或拒绝外部节点的连接请求,若接受所述外部节点的连接请求,则通过预先设计的引导程序,使所述外部节点与指定的引导节点进行通信,进而加入所述P2P网络成为新节点,同时,通过所述引导程序使任一节点与所述P2P网络保持联通;
同步模块,用于基于自定义的全网节点列表同步机制,所述新节点定时向网络中其它节点发送心跳数据包,并订阅所述其它节点的心跳数据包消息,用以同步全网节点列表,所述心跳数据包携带每一个节点自身的节点唯一标识Node ID;
等待模块,所述P2P网络通信模块等待所述高吞吐率分布式账本的上层程序的调用。
CN202010747527.6A 2020-07-29 2020-07-29 一种面向高吞吐率分布式账本的p2p网络通信方法和系统 Active CN112055048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010747527.6A CN112055048B (zh) 2020-07-29 2020-07-29 一种面向高吞吐率分布式账本的p2p网络通信方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010747527.6A CN112055048B (zh) 2020-07-29 2020-07-29 一种面向高吞吐率分布式账本的p2p网络通信方法和系统

Publications (2)

Publication Number Publication Date
CN112055048A true CN112055048A (zh) 2020-12-08
CN112055048B CN112055048B (zh) 2022-09-06

Family

ID=73602201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010747527.6A Active CN112055048B (zh) 2020-07-29 2020-07-29 一种面向高吞吐率分布式账本的p2p网络通信方法和系统

Country Status (1)

Country Link
CN (1) CN112055048B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783983A (zh) * 2021-02-07 2021-05-11 中国人民解放军国防科技大学 基于主副区块图链结构区块链账本设计的自适应共识方法
CN113347268A (zh) * 2021-06-23 2021-09-03 广州炒米信息科技有限公司 基于分布式网络组网方法、装置、存储介质及计算机设备
CN115022392A (zh) * 2022-06-24 2022-09-06 浪潮软件集团有限公司 面向iot的分布式发布订阅服务方法和系统
CN115314510A (zh) * 2022-07-29 2022-11-08 北京智融云河科技有限公司 区块链节点的同步方法、装置、电子设备和存储介质
CN115834594A (zh) * 2022-11-16 2023-03-21 贵州电网有限责任公司 一种用于改善高性能计算应用的数据收集方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1953413A (zh) * 2006-09-13 2007-04-25 华中科技大学 一种流媒体直播系统中控制流的树形网络组织方法
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步系统、同步方法和节点管理方法
CN109995610A (zh) * 2019-03-06 2019-07-09 浙江天脉领域科技有限公司 一种模拟生物神经形态的对等网络底层通信系统
CN110046521A (zh) * 2019-04-24 2019-07-23 成都派沃特科技股份有限公司 去中心化隐私保护方法
WO2019229612A1 (en) * 2018-05-28 2019-12-05 PERSURICH, Christian Fabio Method, architecture and devices for the realization of an encrypted communication protocol of encrypted data packets named 'transport encrypted protocol' (tep)
CN111372100A (zh) * 2020-04-21 2020-07-03 白杨 一种基于分布式选举的端到端内容分发网络系统和分发方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1953413A (zh) * 2006-09-13 2007-04-25 华中科技大学 一种流媒体直播系统中控制流的树形网络组织方法
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步系统、同步方法和节点管理方法
WO2019229612A1 (en) * 2018-05-28 2019-12-05 PERSURICH, Christian Fabio Method, architecture and devices for the realization of an encrypted communication protocol of encrypted data packets named 'transport encrypted protocol' (tep)
CN109995610A (zh) * 2019-03-06 2019-07-09 浙江天脉领域科技有限公司 一种模拟生物神经形态的对等网络底层通信系统
CN110046521A (zh) * 2019-04-24 2019-07-23 成都派沃特科技股份有限公司 去中心化隐私保护方法
CN111372100A (zh) * 2020-04-21 2020-07-03 白杨 一种基于分布式选举的端到端内容分发网络系统和分发方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783983A (zh) * 2021-02-07 2021-05-11 中国人民解放军国防科技大学 基于主副区块图链结构区块链账本设计的自适应共识方法
CN113347268A (zh) * 2021-06-23 2021-09-03 广州炒米信息科技有限公司 基于分布式网络组网方法、装置、存储介质及计算机设备
CN115022392A (zh) * 2022-06-24 2022-09-06 浪潮软件集团有限公司 面向iot的分布式发布订阅服务方法和系统
CN115022392B (zh) * 2022-06-24 2024-04-30 浪潮软件集团有限公司 面向iot的分布式发布订阅服务方法和系统
CN115314510A (zh) * 2022-07-29 2022-11-08 北京智融云河科技有限公司 区块链节点的同步方法、装置、电子设备和存储介质
CN115314510B (zh) * 2022-07-29 2024-04-05 北京智融云河科技有限公司 区块链节点的同步方法、装置、电子设备和存储介质
CN115834594A (zh) * 2022-11-16 2023-03-21 贵州电网有限责任公司 一种用于改善高性能计算应用的数据收集方法
CN115834594B (zh) * 2022-11-16 2024-04-19 贵州电网有限责任公司 一种用于改善高性能计算应用的数据收集方法

Also Published As

Publication number Publication date
CN112055048B (zh) 2022-09-06

Similar Documents

Publication Publication Date Title
CN112055048B (zh) 一种面向高吞吐率分布式账本的p2p网络通信方法和系统
CN108650182B (zh) 网络通信方法、系统、装置、设备及存储介质
CN112511611B (zh) 节点集群的通信方法、装置、系统及电子设备
EP1561333B1 (en) Network traffic control in peer-to-peer environments
US7978631B1 (en) Method and apparatus for encoding and mapping of virtual addresses for clusters
Traversat et al. Project JXTA 2.0 super-peer virtual network
US7859992B2 (en) Router redundancy in data communication networks
US20150003296A1 (en) System and method for providing p2p based reconfigurable computing and structured data distribution
CN109474936B (zh) 应用于多个lora网关之间的物联网通讯方法及系统
EP2056563B1 (en) Peer-to-peer network
US20130198332A1 (en) Processing method, proxy processing agent, system and method for filling a routing table of a dht client node, router and dht client node
US9191219B2 (en) Network multicast peer discovery methods
US10637794B2 (en) Resource subscription method, resource subscription apparatus, and resource subscription system
JP2005514867A (ja) ネットワーク環境におけるピアツーピア通信のための方法およびシステム
CN101277248A (zh) 一种网络数据分发方法及系统
EP3095229B1 (en) Method and nodes for configuring a communication path for a media service
CN113259460B (zh) 跨链交互方法及装置
US10291607B1 (en) Providing real-time events to applications
US20210368006A1 (en) Request response method, device, and system applied to bit torrent system
Banno et al. Interworking layer of distributed MQTT brokers
Vashishth et al. Addressing challenges in browser based P2P content sharing framework using WebRTC
CN112732775A (zh) 区块节点数据的处理方法、装置、计算机设备和存储介质
JP5272731B2 (ja) P2pデータ配信システム、p2pデータ配信方法、及びp2pデータ配信プログラム
Toth Design of a social messaging system using stateful multicast
EP3910880A1 (en) Blockchain based device monitoring

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
GR01 Patent grant
GR01 Patent grant