主页 > 钱包imtoken官网 > 1.开启比特币源码学习之旅
1.开启比特币源码学习之旅
感激:
最近准备学习比特币源码。 正好有前辈也写了这个系列的文章。 感谢 Nanako (@forest21000) 提供源代码分析系列博文。 这是他的主页地址
作者讲解的很详细,强烈推荐像我这样的新手学习比特币源码参考。 此外比特币源码开发自己的币,本次学习还主要参考了《精通比特币》和《区块链开发指南》两本权威指导书籍,部分内容参考了@ttblack的博文和网络上其他作者的文章。
感谢那些为推动区块链技术而努力的大牛们! 阐明:
1) 发行说明
下载比特币源地址在:
本次学习的比特币源码版本为最新的v0.15.1,可以在Tag栏中选择需要的版本。
版本选择
在Linux或Mac系统下可以选择下载对应版本的.zip文件或者使用git clone命令下载。
2)编译系统说明
本次学习比特币源码的编译系统是ubuntu16.04LTS。 具体的编译过程可以参考下面的链接:
编译成功后,在源码的src/config/文件夹下会出现bitcoin-config.h文件。 这个文件在源代码解释中经常被引用。 其实如下图所示,并不是为了得到这个文件就需要执行第一步。 4步是 4)使用make编译:只需要执行第3步,即3)生成makefile:这样可以避免make冗长的编译过程,让我们可以快速投入到源码的解释中去. bitcoin-config.h文件是一系列常量宏定义,如下图所示:
bitcoin-config.h 文件的部分内容
好了,至此,我们已经获得了完整的比特币源代码。 下面我们看一下它的主要模块划分,熟悉一下常用的文件夹。
比特币主要模块划分:
比特币客户端主要模块如下图所示:(摘自《区块链开发指南》P77)
比特币客户端的主要模块
(1)初始化并启动模块
在启动阶段,客户端执行一系列初始化任务。
(2) P2P网络模块
本地节点使用多种技术发现其他节点,并在与其建立网络连接后,接收节点消息并向其他节点发送消息。
(3) 区块交换模块
节点将自己已有的区块广播给其他节点,相互交换区块,从而建立区块链。 当节点收到数据块时,会验证数据块是否合法,并清除内存中与数据块重复的交易信息。
(4) 交易兑换模块
节点之间交换和传输交易比特币源码开发自己的币,客户端将交易与本地钱包的比特币地址相关联。 交易信息会广播到全网节点,每个节点都会验证交易之前的动作是否合法。 如果合法,交易将被存储在内存中,等待进入数据块。
(5) 挖矿模块
挖矿是指使用工作量证明生成数据块的行为。
(6) 钱包服务模块
①客户端使用本地钱包创建交易;
②客户端将交易与本地钱包地址相关联;
③客户端提供本地钱包管理服务。
(7) RPC接口服务模块