首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

5行代码帮你梳理EOS.IO的脉络

EOS号称Blockchain上的操作系统,且白皮书和开发日志都描述的非常美好,同时也有无数人看好这个项目,但对于一个开源项目来说,再好的愿景,还是需要实际产品的支撑,永远都要记住

Talk is cheap, show me the code...

这篇文章的目的是帮助梳理的核心——的代码脉络,为后续深入研究源码打下基础。

本文假设你已经下载了的代码及你有一定的语言基础,代码的路径在

https://github.com/EOSIO/eos/

项目包括好几个程序,它们的入口函数都在目录下,如下所示,我列出了重要的几个程序,其中我们最关心的是,其次可能是和了,本文中涉及的代码基于。

下面来一探的究竟,打开文件,我们可以看到非常简单,核心代码就5行,为了方便表述,我把异常处理、版本设置和日志输出等非核心部分都省略了

这四行代码分别起到什么作用呢?

其中最关键的应该是第行,它完成了3个插件的初始化工作(项目里运用了大量的泛型模板编程,也灵活运用了的变长模板参数的特性,对于想学习最新特性的同学,这是一个很好的案例),从这一行可以看出,程序是一个插件化的框架,其中的所有功能,都是由插件实现的,你想要具备什么能力,组合不同的插件就好了。项目下的目录含有的所有插件的实现,如下:

而在当前代码中,只加载了、和这三个插件,从命名上,可以猜想它们可能是区块链插件、http协议插件(与eosioc交互)以及P2P网络插件,知道了这一点,我们后续就可以针对性的去研究对应的实现了。

第行代码没有什么可说的,完成了日志的初始化工作。

我们来看第行,函数的实现也很简单

上面这几行代码的功能是,对每一个成功初始化的插件,调用它们的函数,看这个词就知道,这个函数的功能是做一些初始参数的设定。

最后来看第行,也很简单,它的核心实现就一行代码

我们来看下是什么,在中,对有以下声明

这是一个库中的,这个服务提供一个函数,可以让这个程序一直运行下去,对于这点,做过服务器的同学就应该很熟悉了。

等等,不是说5行代码吗?怎么感觉4行就已经完事儿了?这里要注意的是,还有一行代码,它不在函数中,它在每个插件的头文件中,用来在执行前,把所有的插件都注册到系统中,以文件作为例子,就是下面这行代码

再追到中去看看,它在中

看清楚了把,这个注册函数完成了2件事

检查插件是否注册过,注册过就直接退出,防止多次注册

如果没有注册过,就分配一个新的插件对象,然后插入到中,是一个容器

上面的容器,和最开始第步中的插件初始化有一定的关联,逻辑是先把所有插件注册到容器中,然后再初始化第步中指定的插件,就不展开了,它会调用不同插件的实现。

至此,我们通过5行代码,我们了解到服务运行的大致脉络,且学习到它是一个插件化服务器,同时可以推断所有的的行为来自于网络输入,即和两个模块,知道这些后,后续我们就可以针对性的去阅读每一个核心模块了。

我建立了一个收费的知识星球,在这里,我会为大家营造一个沉下心来学习的环境,在今年,我至少会做三件事情:

精通比特币的实现原理

精通EOS的实现原理,并着手在EOS上建立应用

学习其他项目的白皮书,寻找有创意、有价值的项目

以上内容会不定期的输出分享,同时也会在能力范围内解答同学的问题,期待你的加入

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208G0J08900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券