go ethereum 网络架构以及 p2p server启动流程

    一直在学习 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源码。

    这里没有和大家分析源码,只是提供了学习go ethereum网络架构的参考,请大家自行学习代码。

你可能感兴趣的:(go ethereum 网络架构以及 p2p server启动流程)