序
一直在学习 go ethereum source code,原因有二:
(1) Linux之父那句很经典的话:学习软件最好的方法是"read the fucking source code";
(2)对 Ethereum 一直兴趣比较浓,区块链技术发展个人认为:
(a) bitcoin 技术发展因为POW不会进一步发展,将来会变成“数字黄金”;
(b) EOS 越来越不像区块链,11个节点更像集群中心化服务器;
(c) ethereum 仍然有很好的技术生态,coindesk 报道说 ethereum 八个团队仍然在致力于ethereum 2.0 开发;
(d) 区块链技术发展才刚刚萌芽,肯定会有其他block chain诞生,并占领市场。
不扯了,回到今天的话题。
ethereum 网络架构
这里就不分析源码了,这种工作网络上很多爱好者做得太多了;分享一篇特别棒的文章:
Ethereum Network Architecture Analysis
这篇文章质量还是挺高的,大家可以按照引导逐渐理解go ethereum的网络架构。
这里谈一下自己的理解,如有错误,欢迎大家指正。
(1)当 geth 启动,首先 make full node,注册 service(ethereum, les, whisper, ethstatis等);
(2) service 是通过 protocol 来实现的,每个 service 由 protocol manager 管理各种 protocol;
(3) full node启动后,p2p server listen and accept 网络连接,握手通过后创建Peer实例,
通过peer.run方法把protocol run起来;
(4) p2p server读取底层socket发过来的数据,分发给相应的protocol处理。
P2P Server 启动流程
上面的链接已经介绍了P2P server启动的流程,再分享一个链接:
大家可以参考以上分析go ethereum源码。
这里没有和大家分析源码,只是提供了学习go ethereum网络架构的参考,请大家自行学习代码。
网友评论