1. 首页
  2. 技术分享

揭秘Filecoin的设计文档丨第二部分

本文主要介绍了Fileoin的存储市场和检索市场两个章节

此文译自Filecoin设计文档https://github.com/filecoinproject/specs

设计文档,从设计的角度,分别介绍数据结构,挖矿机制,共识机制,支付方式,虚拟机执行 ,状态机存储角色等等。

FileCoin是一个分布式存储网络,共享状态持久存在于区块链中。揭秘Filecoin的设计文档丨第二部分

Filecoin存储市场

Filecoin的储存市场是什么

Filecoin的 storage market 是一个底层系统,用于发现、协商和形成客户和存储供应商(称为filecoin网络中的存储矿工)之间的 storage contracts 。 storage market 本身就是一个 actor ,帮助调停市场中的某些操作,包括增加新的矿工和惩罚有缺陷的矿工,但不直接调停任何实际的存储交易。客户机和矿工之间的 storage contracts 规定,给定的 piece 将在给定的时间段内存储。假设 client或客户的某个代表保持在线状态,以监控 storage miners ,在交易完成前从矿工证明集中删除约定的数据。

创建这样一个存储市场的动机是想为全球生成的数据提供一个快速、可靠和廉价的解决方案。在全球范围内启动数据中心的成本和难度使得分散式解决方案很有吸引力,使客户和矿工能够直接交互,形成全球范围内专门存储的协议。地理位置只是这样一个方面,在这个方面分散的市场可以变得有竞争力。您可以在这里阅读更多关于构建存储市场的基本动机的信息。

在目前的 storage market 设计中, storage miners 发帖 asks 他们愿意接受的价格, client选择(手动或通过一些本地运行的算法)一组 storage miners 来存储他们的数据。然后,他们联系以编程方式接受或拒绝其 deal proposals的存储矿工。将来,我们可能允许矿工搜索客户并向他们提出交易建议,但为了简单起见,目前我们坚持上述模式。

Filecoin存储市场的可视化

待续未完:存储市场如何与组件交互的详细概述

Filecoin存储市场运营

Filecoin存储市场的运作方式如下。提供存储的矿工提交请求订单,为他们的可用存储空间索要一定的价格,并向客户提供要存储的文件,查看请求并选择他们想要使用的矿工。客户直接与拥有该ask订单的非链存储开采商协商。存储按每个块的每字节Filecoin进行定价(注意:我们可以在这里更改单位)。

市场数据结构

待续未完:storage-market.md文档应该试图描述存储市场的高级接口,关于存储和特定方法行为的详细信息会放在单独的地方,我们在这里讨论的是单个系统参与者。

存储市场包含以下数据:

存储矿工-存储市场跟踪存储市场中所有存储矿工的地址集。这里引用的所有矿工都是由存储市场通过 CreateMiner 方法创建的。

TotalComittedStorage-这是网络中所有已提交存储的计数。这是一个很好的度量,可以查看FileCoin网络存储了多少数据,也是挖掘例程用来计算每个矿工存储率的关键信息。

市场流动

本节描述了使用单个存储矿工存储单个工件所需的流程。大多数用例将涉及对多个工件执行这个过程,使用不同的矿工。

交易前

1. Merkle转换:客户机运行“本地Merkle转换”,为数据生成存储市场哈希。

  • 存储矿工通过其存储市场哈希引用数据,而不是通过其标准哈希引用数据。需要执行此步骤,客户机才能相信他们的数据正确地包含在矿工行业中。参阅单件确认部分

2. 矿工选择:客户机查看网络上的任务,然后选择一个存储矿工来存储他们的数据。

  • 注意:目前这是一个手动过程。

3. 支付通道设置:客户调用Payment.Setup与工件和他们要支付给矿工的资金。客户和存储供应商之间的所有付款都使用付款渠道。

交易

:此协议的详细信息,包括格式、数据结构和算法,可以在这里找到。
1. 存储交易转移客户端现在运行“生成存储交易”协议,如下所示:

  • 客户机发送有关单件的 StorageDealProposal
    • 这包含客户可以随时关闭的支付通道的更新,除非工件得到确认(见下一节),在这种情况下,矿工可以扩展通道。
  • 矿工决定是否接受交易,并返回一个 StorageDealResponse
    • 注意:对于给定的交易,不同的实现方式可能会有出不同的决策方法。
  • 如果矿工接受,客户机现在将数据发送给矿工。
  • 一旦矿工收到数据:
    • 它们验证数据是否与客户机声明的存储市场哈希匹配。
      他们将其分为一个部门,并将交易状态设置为 Staged

