前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以太坊源码分析---go-ethereum之p2p通信分析(1)

以太坊源码分析---go-ethereum之p2p通信分析(1)

作者头像
月牙寂道长
修改2018-04-03 11:29:48
2.7K0
修改2018-04-03 11:29:48
举报
文章被收录于专栏:月牙寂月牙寂

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

先介绍一篇文章,也是介绍以太坊p2p通信的,http://blog.csdn.net/teaspring/article/details/78455046

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

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

那么正文开始

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

那么我们就开是进入源码

一、初始化

先从入口开始:

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

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

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函数

看下start

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

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

上面的main.go中的入口从new到start。

言归正传,回到

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

在New函数中

func New(config *Config) (*Ethereum, error) {

Ethereum结构体的初始化

下面是ProtocolManager的初始化

下面是p2p.Server的初始化。

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

然后是Start函数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、初始化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档