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–将区块加入链?或者称检查块的合法性
- SPECTRE
minner
- pow.go–工作量证明
- worker.go
account
- user.go–用户相关,身份认定,发送交易
bloom
- timebloom.go–时间布隆过滤器
- rangebloom.go–范围布隆过滤器
p2pnet
- libp2p–p2p 网络对等节点发现
mempool–内存池
crypto–密码学模块
- pkcs12–引用 gmsm https://github.com/tjfoc/gmsm 好像性能有点问题? 这里有另外一个https://github.com/rongzer/gm 看情况吧
- sm2
- p256.go
- sm2.go
- utils.go
- sm3
- sm3.go
- ifile
- sm4
- sm4.go
- sm4_gcm.go
- utils.go
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 –单纯的内存池,而非交易池
说实话,这个有点难,可能暂时不考虑实现了。
account
来自白皮书:享云链白皮书 1.0
签名与校验
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!