2. 存储交易开始客户机确保数据在一个扇区中

  • 工件确认(PieceConfirmation)一旦矿工密封了该扇区,他们就会在交易状态下更新计件确认,客户机在下次查询该状态时就会得到该状态。
  • 零星确认证明,交易中的部分包含在一个承诺链上的部门中。这里使用前面的“merkle translation”哈希。更多细节见工件包含证明。
  • 注意:不想在线等待工件确认的客户可以立即离开,但是可能文件实际上没有存储(但是如果他们的数据没有被存储,矿工将不能要求支付)。
  • :为了提供工件确认,矿工需要填充该扇区。这可能需要一些时间。因此,在数据传输到矿工的时间和工件确认可用的时间之间存在等待。
  • 采矿矿工通过 CommitSector 负责人在链上发布 seal commitment 和相关证明,并开始运行proofs of spacetime。有关详细信息,请参阅存储挖矿周期。

3. 存储交易中止如果矿工不提供计件确认,客户可以使支付渠道失效。

这是通过在链上的通道上调用“close”方法来完成的。这个过程会启动一个计时器,在完成时,它会将资金释放给客户。
如果客户试图中止他们与矿工实际达成的交易,矿工可以提交支付渠道更新,以强制该渠道在协议期限内保持开放。

4. 存储交易完成客户机定期向矿工查询交易状态,直到交易“完成”,此时客户机知道数据已正确复制。
客户端应存储返回的“piececonfirmation”以供以后验证。
未完待续:“完成”在这里不是一个正确的词,因为它意味着交易结束了。

5. 收入提取当矿工想要提取资金时,他们会调用Payment.RedeemVoucher。

算力表

power table 由存储市场出口,以供协商一致使用。实际上没有一个具体的对象是算力表,相反,存储市场参与者输出了一个“总算力”,每个矿工通过其参与者报告其算力。
待续未完: 重新表述以上内容,仅在提交后和删除时更新算力。

算力更新

只有当矿工提交有效的职位到链,或者如果他们被削减,才会更新其算力。
未完待续:链接到用于投递和剪切的方法。
当矿工通过在岗位上报告该部门“失踪”或“完成”而移除该部门时,会扣除算力。

支付

存储市场有支付系统,允许客户向矿工支付存储费用。

未来协议的可改进部分

  • 可协商的的承诺
    • 当矿工最初收到与客户进行交易的数据时,如果他们从未在某个扇区中包含该数据,则可以使用该签名的响应语句来大幅削减矿工。

开放性问题

  • 储存时间应根据证明期限来确定。如果证明期是每个矿工必须提交其部门证明的区块数。如果不这样做,会计就很难:“这个部门什么时候失败的?”

检索市场

组件

retrieval market 协议的版本0只是(暂时)用来启动FileCoin网络的,因为版本0只能很好地适应帐单作为支付另一个节点文件的方式。

主要部件如下:

  • 支付渠道参与者(详细信息请参见支付渠道)
  • “retrieval-v0” libp2p 服务
  • 基于链的内容路由接口
  • 一组与上面的命令交互

检索v0 libp2p 服务

v0 retrieval market 最初将作为两个 libp2p 服务实现。它将基于请求-响应,请求文件的客户向矿工发送 retrieval deal proposal 。矿工选择是否接受它,发送他们的响应,其中(如果他们接受建议)包括 signed retrieval deal,,然后是实际请求的内容,使用DAG的预先顺序遍历,作为一系列位交换块消息进行流式处理。每个块都应该使用位交换块消息格式。通过这种方式,客户机应该能够在接收数据时递增地验证数据。客户收到所有数据后,应向矿业公司发送建议金额的支付渠道SpendVoucher。这个协议可以很容易地扩展到每N个区块包含从客户到矿工的付款,但是现在我们省略了这个特性。

基于链的内容路由

对于版本0协议,我们应有一个小助手服务,根据区块链中的交易来查找哪些矿工拥有给定的工件。服务应该首先在区块链中(或在一些客户机索引中)查找内容以找到矿工的链地址,然后使用查找服务将其映射到 libp2p peerIDmultiaddr

检索市场指令

我们需要添加一些命令,以允许用户与检索市场交互,并使开发人员能够在上面编写更高级别的应用程序脚本。
这里的命令名不是最终的,在我们认真琢磨用户体验后,命令名会有所改变。

下一章我们将会介绍Filecoin的支付、挖矿、预期共识的相关内容请持续关注我们~

原创文章,作者:三色団子,如若转载,请注明出处:https://ipfsdrop.com/tech/jiemifilecoindeshejiwendangshudierbufen/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

(+86)18301922335

在线咨询:点击这里给我发消息

邮件:haskell@freechains.cn

工作时间:7×24小时

QR code