博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以太坊源码分析---go-ethereum之p2p通信分析(1)
阅读量:4030 次
发布时间:2019-05-24

本文共 967 字,大约阅读时间需要 3 分钟。

本文csdn博客链接为:

本文QQ空间链接为:

先介绍一篇文章,也是介绍以太坊p2p通信的,

这篇文章写的非常好。里面对以太坊源码的分析也非常到位,在代码框架上,表达非常清晰。

那么为何我还要写这篇源码分析呢,在分析源码的同时,也有看这篇文章,但这篇文章主要是在代码框架上,代码的细节方面,还有待补充。这就是我写博客的初衷。

 

那么正文开始


 

完整的代码目录,说明,这个版本的源码为go-ethereum-release-1.0.0版本。关于为何用这个版本,版本越低,其源码复杂性相对会比较简单,但原理应该不会相差太大,这个是考虑的初衷。

那么我们就开是进入源码

 

一、初始化

先从入口开始:


github.com/ethereum/go-ethereum/eth/backend.go


 

这里面有两个很重要的成员。

ProtocolManager p2p通信的管理模块

P2p.Serverp2p的传输模块

 

下面看New这个函数,为

 

github.com/ethereum/go-ethereum/eth/backend.go


 

这个函数是构建入口,这里简单的看下为何是入口

github.com/ethereum/go-ethereum/cmd/geth/main.go


 

Console在哪里呢,我们看init函数




 

看下start

github.com/ethereum/go-ethereum/cmd/geth/main.go


github.com/ethereum/go-ethereum/cmd/utils/cmd.go


上面的main.go中的入口从newstart

 

言归正传,回到

github.com/ethereum/go-ethereum/eth/backend.go

New函数中

func New(config *Config) (*Ethereumerror) {

 

Ethereum结构体的初始化


下面是ProtocolManager的初始化


下面是p2p.Server的初始化。

其中最重要的东西为Protocols的传递。这里将上层的protocolManager与底层的p2p连接在一起。


然后是Start函数


 

 

 

龚浩华  初稿

月牙寂 道长

QQ 29185807

20180301

你可能感兴趣的文章
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
jtag dump内存数据
查看>>
linux和windows内存布局验证
查看>>
linux config
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux dump_backtrace
查看>>