黑马程序员技术交流社区

标题: 【上海校区】以太坊源码分析---go-ethereum之p2p通信分析(1) [打印本页]

作者: 不二晨    时间: 2018-9-3 10:00
标题: 【上海校区】以太坊源码分析---go-ethereum之p2p通信分析(1)
【转载】        https://blog.csdn.net/screscent/article/details/79416251

正文开始


完整的代码目录,说明,这个版本的源码为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函数





作者: 小影姐姐    时间: 2018-9-3 14:10

作者: 不二晨    时间: 2018-9-6 11:41
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2