以太坊(ethereum)实现研究

p2p通信协议族的结构设计

2018-04-16  本文已影响11人  古则

之前的文章中出现了多处有关p2p通信协议的结构类型,比如eth.peer,p2p.Peer,Server等等。这里不妨对这些p2p通信协议族的结构一并作个总解。以太坊中用到的p2p通信协议族的结构类型,大致可分为三层:

image.png

诸如以太坊这种去中心化的数字货币运行系统,天生适用p2p通信架构。不过原理虽然简单,在系统架构的层面,依然有很多实现细节需要加以关注。

  1. eth.ProtocolManager中,会对每一个远端peer发起主动传输数据的操作,这组操作按照数据类型区分,可分为交易和区块;而若以发送数据方式来区分,亦可分为广播单项数据,和同步一组同类型数据。这样两两配对,即可形成4组主动传输数据的操作。
  2. ProtocolManager通过在p2p.Protocol{}对象中埋入回调函数,可以对远端peer的任何事件及状态更新作出响应。这些Protocol对象,会由p2p.Server传递给每一个新连接上的远端peer。
  3. 以太坊目前实现的p2p通信协议族的结构类型中,按照功能和作用,可分为三层:顶层pkg eth中的类型直接服务于当前以太坊系统(Ethereum,ProtocolManager等模块),中间层pkg p2p是泛化结构类型,底层包括golang语言包自带的pkg net, syscall等,封装了网络层和传输层协议的系统实现。
上一篇下一篇

猜你喜欢

热点阅读