比特币源码分析-bitcoin程序框架

xiaoxiao2021-02-28  15

基础技术

http rest

Level DB

Zero MQ

Bloom filter

Cuckoo hash

DNS seed

Tor -- the onion route

文件一览

 

库:

secp256k1椭圆曲线非对称加密,数字签名库

qtGUI

univalue:数据类型库,服务于rpc序列化

 

其他文件夹:

compact:大小端,系统适配等,重写了部分字节操作

consensusmerkle计算,分叉规则,一致性验证

crypto:哈希算法,加密算法

support:内存控制,主要服务于内存池

index:交易读写1.查询交易;2.新区块加入同步数据

inferface1.event handler接口

 2.守护进程bitcoind,调用node功能的接口

   3.bitcoin钱包功能接口

policy1.交易选取规则(基于feerate的动态规划)

   2.检查交易格式

   3.rbf交易替换高费率优先

Ps:交易成功的流程:发起交易-->交易池-->交易桶-->写入区块

primitive 1.区块构建;

2.校验交易的输入输出签名

scrpit 1.交易溯源;

2. 密钥验证;

3. 交易脚本;

4. 签名

5. 签名cache缓存常用签名及其hash以节约时间

 

 

 

文件:

P2P网络管理:

① addrdbP2P网络地址数据库peer.dat,封禁地址banlist.dat

② addman:在内存中cache部分地址以提升性能 Stochastic address manager

③ Net:网络节点管理

④ Net_processing:节点的通信操作,广播通知,状态验证等

⑤ Netaddress:网络地址对象

⑥ Netbase:网络通信

⑦ Protocol:网络通信格式

⑧ Randomssl随机数种子

⑨ TimedataP2P网络时间同步

 

Amount:最大交易量,系统常量(CAmount MAX_MONEY = 21000000 * COIN)

Arith_uint256256-bit 无符号大整数

Base58:编码器,base64的变种 key_io

Bench32string编码器,base32变种 key_io

Bitcoin-cli:命令行的比特币客户端(rpc client

Bitcoind:服务节点守护进程

Bitcoin-tx:比特币交易处理程序

Blockencodings:交易装填到区块中

Bloom:布隆过滤器

链体:

Chain:区块链对象,维护着整个链的状态及各种参数

Chainparams:区块链对象的一些可调参数,包括主链,公有测试链,和私有链

Chainparamsbase:区块链对象的基本参数

ChainparamsseedsP2P网络的DNS节点,用于解析及发现节点

Checkpointschain index检查点

Checkqueue:待验证信息队列,主线程放入数据,多线程并行检查验证

Clientversion:客户端版本验证

CoinsUnspent Transaction Output entry 即比特币交易的coin 实体,因为比特币每笔交易都是由UTXO而来

Compressor:输出脚本压缩编码

Core_iotx对象与str对象的相互转化

Cuckoocache:基于cuckoo hash的内存cache

Dbwarpper:数据库上级接口

Fs:文件操作接口

Hashsha-256哈希

Httprpcrpchttp封装

非对称密钥管理

Key:调用secp256k1的公私密钥处理

Key_io:签名及加密后的重编码

Keystore:密钥管理器

Pubkey:公钥管理

 

Logging:全局日志

Noui:基于messageboxui

Resthttprest服务

 

挖矿:

Init:系统初始化,各个线程的初始化

Txmempool:交易池

merkleblock:生成merkletree 形式的block

miner:矿工从txpool选取txblock准备写入

Pow:工作量证明算法

线程管理:

Scheduler:线程调度器

Sync:死锁处理

ThreadInterrupt:线程中断

TxdbDBview

Ui_interfaceui接口

Uint256256bit不透明二进制对象

Undo:序列化与取消序列化

Utilargument handling, config file parsing,thread wrappers, startup time

Utilmoneystr:交易额转string

Utilstrencoding:去掉string里的不安全字符

Utiltime:取得时间,时间格式转换

Validation:确认接受新区块

Versionbits:区块链版本维护

Warnings:潜在错误

 

 

转载请注明原文地址: https://www.6miu.com/read-1650072.html

最新回复(0)