比特币源码解读一

作者: ttblack | 来源:发表于2017-07-15 20:33 被阅读4002次

      上次在ubuntu系统中将比特处源码编译环境设置好了后,还没有具体分析里面的代码,今天我们就解读一下。源码版本是bitcoin-0.9.5rc2。

    我们说验证比特币客户端安装成功就是从 which bitcoind 这个命令进行验证的,因为比特币客户端有两个。一个是图形界面的版本,通常被称为 Bitcoin(首字母大写),以及一个简洁命令行的版本(称为 bitcoind)。

我们就从bitcoind这个命令行入手,因为这个里面代码少,感觉简单点(嘿嘿)。我在源码的src目录下发现了bitcoind.cpp文件。但没发现bitcoind.h文件,我也不知道为什么。但是没影响我们看代码。

一个C++程序的入口是从main()函数执行的。我们也从这里看起。

bitcoind主函数

代码很简单我们就逐行分析下。

一。SetupEnvironment函数定义在src/util.cpp中。

SetupEnvironment函数

这个函数设置了本地运行环境。此函数的作用是根据不同国家设置不同的编码,用于国际化的。

二。noui_connect

连接bitcoind客户端的信号处理程序。我的理解是这个信号处理程序就是侦听程序的各种消息包括异常消息,也可能是硬件的异常消息或程序的普通信号消息。

三。AppInit()

应用程序初始化,其实这里面包括了很多东西

1。ParseParameters()//解析运行输入的参数并将参数放入mapArgs; mapMultiArgs;这两个map对象中。

2。判断数据目录是否存在并读取配置文件参数指定的配置文件

3。判断参数testnet regtest参数的合法性和是否输入了--help或-?获取帮助信息的参数。

4。根据输入参数得到相应结果并组合的json数据格式打印输出 。

5。根据输入参数进行相应的设置(AppInit2)并开启一个新线程,始终侦听退出程序的消息。

这就是bitcoind.cpp里面的代码内容,分析的可能不太准确仅供参考,也可能在以后的阅读中会发现其中的错误。我们先主要了解里面的工作流程和大概框架。

我绘制了个流程图来说明一下客户端的工作原理。流程图如下:

作者:区块链研习社比特币源码研读班,black

相关文章

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 比特币源码解读一

    上次在ubuntu系统中将比特处源码编译环境设置好了后,还没有具体分析里面的代码,今天我们就解读一下。源码...

  • 开始研读比特币1

    1,进入比特币源码目录,先读读编译doc/build-unix.md,查看比特币源码如何编译,了解比特币的依赖库,...

  • 比特币源码研读之一

    作者:区块链研习比特币源码研读班 菜菜子 一、源码下载 本文比特币源码下载地址为:https://github.c...

  • 比特币源码解读八

    现在我们接着看RegisterNodeSignals 的下一个连接函数。 InitializeNode 这个函数在...

  • 比特币源码解读四

    我们接着上篇继续,现在来看第五步。 第五步:verify wallet database integrity 确...

  • 比特币源码解读六

    上篇我们看了ProcessMessages函数,这个函数就是侦听网络中的不同的消息命令来处理相应的逻辑。在...

  • 比特币源码解读三

    这篇我们主要分析下AppInit2的代码,这个函数在init.cpp中。这个函数分了12步完成了初始化客户端的功能...

  • 比特币源码解读二

    上次我们把bitcoind.cpp的大概流程过了一下,我们今天说下细节的内容。我们打开bitcoind.cpp文件...

  • 比特币源码解读五

    我们开始init.cpp中的AppInit2的第六步:network initialization 网络初始化 第...

网友评论

    本文标题:比特币源码解读一

    本文链接:https://www.haomeiwen.com/subject/qnqzhxtx.html