目录
一、下载源代码,了解目录结构
二、src目录介绍
总结
上一篇文章写了通过两篇文章大致了解比特币项目的目的和解决问题的策略,本节正式走进源代码;
一、下载源代码,了解目录结构
比特币项目的地址在GitHub上(https://github.com/bitcoin)。包含4个仓库,分别是bitcoin(比特币项目),bips(比特币改进提案),libbase58(比特币的base58编码的C库),libblkmaker(c语言实现的区块模板库)。我们主要关注bitcoin仓库。
克隆仓库代码到本地
git clone https://github.com/bitcoin/bitcoin.git
代码结构如图:
显而易见,源代码在src目录下,可以使用SourceInsight加载工程查看源码,如果安装了Visual Studio 2017可以通过build_msvc文件夹下的sln工程文件加载整个工程。 其他目录简要介绍如下:
docs目录下面是所有相关文档。
depends目录中是编译不同处理器下的bitcoin依赖的配置文件。
ci目录包含了每个构建阶段中每个构建步骤的脚本。
contrib目录内是仓库工具,构建工具和密钥以及测试和验证工具。供开发人员使用此存储库的工具(devtools目录),Gitian编译bitcoin的不同平台的yml文件及相关的PGP密钥(gitian-descriptors目录,gitian-keys目录),可引导的(bootstrappable)bitcoin core构建(guix目录),用于帮助打包者创建节点包(node packages)使用的配置文件(init目录),用python写的构建一个线性的,无分支的,最佳的比特币区块链版本(linearize目录),Mac部署相关(macdeploy目录),有关QoS的一个linux脚本(qos目录),生成seeds.txt列表(该列表被编译到客户端中)的实用程序(seeds目录),为数据驱动的比特币测试生成测试向量的实用程序(testgen目录),用于验证PGP签名提交的工具(verify-commits目录),验证bitcoin core程序的脚本(verifybinaries目录)。
share目录包含比特币的图标,qt相关的脚本,rpc工具,bitcoin配置文件等。
test目录包含集成测试,这些测试可以整体测试bitcoind及其实用程序。
二、src目录介绍
通过SourceInsight工具加载目录文件,搜索“main”,可以找到所有的可执行程序的入口,结果如下图:
bench目录下的Bench_bitcoin.cpp可能是比特币基准测试程序。 其他的Bench开头的文件可能也是相关的基准测试程序。
src目录下的Bitcoin-cli.cpp是比特币命令行程序,Bitcoin-tx.cpp是交易相关的命令行程序,Bitcoin-wallet.cpp是钱包相关的命令行程序,Bitcoind.cpp是上节提到的比特币后台程序,Main.cpp是使用Qt开发的带界面的比特币程序,其他的主要是一些测试程序。
使用visual studio打开build_msvc文件夹下的sln文件后,可以更清楚的看到源码中包含了上述主要的5个可执行程序项目,测试项目和一些动态库项目。
另外,通过官网我们也了解到,Bitcoin Core安装包中包含了Bitcoin Core Graphical User Interface (GUI)和Bitcoin Core daemon (bitcoind)两个可选的程序。
总结
通过查看源代码的目录对源码内容有了整体认识,下面计划先学习经典的bitcoind后台程序,然后再学习Qt版的比特币,基于目前最新的tag v0.20.1版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)