比特币源码解析(1) - 整体框架

0x00 写在前面

研究了这么久的区块链却一直都没有完整的看过一个区块链项目的代码,甚至还一度沉迷各种ICO,每天看着各种货币层出不穷,跌跌涨涨,起起伏伏,不亦乐乎。现在看来,也许整体来讲赚了点小钱,可是那又有什么意义呢?终究不是长久之计。这两天终于静下来大概浏览了一遍比特币的源代码,比特币作为数字货币的鼻祖,这句话虽然不严格,但是就目前的市场价格而言,可谓是当之无愧的老大哥了,并且市场上有很大一部分项目都是在比特币的代码上进行修改的或者使用了比特币的相关代码,再退一步来说,即使是和比特币完全独立的项目在整体框架上也类似,比如一些基本的数据结构还有共识算法等等。说了这么多,想强调的就是理解比特币的代码对于理解区块链中的很多概念以及各种区块链项目都有很好的帮助。

这将是一个系列的文章,包括最核心的比特币源码的详细解析,还有实现的过程中用到的各种技巧的分析。之所以打算写这一系列文章的原因一个是做好笔记,因为整个项目的代码比较长,涉及到的相关知识也比较多,如果不做好笔记,很容易看完就忘;第二个原因就是给后来的人提供一个参考资料,希望更多的人了解区块链,将去中心化的思想发扬光大!我知道网上已经有很多人写过了比特币的源码分析,但每个人都有自己的想法,有自己的分析方法,别人的不一定适合自己,自己走出来的路必定也是印象最为深刻的。

0x01 整体框架

这一系列的文章将分为三个部分来介绍,分别是

  • 准备知识:比特币的实现过程中使用了许多其他的库,包括Boost, openssl , libevent以及QT等等。所以首先我将会对这些库做相应的介绍,包括基本的使用方法,便于之后的代码分析。当然这部分在整个阅读时可以先略过,遇到相应问题时再来了解即可。
  • 主要数据结构:比特币在代码中定义许多的类,有些我们在各种文章中经常看到例如交易(CTransaction),区块(CBlock),交易池(CTxMemPool)等等,还有些不常见的例如共识(Consensus),脚本(CScript)等等,这些数据结构在代码中随处可见,所以这部分单独拿出来对这些类包含的变量和成员函数进行解释,同时也便于之后的查阅。
  • 可执行程序代码分析:我们编译完比特币的源码之后将得到7个可执行程序分别是bench_bitcoin, bitcoin-cli, bitcoind, bitcoin-qt, bitcoin-tx, test_bitcoin, test_bitcoin-qt。其中第2,3,4,5个是主要的功能部分,所以我们将重点分析这四个可执行程序的源码。

你可能感兴趣的:(比特币源码分析)