比特币源码研读之一
2017-09-19 本文已影响141人
剑有偏锋
比特币源码研读之一
——区块链研习社 《比特币源码研读班》
一看文件夹结构 和 github编译依赖,分析的依赖库
src
compat //工作台代码 base58等
config
consensus //交易相关 merkle树
crypto //加解密(aes sha)
leveldb //文件数据库 leveldb
obj
obj-test
policy //背书
primitives //区块和交易的数据结构
qt //ui框架 qt
rpc //rpc 远程进程调用
script //交易脚本
secp256k1 //椭圆曲线
support
test //测试代码
univalue
wallet //钱包相关
zmq //消息队列库 zmq
Library | Purpose | Description |
---|---|---|
libssl | Crypto | Random Number Generation, Elliptic Curve Cryptography |
libboost | Utility | Library for threading, data structures, etc |
libevent | Networking | OS independent asynchronous networking |
miniupnpc | UPnP Support | Firewall-jumping support |
libdb4.8 | Berkeley DB | Wallet storage (only needed when wallet enabled) |
qt | GUI | GUI toolkit (only needed when GUI enabled) |
protobuf | Payments in GUI | Data interchange format used for payment protocol (only needed when GUI enabled) |
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled) |
univalue | Utility | JSON parsing and encoding (bundled version will be used unless --with-system-univalue passed to configure) |
libzmq3 | ZMQ notification | Optional, allows generating ZMQ notifications (requires ZMQ version >= 4.x) |
二 看main.cpp文件 (src/bitcoind.cpp)
int main(int argc, char* argv[])
{
SetupEnvironment(); //设置运行环境变量
// Connect bitcoind signal handlers
noui_connect(); //连接信号和槽
//根据输入的argc argv 参数初始化程序
return (AppInit(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE);
}