Filecoin技术架构分析之八:协议层检索协议

[复制链接]
9585 |0
发表于 2019-4-25 12:00:12 | 显示全部楼层 |阅读模式
目录8 filecoin源码协议层分析之检索协议
8.3.1 检索矿工
8.3.2 检索客户
8.1 协议概览图
8.2 源码信息
8.3 源码分析
8.1 协议概览图

retrieval_protocol.png
此概览图为当前源码的实现,整个检索的代码还没有完善
目前的逻辑比较简单,需要指定矿工、内容cid即可进行免费检索
8.2 源码信息version
master分支 619b0eb1(2019年3月2日)
package
retrieval
location
protocol/retrieval
8.3 源码分析8.3.1 检索矿工▼package
retrieval
▼imports
github.com/filecoin-project/go-filecoin/cborutil
github.com/filecoin-project/go-filecoin/proofs/sectorbuilder
gx/ipfs/QmTGxDz2CjBucFzPNTiWwzQmTWdrBnzqbqrMucDYMsjuPb/go-libp2p-net
gx/ipfs/QmZNkThpqfVXs9GNbexPrfBbXSLNYeKrE7jwFM2oqHbyqN/go-libp2p-protocol
gx/ipfs/QmbkT7eMTyXfpeyB3ZMxxcxg7XH8t6uXp49jqzz4HB7BGF/go-log
gx/ipfs/Qmd52WKRSwrBK5gUaJKawryZQ5by6UbNB8KVW2Zy6JtbyW/go-libp2p-host
io/ioutil
▼constants//定义检索协议:"/fil/retrieval/free/0.0.0"
-retrievalFreeProtocol
▼variables
-log▼+Miner:struct
[fields]
//矿工节点,参见minerNode
-node:minerNode
[methods]//执行具体的检索服务
//通过解析协议流数据,执行检索动作并返回
-handleRetrievePieceForFree(sinet.Stream)
[functions]//实例化检索矿工
//设置处理免费检索的handle方法:handleRetrievePieceForFree
+NewMiner(ndminerNode):*Miner
▼-minerNode:interface
[methods]
+Host():host.Host
+SectorBuilder():sectorbuilder.SectorBuilder
8.3.2 检索客户▼package
retrieval
▶imports
▼constants//检索内容大小限制
+RetrievePieceChunkSize
▼+Client:struct
[fields]
-node:clientNode
[methods]//通过cid进行检索
//通过协议流,发送检索请求以及接受检索回复和数据
+RetrievePiece(ctxcontext.Context,minerPeerIDpeer.ID,pieceCIDcid.Cid):io.ReadCloser,error
[functions]//实例化检索客户
+NewClient(ndclientNode):*Client
▼-clientNode:interface
[methods]
+Host():host.Host


fez2ftosizp.png

fez2ftosizp.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表