EOS源码学习系列

我为啥要学习EOS源码

正所谓不忘初心方得始终,在开始这个系列前,先简单聊聊为啥我要学习EOS源码吧。

首先,一直以来我对比特币和区块链还是蛮感兴趣的,不过大多认知都止步于科普文章/书籍和白皮书,这对于将"show me the code"常挂在嘴边的码农来说显然是不够的,要想深刻理解运用区块链必须要深入学习源码。

其次,目前EOS作为最被广泛看好的区块链3.0方案之一,被寄予了解决区块链扩容等问题的期望,但是网上关于EOS的技术文章大多停留在白皮书搬运(各种概念的炒作)和运行样例程序的浅层次阶段,这类文章已经比较丰富了。对于真正有志于参与区块链开发实践的读者来说,源码级别的学习经验分享更具有参考价值。

最后,EOS目前还处于发展的非常早期阶段,还没正式上线主网,还有大量的轮子需要被制造出来,熟悉了解源代码是参与社区建设的基本门槛。

源码学习系列概要

由于这个系列开始的时候EOS release了Dawn2.x版本并且上线了测试网络,这个应该是能够比较稳定运行的版本,所以这个系列先专注于Daw2.x分支的分析,后续新的feature上线文档后再另开系列分析,Github上项目分支在https://github.com/EOSIO/eos/tree/dawn-2.x

由于我也是边学习源码边写这个系列,分享我的学习过程,所以系列的组织结构上可能会有一定的变动。

为了方便,系列大体上参考源码组织结构,主要分为四个篇章,对应源码中四个一级目录:

  • program: 程序篇
    • eos的应用程序,最主要的包括运行节点实例eosd,与eosd交互的命令行工具eosc,单独的钱包应用eos-walletd,以及其他开发测试工具。
    • EOS源码学习:程序篇(一)eosd
  • plugin: 插件篇
    • eosd应用程序采用插件化设计,最主要的功能设计成接口统一的plugin,应用程序根据配置加载需要的插件,第三方开发者也可以开发扩展plugin支持新功能。
    • EOS源码学习:石墨烯引擎 & EOS插件机制
  • libraries: 功能库篇
    • 实现了eos业务功能组件。
  • contracts: 合约篇
    • 提供了一些合约样例。

这样分的好处是,文章组织与EOS软件架构保持同构,一个篇章主要集中在EOS架构的一个层面进行分析和讨论,同时,读者能够快速找到对应的源码。对于EOS的软件架构概况会在程序篇结合例子进行介绍。

等后续篇章和子文章丰富起来,和加深对EOS理解后,可以就个别主题打包文章集合,进一步贯穿分析讨论。

值得一提的是,写这个系列顺序是按照我的兴趣和关注点优先,如果有希望提高优先级的欢迎在评论区留言。另外,文中认识理解有误或争议的地方,恳请读者多指正,谢谢。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,758评论 24 692
  • 引言 从本周开始,我要EOS一条道走到黑了。一边学习EOS开发,一边记录,今天算是开篇。这个系列不知道会有几篇,看...
    王巨阅读 5,099评论 7 14
  • 1.js源码 , console.log 等应用相关 ,以及调用c++方面的接口2.c++源码 http请求 I/...
    stone_yao阅读 115评论 0 0
  • redhat 的更新包只对注册的用户生效,所以我们需要自己手动更改成CentOS 的更新包,CentOS几乎和re...
    威谷子阅读 1,005评论 0 0
  • 今天陪儿子去书店买了几本书,回家后,他就沉浸在书中,我于是悄悄地到了厨房准备中午的饭菜。时间悄悄地流逝,儿子在静静...
    春风一缕阅读 139评论 0 3
  • 一弯新月斜半空 不知是西还是东 宙海苍茫夜深深 孤月不明几点星 我自室外独徘徊 凝月触思君何在 佘壶月色遥对饮 共...
    刘炳清阅读 178评论 0 0