【区块链 | 智能合约】Ethereum源代码(5)- P2P网络启动

p2p源码目录

discover/          基于UDP的节点发现V4协议
  discv5/            节点发现V5协议
  enode/             节点信息
  enr/               以太坊节点记录(ethereum node records)
  nat/               网络地址转换,用于内网穿透
  netutil/
  protocol/
  simulations/       本地p2p网络的模拟器
  dial.go            建立连接请求,以任务的形式 
  message.go         定义了读写的接口
  metrics.go         计时器和计量器工具
  peer.go            节点
  protocol.go        子协议
  rlpx.go            加密传输协议 
  server.go          底层p2p网络的函数入口

启动p2p网络

启动p2p网络主要会做以下几件事:

  1. 发现远程节点,建立相邻节点列表
  2. 监听远程节点发过来的建立TCP请求
  3. 向远程节点发送建立TCP连接请求

首先找到p2p网络启动的入口:

Start()

start函数主要做了以下6件事:

  1. 初始化server的字段
  2. 设置本地节点setupLocalNode
  3. 设置监听TCP连接请求setupListening
  4. 设置节点发现(setupDiscovery)V4版本
  5. 设置最大可以主动发起的连接为50/3
  6. srv.run(dialer) 发起建立TCP连接请求

其中setupLocalNode、setupListening、setupDiscovery、

猜你喜欢

转载自blog.csdn.net/qq_28505809/article/details/127890216