BlockDAG从零到一

本文最后更新于:2023年6月19日 晚上

加油!

项目结构

  • DAG

    • SPECTRE
      • snapshot.go–生成快照
      • vote.go–投票
      • log.go–记录日志
    • accepttxs.go–维持可信交易集
    • blockdag.go–主程序
    • difficulty.go–动态调整 pow 困难度
    • error.go–错误信息
    • log.go–日志信息
    • process.go–将区块加入链?或者称检查块的合法性
  • minner

    • pow.go–工作量证明
    • worker.go
  • account

    • user.go–用户相关,身份认定,发送交易
  • bloom

    • timebloom.go–时间布隆过滤器
    • rangebloom.go–范围布隆过滤器
  • p2pnet

    • libp2p–p2p 网络对等节点发现
  • mempool–内存池

  • crypto–密码学模块

  • database-存储 https://github.com/vldmkr/merkle-patricia-trie

    • mpt

      • node.go
      • tire.go
      • type.go
    • storage

      • adapter.go
      • leveldb.go
      • memory.go
    • database.go–利用 leveldb 存储交易(MPT),在区块中只存储根节点 hsha。

    • merkletire.go–MPT 树存储

    • 可以先尝试安装https://github.com/soteria-dag/soterd/tree/master/database,看看能不能保存交易

p2pnet

区块链中的 P2P
使用 Go 语言编写区块链 P2P 网络–项目:https://github.com/nosequeldeebee/blockchain-tutorial/blob/master/p2p/main.go
https://github.com/Blockchain-CN/blockchain –实现了对等协议的
利用 go-libp2p 实现在区块链上的 p2p–里面目录分的挺清楚的

mempool

以太坊交易池架构设计–这一系列很全
【区块链】比特币学习 - 4 - 交易池
以太坊源码分析:交易缓冲池 txpool
https://github.com/lianxiangcloud/linkchain/tree/release/v0.1.3/mempool
btcd 源码分析系列:6 - mempool
Mempool 源码分析
https://github.com/letsfire/factory –单纯的内存池,而非交易池
image.png
说实话,这个有点难,可能暂时不考虑实现了。

account

image.pngimage.png
来自白皮书:享云链白皮书 1.0
签名与校验


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!