比特币源码阅读(一):模块拆分

简介

比特币从09年一直持续运行到现在,不得不佩服程序的稳定。想从事区块链行业,还是应该从比特币做起。学习源码,了解应用架构、分析各个组件间的交互实现。

环境

源码地址

https://github.com/bitcoin/bitcoin/

编辑器

Sublime、ATOM、source insight等都可以
如果只是看源码的话,我推荐source insight。因为跟踪定义的位置很方便。
需要对代码截图,我推荐Sublime。因为高亮显示更方便观察。

代码分支

我们这次源码阅读选择v0.15.1tag的代码。
git tag查看当前git仓库所有的tag
git checkout v0.15.1切换代码到v0.15.1

主要模块

初始化和启动

客户端进行初始化任务,并启动多线程处理并发操作。。

P2P网络

发现其他节点并建立网络连接,接收其他节点消息并利用socket发送消息到其他节点

区块广播

全节点在接收并验证区块之后,会将区块进行广播,使全网的区块同步。

挖矿

通过算力来竞争区块的打包权,获得coinbase交易中的比特币,以及当前区块中所有交易产生的费用。通过POW(Proof Of Work)来保证比特币区块链的稳定

交易广播

当一个全节点接收到一个交易信息时,会先验证其有效性,验证通过之后会向相邻的节点广播并将该交易保存在内存中等待打包进区块。

钱包

钱包可以管理你的UTXO,也就是你的"余额",可以创建交易等

GUI

bitcoin-qt提供图形操作界面。

RPC接口服务

客户端提供基于HTTP的JSON-RPC接口来执行多种操作功能并管理本地钱包。

如何查找入口函数

  1. 每一个程序都有一个入口函数,像C、C++语言,入口函数就是main()函数。所以我们应该先找到项目中的main()函数。
  2. 一般大的项目工程里面src目录是存放项目源代码的地方,而且存放mai()函数的文件,一般都是在源代码目录的最上层。进而我们应该查看有没有main.cpp(C++文件的后缀名)
  3. 发现并没有main.app。由于我们编译比特币源码时,生成的程序是bitcoind和bitcoind-cli(一般cli代表的是命令行相关的),所以我们试着找找有没有bitcoind.cpp。发现真有,打开看看里面有没有main()入口函数。
  4. OK,找到了,下面通过入口函数开始阅读源码吧。
  5. main函数所在文件/bitcoind/src/bitcoind.cpp

小结

下一节了解初始化和启动环节。

区块链研习社比特币源码研读班(二期):空白格丶

你可能感兴趣的:(比特币源码阅读(一):模块拆分)