主页 > imtoken安卓版下载2.0 > 比特币源码研究(一)
比特币源码研究(一)
剪辑整理:Pz-Tse
作者简介:菜菜子,被誉为社区食神,是国内最大最优质的区块链学习社区区块链研究社区的核心成员。 曾任比特币源码研究班组长,钱潮《比特币编程》讲师,Sia中国微信群群主,Sia Wiki主译者。
文章描述
我们为什么要发表这样的技术文章?
想必大家都知道投资有一个很重要的原则——不懂就别投资。 比特币作为整个区块链世界的基础货币,每个人都或多或少要持有比特币。 既然有了,我们就要搞清楚,你手里的这个东西,代表着什么样的未来,它有什么样的长期价值? 对技术、前景、社会学、经济学等的深刻理解,可以让你更有信心将数字资产握在手中。
从本文开始,就让我们跟随食神从技术角度揭开比特币的面纱,彻底拥抱“她”吧!
正文:约1900字,预计阅读时间5分钟。
1.源码下载
本文比特币源码下载地址为:,下载版本为github最新版本
这,即版本 0.14。 其源代码目录结构如下。
图中红色矩形选中的src文件夹就是比特币源码所在的目录,所以我的比特币源码之旅将从这个文件夹开始
开始。
2.找到入口函数
众所周知,万物皆有起点,就像我们走进一所房子,首先要找到门一样。软件程序也不例外
,每个软件程序都有它的入口函数,所以研究比特币源码,首先要看它的入口函数,这样你才能逐渐
了解它的执行顺序和逻辑结构。因此,进入src目录后,我的第一件事就是找到初始化函数
具体位置。由于刚开始看比特币源码,所以对src里面的所有代码都非常感兴趣,每一个都想点进去
打开看看每个文件都说什么,我自己做的。 一一阅读后,我发现
比特币源码确实有点复杂,很佩服《精通比特币》的作者,不愧是高手!可以看看源码
完成后,基于自己对源码的深刻理解,写了一本让我们了解比特币运行原理的书,以方便
我们这些后来者可以很好地理解比特币及其源代码。
想到这里,我心里开始有些小激动,因为我看到我们研究班的同学经过一段时间的学习,编程能力会有所提高。
有了很大的提升比特币代码是怎么样的,同时也可以有大量的输出,为后来者提供方便!
话不多说,回归正题!前面说了,首先要找到比特币源码的入口函数比特币代码是怎么样的,以为比特币源码是基于C/C++编写的
所以,首先要做的就是找到main函数。 认为比特币源码编译后,其后台服务进程称为bitcoind
,so,不知有没有bitcoind.cpp或者类似名字的实现文件?查看后发现在src文件夹下
bitcoind.cpp,打开这个文件后,搜索main函数,在第189行找到了main函数,以及函数中包含的有效函数
代码只有 3 行,如下所示:
int main(int argc, char* argv[])
对C/C++程序员来说,多么熟悉的功能啊!说实话,要找到这个main函数真的不容易,因为这是经典
是翻了很多源码文件才找到的!虽然我在找main函数的时候花了很多时间看其他的源码文件,但是
就像笑来老师在他的公众号里说的:“世界上没有浪费时间这回事,每一步都很重要……”,这个过程我再熟悉不过了
比特币核心源码的整体结构还是有帮助的,让我知道了钱包实现代码,区块实现代码,区块链实现代码。
代码和挖矿实现代码的具体位置,为后续源码学习提供了很好的帮助!
3、初始化过程分析
main函数的运行过程如图所示。
具体操作过程为:
第一步:搭建运行环境; 第二步:连接bitcoind信号处理对象; 第三步:应用初始化操作; 第四步:分析console命令的传入参数; 第五步:对分析后的参数进行处理; 第六步:初始化日志打印; 第七步:初始化参数设置; 第八步:初始化应用程序的基本上下文; 第九步:设置应用参数; 第十步:检查应用的完整性; 第十一步:应用程序运行main函数; 第十二步:循环等待关闭消息; 第十三步:程序关闭。
以上是比特币源码中后台进程bitcoind的运行过程。 本文仅列举其运行的具体过程。
其实每个步骤都包含对应的子分支,包括很多实现代码,我会在后续文章中详细讲解每个步骤