【filecoin lotus源码】filecoin lotus项目依赖的协议实验室项目

ipfs协议实验室根据功能把项目拆成一个一个小的项目,很多项目只有一个源码文件。lotus项目引用了以下的项目,这里做一个简单的功能说明,对各项目的功能有个大致的了解,这个是我们分析源码的基础。
依赖参考github go.mod

项目 功能
filecoin-project/chain-validation 根据规范验证Filecoin实现的正确性
filecoin-project/filecoin-ffi FFI 全名 Foreign Function Interface, C and CGO bindings for Filecoin’s Rust libraries
filecoin-project/go-address filecoin地址类型,用于在filecoin网络标识actor的身份
filecoin-project/go-amt-ipld 使用go-ipld实现的Array Mapped Trie (Persistent Vector)
filecoin-project/go-cbor-util CBOR工具库,输入和输出流到CBOR的转换
filecoin-project/go-crypto filecoin的加密工具库,生成key、签名、验签
filecoin-project/go-data-transfer 通过ipfs/go-graphsync执行数据传输的一个模块
filecoin-project/go-fil-markets 该库包含Filecoin 的存储和检索市场子系统的模块化实现
filecoin-project/go-paramfetch filecoin网络用于下载Groth参数和验证keys的程序
filecoin-project/go-sectorbuilder 管理存储矿工扇区的抽象
filecoin-project/go-statestore CBOR可编码数据的通用键值存储
ipfs/go-bitswap golang版本的bitswap协议实现
pfs/go-block-format cid寻址数据块的接口, 提供了一个默认实现BasicBlock
ipfs/go-blockservice golang版本的BlockService接口实现,为本地和远程存储后端提供无缝接口 ,后面会与Blockstore接口合并
ipfs/go-car 内容可寻址归档,是将merkledag打包到单个文件中的一种简单方法
ipfs/go-cid golang版本的Content ID v1实现
ipfs/go-datastore key/value数据存储接口
ipfs/go-ds-badger2 使用 badger 作为后端的datastore 实现,badger是go实现的fast key/value数据库
ipfs/go-filestore Blockstore接口(go-ipfs-blockstore)的实现
ipfs/go-fs-lock 文件系统的锁定
ipfs/go-graphsync golang版本的ipld graphsync协议实现
ipfs/go-hamt-ipld ipld的HAMT(Hash Array Mapped Trie )的实现
ipfs/go-ipfs-blockstore blockstore在datastore上实现了一个精简包装,为获取和存储Block对象提供接口Blockstore
ipfs/go-ipfs-chunker 提供Splitter接口,sizeSplitterv2从Reader流读取数据,然后创建“Block”,这些Block用于构建ipfs DAG(默克尔树)
ipfs/go-ipfs-ds-help 解析和创建datastore keys的工具包
ipfs/go-ipfs-exchange-interface IPFS Exchange接口:IsOnline、HasBlock、GetBlock、GetBlocks 、NewSession
ipfs/go-ipfs-exchange-offline 离线 IPFS exchange接口实现
ipfs/go-ipfs-files IPFS file接口及工具包
ipfs/go-ipfs-routing go-libp2p-routing的实现
ipfs/go-ipld-cbor go-ipld-format的cbor实现
ipfs/go-ipld-format ipld的Node、Resolver 接口 ,需要实现一组接口,才能成为ipld merkle-forest 的一部分
ipfs/go-log 包装了zap的日志工具库
ipfs/go-merkledag 现实了DAGService接口
ipfs/go-path 处理 ipfs paths 工具库
ipfs/go-unixfs 在ipld merkledag上实现类unix的文件系统
libp2p/go-libp2p golang版的libp2p实现,入口
libp2p/go-libp2p-circuit 电路交换
libp2p/go-libp2p-connmgr 连接管理器 ,帮助管理连接
libp2p/go-libp2p-core 组成go-libp2p的接口和抽象
libp2p/go-libp2p-discovery 活跃peer节点发现服务
libp2p/go-libp2p-kad-dht Kademlia DHT实现
libp2p/go-libp2p-mplex MPLEX流多路复用器
libp2p/go-libp2p-yamux YAMUX流多路复用器
libp2p/go-libp2p-peer 用于go-libp2p的基于PKI的身份,已废弃,使用go-libp2p-core代替
libp2p/go-libp2p-peerstore peer元数据存储组件的参考实现
libp2p/go-libp2p-pubsub 基于libp2p构建的发布订阅系统
libp2p/go-libp2p-quic-transport 使用quic的libp2p传输实现
libp2p/go-libp2p-record 用于路由系统的签名记录
libp2p/go-libp2p-routing-helpers 组成不同类型路由器的帮助程序类型的集合
libp2p/go-libp2p-secio 用于go-libp2p的安全(加密)传输模块 ,实现SecureTransport接口,保护peer之间交换的所有数据
libp2p/go-libp2p-swarm 用于给定libp2p网络的“低级”接口。它使您可以更精细地控制系统的各个方面。大多数应用程序不需要这种访问级别,因此Swarm通常将其包装在Host提供更友好接口的抽象中
libp2p/go-libp2p-tls go-libp2p的TLS加密传输
libp2p/go-maddr-filter 用于过滤多重地址(multiaddrs)的库
multiformats/go-base32 带有NoPadding选项的base32编码工具类
multiformats/go-multiaddr Go中的multiaddr实现,可组合且面向未来的网络地址,Multiaddr是一种用于编码来自各种公认的网络协议的地址的格式。编写应用程序以确保将来的地址使用是可行的,并允许多个传输协议和地址共存
multiformats/go-multiaddr-dns 用于/ dns4、/ dns6、/ dnsaddr 多地址解析的Go库和CLI工具
multiformats/go-multiaddr-net multiaddr网络工具 ,标准网络符号的包装,以及往返的转换。netnet.Dial、net.Listen、net.Addr
multiformats/go-multihash golang版的multihash实现,multihash是一种自描述hash,根据hash前缀可区分各种公认的加密哈希函数的输出,地址大小和编码注意事项
multiformats/go-varint 帮助库,强制执行最少的编码
发布了15 篇原创文章 · 获赞 0 · 访问量 257

猜你喜欢

转载自blog.csdn.net/kk3909/article/details/104836994