最近一直在业余时间看 Graphene 的源码, Graphene 是 bitshares 和 steem 的底层技术, 得益于 LMAX 架构和 DPoS 这一高效的共识机制, 使得基于 Graphene 成为目前最稳定和最高效的区块链底层. 接触区块链技术后, 我对区块链的各种共识协议做了很多浅薄的思考, 最后真的觉得 DPoS 共识才是未来的趋势 :P. 看 Graphene 的源码, 一方面是学习一下 LMAX 架构以及 DPoS 共识机制; 另一方面因为以前没做过分布式开发, 也是学习一下分布式程序的运作机制.
Graphene 的源码现在已经并到 bitshares/bitshares-core 维护了, 本来以为自己残存的 C++ 知识应该直接看没问题, 但 clone 下来代码以后发现高估了自己... 不得不又买了本 C++ Primer 补了一下.. 所以这篇文章就总结一下阅读 Graphene 源码时的一些 prerequisites 吧..
- typename 的存在理由及用处, http://pages.cs.wisc.edu/~driscoll/typename.html
- .template 的用法以及存在的理由, https://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords
- lambda 表达式
- 函数模板 (C++ primer 10.1 ~ 10.4 节)
- 继承, 重载, 虚函数/纯虚函数, 友元
- 类模板以及类模板的特化
- 智能指针 (shared_ptr, unique_ptr)
- 多线程编程与异步编程
- boost::multi_index 库, rb tree, b/b+ tree
- BM 的 fc 库 (FC_REFLECT 宏)
- 最基本的 c/c++ 知识
后续计划分 5 篇左右的文章从各个部分剖析一下 Graphene 的源码实现. 希望自己能坚持写完 :D
欢迎感兴趣的朋友一起分享交流~~