P2P网络

设计目标

FISCO-BCOS P2P模块提供高效、通用和安全的网络通信基础功能,支持区块链消息的单播、组播和广播,支持区块链节点状态同步,支持多种协议。

P2P主要功能

  • 区块链节点标识

通过区块链节点标识唯一标识一个区块链节点,在区块链网络上通过区块链节点标识对区块链节点进行寻址

  • 管理网络连接

维持区块链网络上区块链节点间的TCP长连接,自动断开异常连接,自动发起重连

  • 消息收发

在区块链网络的区块链节点间,进行消息的单播、组播或广播

  • 状态同步

在区块链节点间同步状态

区块链节点标识

区块链节点标识由ECC算法的公钥生成,每个区块链节点必须有唯一的ECC密钥对,区块链节点标识在区块链网络中唯一标识一个区块链节点

通常情况下,一个节点要加入区块链网络,至少要准备三个文件:

  • node.key 节点密钥,ECC格式
  • node.crt 节点证书,由CA颁发
  • ca.crt CA证书,CA机构提供

区块链节点除了有唯一区块链节点标识,还能关注Topic,供寻址使用

区块链节点寻址:

  • 区块链节点标识寻址

通过区块链节点标识,在区块链网络中定位唯一的区块链节点

  • Topic寻址

通过Topic,在区块链网络中定位一组关注该Topic的节点

管理网络连接

区块链节点间,会自动发起和维持TCP长连接,在系统故障、网络异常时,主动发起重连

区块链节点间建立连接时,会使用CA证书进行认证

连接建立流程

../../../_images/session_connection.png连接建立流程

消息收发

区块链节点间消息支持单播、组播和广播

  • 单播,单个区块链节点向单个区块链节点发送消息,通过区块链节点标识寻址
  • 组播,单个区块链节点向一组区块链节点发送消息,通过Topic寻址
  • 广播,单个区块链节点向所有区块链节点发送消息

单播流程

../../../_images/unicast.png单播流程

组播流程

../../../_images/multicast.png组播流程

广播流程

../../../_images/broadcast.png广播流程

状态同步

每个节点会维护自身的状态,并将状态的Seq在全网定时广播,与其它节点同步

../../../_images/sync_status.png状态同步