美文网首页区块链研习社IPFS/filecoin技术架构分析区块链大学
filecoin技术架构分析之八:filecoin源码分析之协议

filecoin技术架构分析之八:filecoin源码分析之协议

作者: 杨尉 | 来源:发表于2019-03-05 15:58 被阅读8次

    本文作者:先河系统杨尉;原创作品,转载请注明出处

    目录

    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(s inet.Stream)
    
        [functions]
        // 实例化检索矿工
        // 设置处理免费检索的handle方法:handleRetrievePieceForFree
       +NewMiner(nd minerNode) : *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(ctx context.Context, minerPeerID peer.ID, pieceCID cid.Cid) : io.ReadCloser, error
    
        [functions]
        // 实例化检索客户
       +NewClient(nd clientNode) : *Client
    
    ▼-clientNode : interface
        [methods]
       +Host() : host.Host
    

    相关文章

      网友评论

        本文标题:filecoin技术架构分析之八:filecoin源码分析之协议

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