走进开源代码(二)

目录

一、下载源代码,了解目录结构

二、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版本。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp是一种基于Vue.js发跨平台应用的框架,它的源代码可以通过GitHub获取。UniApp的源代码是指官方团队提供的框架源代码,让发者能够自行查阅并进行修改、发。通过源代码发者可以了解UniApp的工作原理、结构和设计思路,学习和掌握UniApp的发技术和实现细节。 UniApp的源代码包含了Uni-CLI、UniSDK、UniApp核心JS库等多个组件和模块。其中,Uni-CLI是UniApp的命令行工具,提供了项目发、打包、运行等一系列命令,通过它可以创建、管理和构建UniApp项目。UniSDK是UniApp的发工具,提供了丰富的API和组件,帮助发者实现各种功能和效果。UniApp核心JS库则是框架的核心代码,包含了各种运行时的逻辑和功能,如生命周期管理、路由控制、页面渲染等。 通过阅读UniApp的源代码发者可以深入了解UniApp的实现细节,理解框架中的各个概念和机制。同时,发者还可以根据自己的需求和偏好对UniApp进行定制化,通过修改源代码来扩展和优化UniApp的功能。此外,源代码还促进了发者之间的合作和交流,他们可以通过GitHub等平台共享自己的修改和改进,共同推动UniApp的发展和进步。 总之,UniApp的源代码发者提供了深入了解UniApp框架的机会,使他们能够更好地使用和定制UniApp,同时也促进了发者之间的交流和协作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值