主页 > 怎么在华为下imtoken > 以太坊源码分析---go-ethereum的p2p通信分析(一)
以太坊源码分析---go-ethereum的p2p通信分析(一)
本文csdn博客链接为:git
本文QQ空间链接为:
先介绍一篇文章,里面还介绍了以太坊p2p通信,github
这篇文章写得非常好。 对以太坊源码的分析也很到位,代码框架表达的很清楚。 春天
那为什么我还要写这个源码分析呢? 在分析源码的同时以太坊网络通讯,我也看了这篇文章,不过这篇文章主要关注代码框架,代码的细节还是需要补充的。 这就是我做blog.frame的初衷
然后身体开始功能
完整的代码目录表明该版本源码为go-ethereum-release-1.0.0版本。 至于为什么用这个版本,版本越低,源码复杂度越简单,但原理应该相差不大。 这是考虑的初衷。源码分析
然后我们进入源码spa
1.初始化
从条目开始:.net
github.com/ethereum/go-ethereum/eth/backend.go 3d
这里有两个非常重要的成员。 博客
ProtocolManager是p2p通信的管理模块
P2p.Server是p2p的传输模块
让我们看看 New 函数,因为
github.com/ethereum/go-ethereum/eth/backend.go
这个函数是构造入口以太坊网络通讯,这里简单看看为什么是入口
github.com/ethereum/go-ethereum/cmd/geth/main.go
Console在哪里,我们看一下init函数
看看开始
github.com/ethereum/go-ethereum/cmd/geth/main.go
在 github.com/ethereum/go-ethereum/cmd/utils/cmd.go
上面 main.go 中的条目是从 new 开始的。
言归正传,回归
github.com/ethereum/go-ethereum/eth/backend.go
在新功能中
funcNew(config*Config) (*Ethereum, error) {
初始化以太坊结构
下面是ProtocolManager的初始化
下面是p2p.Server的初始化。
最重要的是协议的传输。 这里上层的protocolManager与下层的p2p链接。
然后启动函数
龚浩华初稿
祭司新月
QQ 29185807
2018 年 3 月 1 日