http rest
Level DB
Zero MQ
Bloom filter
Cuckoo hash
DNS seed
Tor -- the onion route
库:
secp256k1:椭圆曲线非对称加密,数字签名库
qt:GUI库
univalue:数据类型库,服务于rpc序列化
其他文件夹:
compact:大小端,系统适配等,重写了部分字节操作
consensus:merkle计算,分叉规则,一致性验证
crypto:哈希算法,加密算法
support:内存控制,主要服务于内存池
index:交易读写(1.查询交易;2.新区块加入同步数据)
inferface:1.event handler接口
2.守护进程bitcoind,调用node功能的接口
3.bitcoin钱包功能接口
policy:1.交易选取规则(基于feerate的动态规划)
2.检查交易格式
3.rbf交易替换(高费率优先)
Ps:交易成功的流程:发起交易-->交易池-->交易桶-->写入区块
primitive: 1.区块构建;
2.校验交易的输入输出签名
scrpit: 1.交易溯源;
2. 密钥验证;
3. 交易脚本;
4. 签名;
5. 签名cache(缓存常用签名及其hash以节约时间)
文件:
P2P网络管理:
① addrdb:P2P网络地址数据库peer.dat,封禁地址banlist.dat;
② addman:在内存中cache部分地址以提升性能 Stochastic address manager
③ Net:网络节点管理
④ Net_processing:节点的通信操作,广播通知,状态验证等
⑤ Netaddress:网络地址对象
⑥ Netbase:网络通信
⑦ Protocol:网络通信格式
⑧ Random:ssl随机数种子
⑨ Timedata:P2P网络时间同步
Amount:最大交易量,系统常量(CAmount MAX_MONEY = 21000000 * COIN)
Arith_uint256:256-bit 无符号大整数
Base58:编码器,base64的变种 key_io
Bench32:string编码器,base32变种 key_io
Bitcoin-cli:命令行的比特币客户端(rpc client)
Bitcoind:服务节点守护进程
Bitcoin-tx:比特币交易处理程序
Blockencodings:交易装填到区块中
Bloom:布隆过滤器
链体:
Chain:区块链对象,维护着整个链的状态及各种参数
Chainparams:区块链对象的一些可调参数,包括主链,公有测试链,和私有链
Chainparamsbase:区块链对象的基本参数
Chainparamsseeds:P2P网络的DNS节点,用于解析及发现节点
Checkpoints:chain index检查点
Checkqueue:待验证信息队列,主线程放入数据,多线程并行检查验证
Clientversion:客户端版本验证
Coins: Unspent Transaction Output entry 即比特币交易的coin 实体,因为比特币每笔交易都是由UTXO而来
Compressor:输出脚本压缩编码
Core_io:tx对象与str对象的相互转化
Cuckoocache:基于cuckoo hash的内存cache
Dbwarpper:数据库上级接口
Fs:文件操作接口
Hash:sha-256哈希
Httprpc:rpc的http封装
非对称密钥管理
Key:调用secp256k1的公私密钥处理
Key_io:签名及加密后的重编码
Keystore:密钥管理器
Pubkey:公钥管理
Logging:全局日志
Noui:基于messagebox的ui
Rest:http的rest服务
挖矿:
Init:系统初始化,各个线程的初始化
Txmempool:交易池
merkleblock:生成merkletree 形式的block体
miner:矿工从txpool选取tx到block准备写入
Pow:工作量证明算法
线程管理:
Scheduler:线程调度器
Sync:死锁处理
ThreadInterrupt:线程中断
Txdb:DBview
Ui_interface:ui接口
Uint256:256bit不透明二进制对象
Undo:序列化与取消序列化
Util: argument handling, config file parsing,thread wrappers, startup time
Utilmoneystr:交易额转string
Utilstrencoding:去掉string里的不安全字符
Utiltime:取得时间,时间格式转换
Validation:确认接受新区块
Versionbits:区块链版本维护
Warnings:潜在错误