打造公链

比特币go版本BTCD架构

2018-06-11  本文已影响0人  建怀

比特币go版本BTCD架构

BTCD的源码仓库地址:

https://github.com/btcsuite/btcd

对于刚入门的区块链从业者,先从这个老外的代码学习下:

https://github.com/Jeiwan/blockchain_go

如果要看代码有点烦人,可以看看我的简单讲解,最后一个版本有比较详细的注释:

https://www.jianshu.com/p/3b66489899b9

btcd和Bitcoin Core有一个核心的区别:btcd还不包括钱包功能,这是一个非常有意的设计。这意味着不能够直接用btcd发起和接收支付。这部分功能将由btcwalletPaymetheus项目来支持,目前这两个项目正在努力开发中。

架构图

image

BTCD包括部分P2P网络,BlockChain,交易池TxPool,挖矿PoW,RPC接口。

P2P网络

P2P网络分为三个部分:地址管理,连接管理,协议数据。

BlockChain

BlockChain包括ffldb存储,数据结构和Chain基本逻辑

交易池TxPool

交易池TxPool用来管理所有接收到的交易Tx。

目录:mempool

挖矿PoW

定时获取交易池TxPool中的交易Tx,算出头Hash,遍历maxExtraNonce int64数,输出一定难度值的hash值。

目录:mining

目录结构

addmgr : 地址管理

blockchain : 实现比特币区块处理和链选择规则

blockchain/fullblocktests : 提供一组用于测试共识验证规则的块测试

btcec : 实现对比特币脚本所需的椭圆曲线密码函数的支持

btcjson : 为底层的JSON-RPC命令和返回值提供一个扩展API

chaincfg/chainhash : 提供通用的散列类型和相关函数,允许抽象特定的散列算法

connmgr : 连接管理器

database : 为比特币区块链提供数据库接口,实现了ffldb

mempool : 比特币交易池

mining : PoW挖矿

netsync : 同步管理器,同步区块链和交易

peer : 创建和管理比特币对等网络,及上行下行数据库的处理

rpcclient : 实现一个强大且易于使用的支持websocket的比特币JSON-RPC客户端

txscript : 实现比特币交易脚本语言

wire : 实现比特币网络协议

接下来将按照目录和架构图,一个一个模块进行源码剖析,敬请期待...

上一篇下一篇

猜你喜欢

热点阅读