Filecoin的检索市场

发布时间:2019年02月25日 价值:20000.00 / 共识:21

Filecoin的检索市场

检索市场V0版本

  • 什么是检索市场
  • 检索市场能发挥什么用
  • 依赖什么

组件

retrieval market协议版本V0 是我们(暂时)将启动Filecoin网络的。它是零版本,因为它只是足以使账单符合为文件支付另一个节点的方式。

主要组成如下:

  • 付款渠道角色(有关详情,请参阅付款渠道
  • ‘retrieval-v0’ libp2p服务
  • 基于链的内容路由接口
  • 一组与上述交互的命令

Retrieval V0 libp2p Services

retrieval market的v0版本最初将实现为两个libp2p服务。它将是基于请求响应,其中请求文件的客户端向矿工发送一个retrieval deal proposal。矿工选择是否接受它,发送他们的响应(如果他们接受提议)包括a signed retrieval deal,然后是实际请求的内容,使用dag的pre-order遍历,以流的方式传输一系列的bitwap块消息。每个块应使用bitswap块消息格式。这样,客户端应该能够在收到数据时以递增方式验证数据。一旦客户收到了所有数据,它就应该向矿工发送提议金额的支付渠道SpendVoucher。该协议可以很容易地扩展到包括每N个块从客户端到矿工的付款,但是现在我们省略了该功能。

  1. type RetDealProposal struct {
  2. // Ref is the cid of the data to be retrieved
  3. Ref Cid
  4. // Price is the total amount that the client is willing to pay for the
  5. // retrieval of the data
  6. Price TokenAmount
  7. // Payment is a payment info from the client to the retrieval miner for the data
  8. Payment PaymentInfo
  9. }
  10. type ResponseStatus uint
  11. const (
  12. Unset = ResponseStatus(iota)
  13. Accepted
  14. Rejected
  15. Error
  16. )
  17. type RetDealResponse struct {
  18. Status ResponseStatus
  19. Message string
  20. }
  21. type Block struct {
  22. // Prefix is the cid prefix parameters for this block. It describes how to
  23. // hash the block to verify it matches the expected value.
  24. Prefix CidPrefix
  25. Data []byte
  26. }

Retrieval miners 还应支持允许客户从矿工请求定价信息的查询服务。

查询应包括客户端有兴趣检索的piece的CID。响应包含矿工是否将提供该数据,他们将接受的价格。

  1. type RetQuery struct {
  2. Piece Cid
  3. }
  4. type RetQueryResponse struct {
  5. Status RetQueryStatus
  6. MinPrice TokenAmount
  7. }
  8. type RetQueryStatus uint
  9. const (
  10. Unset = RetQueryStatus(iota)
  11. OK
  12. PieceUnavailable
  13. )

Chain Based Content Routing

对于版本V0协议。我们应该实施一个小帮手服务,根据区块链中的交易查找哪些矿工拥有给定的piece。服务应首先查看区块链(或某些客户端索引)中的内容以查找矿工的链地址,然后使用查找服务将其映射到libp2p peerID和multiaddr。

该接口应与现有的libp2p内容路由接口匹配:

  1. type ChainContentRouting interface {
  2. FindProvidersAsync(ref Cid, count int) <-chan pstore.PeerInfo
  3. }

检索市场命令

我们需要添加一些命令以允许用户与之交互retrieval market,并使开发人员能够在其上编写更高级别的应用程序。

这里的命令名称不是最终的,一旦我们能够坐下来思考适当的用户体验,肯定会在以后更改。

  1. USAGE
  2. filecoin retr get <piece-cid> - Retrieve a piece from a miner.
  3. SYNOPSIS
  4. filecoin retr get [--price=<amt>] [--miner=<peerID>] [--] <piece-cid>
  5. ARGUMENTS
  6. <piece-cid> - Content ID of piece to retrieve.
  7. OPTIONS
  8. --price string - Amount of filecoin to offer for this data.
  9. --miner string - Optional Peer ID of miner to connect to. (If unspecified, the chain routing service will be used)

  1. USAGE
  2. filecoin retr lookup <piece-cid> - Print a list of miners who have the given piece.
  3. SYNOPSIS
  4. filecoin retr lookup [--sort=<sorttype>] [--] <piece-cid>
  5. ARGUMENTS
  6. <piece-cid>... - Content ID of piece to find.
  7. OPTIONS
  8. --sort string - Output sorting scheme.

  1. USAGE
  2. filecoin retr query <minerID> [<piece-cid>] - Query the given retrieval miner.
  3. SYNOPSIS
  4. filecoin retr query [--] <miner-id> [<piece-cid>]
  5. ARGUMENTS
  6. <miner-id> - ID of miner to query.
  7. [<piece-cid>] - Optional cid of piece to query for.
  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~