⽐特币源码分析-bitcoin程序框架基础技术
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不透明⼆进制对象
validation框架
Undo:序列化与取消序列化
Util: argument handling, config file parsing,thread wrappers, startup time Utilmoneystr:交易额转string
Utilstrencoding:去掉string⾥的不安全字符
Utiltime:取得时间,时间格式转换
Validation:确认接受新区块
Versionbits:区块链版本维护
Warnings:潜在错误

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。