go-ethereum源码阅读 - 1.transcation的监听和接收

geth代码中变量简洁的命名方式让我看的真酸爽....


比如这种:


r := srv.DialRatio


fd  net.Conn


还有go语言不需要声明的接口实现方式更是让人蛋疼,


暗搓搓的实现了这个接口,只能搜索一下才能知道丫实现了。






思路:


geth启动时启动了udp和tcp两个协议进行监听,默认30303端口,该端口用于节点发现和节点间消息通讯,8485端口是rpc调用时使用的,用来和客户端交互。


tcp监听实现了节点间传递消息,握手之后并不断开,一直在握手状态,节点间消息传递先进行密钥协商之后使用对称密钥进行消息加密传输,和ssl的过程类似


udp监听实现了节点查找






看代码:


1.入口main.go->utils.StartNode(stack)


2.p2p.server.go ->func (srv *Server) Start() (err error) 方法


这两部很简单,一步一步看过去就可以找到server.go,节点的维护代码几乎都在server.go中


3.server.go->func (srv *Server) listenLoop() {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值