美文网首页打造公链
比特币go版本BTCD架构

比特币go版本BTCD架构

作者: 建怀 | 来源:发表于2018-06-11 23:05 被阅读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网络分为三个部分:地址管理,连接管理,协议数据。

  • 地址管理:
    P2P连接地址的管理,包括未链接地址和连接成功地址。

    目录:addrmgr

  • 连接管理:
    通过tcp协议连接外部节点,打开自己的tcp服务器;同时用于接收比特币协议数据。
    目录:connmgr

  • 同步管理器:
    用于统一处理各个节点发送和接收到的数据,以便同步区块链和同步交易。
    目录:netsync

BlockChain

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

  • ffdb存储:
    是基于goleveldb(嵌入式数据库leveldb的go语言版本),开发了上层API。

    目录:database

  • 数据结构:
    包括BlockChain的地址数据结构,块数据结构,链的数据结构,还包括Merkle树的逻辑,椭圆曲线算法的接口,比特币脚本Script逻辑。

    目录:blockchain

交易池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 : 实现比特币网络协议

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

相关文章

  • 比特币go版本BTCD架构

    比特币go版本BTCD架构 BTCD的源码仓库地址: 对于刚入门的区块链从业者,先从这个老外的代码学习下: 如果要...

  • Decred Staking 创新(上): DCR PoW+Po

    Decred的发起团队是开发比特币GO语言版本的Btcsuite / btcd 团队。Decred虽然上线主网已经...

  • 2018-08-16

    上文《比特币btcd代码之初体验》提到比特币除了主网外,还有Testnet以及Regtest网络。 Testnet...

  • btcd代码之私钥、公钥及地址

    上文《比特币btcd代码之初体验》提到比特币除了主网外,还有Testnet以及Regtest网络。Testnet是...

  • 2018-08-15

    最近在看比特币源码,从Golang版本入手,一来最近也在写Golang语言,二来btcd版本的代码模块设计以及单元...

  • Mac上安装比特币go版本客户端btcd、btcwallet

    最近在深入学习比特币,打算出一系列文章记录自己的学习过程,这个系列暂定叫做《循序渐进比特币》。后续会先从技术角度,...

  • btcd (Bitcoin go)所支持的命令行详解

    btcd 所支持的命令行 参考 在本机使用比特币Regtest测试网络 Quirk 跟 Standard 模式区别...

  • btcd解读

    bctd目录 btcd启动流程 比特币数据传输协议 数据存储 基于leveldb,参照boltdb的接口规范,在l...

  • 比特币btcd P.2.P 流程分析

    本文主要从源码角度,分析了比特币btcd 版 的网络相关流程的分析。 1 主要流程 2 Addrmgr.New 地...

  • 从区块链技术映出的社会价值

    比特币 提到区块链技术,我们首先想到的就比特币,因为它是比特币的底层技术和基础架构。比特币技术一套密码算法。根据这...

网友评论

    本文标题:比特币go版本BTCD架构

    本文链接:https://www.haomeiwen.com/subject/wlukeftx.html