美文网首页
以太坊节点间通信

以太坊节点间通信

作者: teeth | 来源:发表于2018-06-08 18:24 被阅读0次

go版本的ethereum源码:分析接收相邻节点发来的数据

Peer的run函数会开一个线程执行读取相邻节点发过来的数据

Peer的run函数

Peer struct代表与特定相邻节点的连接,与该节点数据的通信都是通过这个Peer结构来做的,Peer有rw *conn,读写数据即通过它。

Peer的readLoop函数

不同协议的数据读写统一都是由p.rw.ReadMsg来做p.rw是conn类型。

conn执行的ReadMsg的实现是:

rlpxFrameRw的ReadMsg函数 Peer的handle函数

收到的协议相关的数据由default处理(见上图),先根据msg.Code找到收到的数据对应的协议对应的protoRW,然后将msg传给protoRW的in通道。注意这个protoRW结构,它是用来控制协议级别数据的通信(有p2p.Protocol这个成员),之前的Peer的rw是控制节点这个级别的数据通信。

Peer的protoRW是在节点间连接时设置的,本地节点和每个远程节点建立连接执行newPeer函数时,会执行matchProtocols函数根据本地节点支持的协议和远程节点支持的协议共有的部分生成map[string]*protoRW。

matchProtocols函数 newPeer函数

rw.in通道里的数据是通过调用protoRW的ReadMsg函数取出来的。

protoRW的ReadMsg函数

注意Peer的readLoop函数中执行的p.rw.ReadMsg()和ProtocolManager的handleMsg函数中执行的p.rw.ReadMsg实际不是同一个实现函数,前者是rlpxFrameRW的ReadMsg函数,后者是protoRW的ReadMsg函数。

相关文章

  • 以太坊节点间通信

    go版本的ethereum源码:分析接收相邻节点发来的数据 Peer的run函数会开一个线程执行读取相邻节点发过来...

  • 以太坊源码分析--p2p节点发现

    p2p(peer to peer)负责以太坊节点间的通信,主要包括底层节点发现(discover)和上层协议运行两...

  • 以太坊源码资料

    https://www.jianshu.com/p/64f55172b08f 以太坊节点间通信和数据交互分析htt...

  • 以太坊节点间通信和数据交互分析

    以太坊节点间通信是指本地节点和peer节点之间的按照p2p线上协议标准实现的数据收发过程。其中peer节点从发现协...

  • 以太坊中的chainService分析

    在 <以太坊节点间通信和数据交互分析> 一文中,介绍了service层,protocol层和network层,其中...

  • 以太坊-相关

    Infura-托管的以太坊节点集群 Infura是一个托管的以太坊节点集群,可以将你开发的以太坊智能合约部署到in...

  • 以太坊源码2-rlpx

    在前一章讲了以太坊p2p网络的节点发现协议(discv4),这一章主要讲以太坊的加密通信协议(rlpx)。rlpx...

  • 《对以太坊节点远程调用添加验证保护》

    Tag:Ethereum、nginx、basic auth、rpc 配置以太坊节点 Ubuntu 平台安装以太坊 ...

  • 以太坊接口应用开发JSON-RPC协议

    以太坊应用开发接口指的是以太坊节点软件提供的API接口,去中心化应用可以利用这个接口访问以太坊上的智能合约。以太坊...

  • Geth介绍及如何运行以太坊节点

    在本文中,我们将看看以太坊节点是什么,并探索最受欢迎的节点之一,称为Geth。 为了与区块链进行通信,我们必须使用...

网友评论

      本文标题:以太坊节点间通信

      本文链接:https://www.haomeiwen.com/subject/ukwasftx.html