bitcoin源码分析 – 概览

从程序上看,比特币程序采用一个进程多个线程的结构,既是服务器,又是客户端。

如没有特殊说明,本系列以最新源码为准进行分析。

主要模块:
初始化
区块
交易
网络
挖矿
钱包
RPC
GUI

主要依赖:
berkeley-db
boost
level db
libevent
miniupnpc
openssl
protobuf
qrencode
qt
zmq

主要入口:

文件 函数
bitcoind.cpp main AppInit AppInitMain
bitcoin-cli.cpp main AppInitRPC CommandLineRPC CallRPC
bitcoin-tx.cpp main AppInitRawTx CommandLineRawTx MutateTx OutputTx

主要线程:

线程 作用
主线程 创建其它线程,等待interrupt
ScriptCheck 脚本检查
scheduler 执行一般任务例如定时任务
HTTP Server 提供RPC REST服务接口
import 加载区块数据
TorControl Tor线程(Optional)
UPnP UPnP线程(Optional)
net 接收连接,封装消息
dnsseed DNS地址种子解析
addcon 处理-addnode
opencon 主动向外连接
msghand 消息处理

上述线程不包括(1)db内部的线程,例如leveldb的background thread; (2)某些参数设置后会启动的线程,例如txindex参数

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.