比特币源码解读-第1章

时间:2024-04-14 13:07:21

一、路在何方

  本章将从比特币源码开始,通过分析比特币钱包的项目结构、源码结构、入口点等关键信息,逐步了解比特币源码的逻辑结构,同时掌握大型源码的分析方法。路在何方,路在脚下。

1.1 readme

1.1.1项目结构分析

  千里之行始于足下,好的开始是成功的一半。拿到源码,我们首先要做的就是了解代码的整体结构,掌握比特币项目的的整体布局。bitcoin-0.1.0代码结构如下:

比特币源码解读-第1章

Ø src:源码文件夹

Ø bitcoin.exe:比特币钱包客户端运行程序

Ø libeay32.dll:openssl动态链接库

Ø mingwm10.dll:mingw动态链接库

Ø license.txt:版本说明

Ø readme.txt:软件说明

  通过对整体代码结构的分析我们可以初步得出以下结论:

(1) 比特币用到了openssl密码库(libeay32.dll)

(2) 中本聪编译可执行程序bitcoin.exe时使用的MinGW编译器(mingwm10.dll)

(3) 此版本为测试版本(ALPHA版本),可在Windows系统上运行,绑定端口为8333(readme.txt)

(4) 通过Generate Coins选项可解决一个难题,成功解决一个难题将创建一个新区块并得到比特币作为报酬(readme.txt)

1.1.2源码结构分析

src中包含编译比特币客户端需要的头文件、源文件、资源文件等。src中的文件结构如下:

比特币源码解读-第1章

比特币源码解读-第1章

 

 

  源码层面上的分析则要从说明文件readme.txt开始。作为说明文件,readme为我们分析比特币源码提供了诸多有用的信息。通过阅读readme文件,可以得到以下信息:

(1) 编译源码所用的IDE为Microsoft Visual C++ 6.0;编译器为MinGW

比特币源码解读-第1章

(2) 编译过程应用了四个外部依赖库:Openssl、wxWidgets、Berkeley DB、Boost

比特币源码解读-第1章

(3) 四个库文件的版本信息与编译方法

比特币源码解读-第1章

1.2 比特币钱包入口点分析

  在src目录下,我们可以直观的看到编译比特币源码用到的所有文件。其中包括头文件(.h文件)、源文件(.cpp文件)等熟悉的源码文件。然而,我们也对uiproject.fbp文件的格式与功能并不了解。通过查阅资料,确定fbp文件为wxFormBuilder工程文件,实现了比特币钱包的UI设计。

比特币源码解读-第1章

  wxFormBuilder 是一个基于 wxWidgets 的 UI 设计的快速开发工具。wxFormbuilder只能设计布局,事件只能链接一个名字,需要通过继承该名字之后再编写相关代码实现具体业务逻辑。

  安装wxFormBuilder ,打开uiproject.fbp文件。可以看到比特币钱包整体UI设计。

比特币源码解读-第1章

  比特币钱包项目中,界面的UI设计通过wxFormBuilder 生成,保存在uibase.cpp、uibase.h文件中;业务层逻辑在ui.cpp、ui.h文件中实现。在ui.cpp中,通过继承wxApp类(wxWidgets库中的APP基类),定义比特币钱包程序CMyApp,并通过IMPLEMENT_APP(CMyApp)启动比特币钱包程序。

比特币源码解读-第1章