Filecoin官方:矿工和用户怎样合作共赢?
本篇博文从矿工和想要在Filecoin网络上存储数据的用户两个角度解释了Filecoin交易的工作原理。
一、简介
Filecoin网络通过允许任何人作为存储提供商参与实现了规模经济。目前,该网络由分布在全球各地的数百家存储提供商组成。内容寻址和加密存储证明验证了数据在矿工的硬件上长期正确安全地存储,从而创造了一个强大可靠的服务。
这篇博文涵盖了Filecoin中两种类型交易的基本阶段,即存储交易和检索交易,并详细介绍了它们的生命周期。并解释了密码学证明是如何用于验证系统中的参与者是否按照承诺履行职责的。
二、Filecoin的数据
为了在Filecoin上存储文件,用户必须首先在其本地Filecoin节点中导入文件。这一步会产生一个数据CID——内容标识符,唯一描述该内容的ID,之后数据会传输给矿工。另一种在Filecoin上存储文件的方式是通过离线交易,这在本篇文章中没有涉及。
将数据导入本地的Filecoin节点,可以使用lotus客户端导入命令。记住生成的数据CID很重要(以后在本地节点上也可以使用),因为以后从矿工那里检索数据时必须用到它。
将数据导入本地节点后,用户必须发起交易。这可以通过lotus客户端交易命令来完成。该命令以数据CID作为输入,生成Filecoin Piece,并交互式地带领用户完成存储交易流程,详见下文。
Filecoin Piece是用户存储在Filecoin网络上的数据的主要协商单位。Filecoin Piece没有特定的大小,但受网络参数的制约,受扇区大小的上限。如果一个Filecoin Piece大于矿工支持的扇区大小,那么它必须被分割成更多的碎片,以便每个碎片都适合一个扇区。
一个Filecoin Piece就是一个CAR文件,包含一个IPLD DAG,有对应的数据和Piece CID。
CAR即内容可寻址档案(Content Addressable aRchives)—— 每个 CAR 文件是一个 IPLD DAG 的序列化表示,即将其数据块串起来,再加上描述DAG图的头部信息(还有 根CID)。
当用户想要在Filecoin网络中存储文件时,首先要用UnixFS生成文件的IPLD DAG(这就是lotus客户端导入命令的作用)。代表DAG根节点的哈希是一个IPFS风格的CID,称为数据CID。
UnixFS是一种基于protobuf的格式,用于描述IPFS中的文件、目录和符号链接。在Filecoin中,UnixFS被用作提交给Filecoin网络的文件格式。
所产生的CAR文件用额外的零位来填充,以便使文件成为二进制的merkle树。
三、仓储交易流程
用户可以通过交易在Filecoin网络中存储数据,并从Filecoin网络中检索数据。网络中的参与者,包括矿工(供应方)和用户(需求方),通过存储交易和检索交易进行互动。
一个存储交易的生命周期如下:
1. 发现
用户识别矿工并确定他们当前的要价,即矿工为了接受交易而希望收到的每GiB每纪元(30秒)的价格,单位为attoFIL(1 attoFIL等于10^-18 * FIL)。目前,Filecoin中一笔交易的最短期限为180天。
您可以通过 JSON RPC API 查询已同步的节点,列出所有当前活跃的矿工(为了测试目的,使用了公共终端节点,使用Filecoin.StateListMiners方法。
您可以根据矿工在网络中的信誉和能力进行选择。矿工的信誉指标还未进入 Filecoin 协议,本文亦不涉及。
一旦你选择了一个特定的矿工,你需要获取它的PeerID,例如用Filecoin.StateMinerInfo方法,通过libp2p协议与他们建立安全连接。
然后你可以用Filecoin.ClientQueryAsk方法查询一个签名的StorageAsk。这将建立一个与所选矿工的直接libp2p连接,并询问存储报价。
结果包括这个矿工愿意接受的交易细节,比如接纳的Filecoin Piece大小的范围和每GiB每纪元的价格。需要注意的是,提出与矿工的存储要求相匹配的存储交易建议是一个前提条件,但不足以确保交易被接受——存储提供商可能会在之后运行自己的决策逻辑。
2. 协商和数据发送
在这一阶段,双方就交易条款达成协议,如交易成本、交易期限、交易起始时间等。然后将数据从客户端转移到矿机上。
3. 发布
通过PublishStorageDeals消息在链上发布交易,使存储提供商对交易公开负责。
4. 完成
交易在链上发布后,就会交给存储挖掘子系统,打包成一个扇区,随后进行封装,随后不断证明可用。
四、存储挖矿子系统
存储挖矿子系统确保 Filecoin 网络的数据由矿工有效保存,并且:
1.参与Filecoin存储市场,承接客户端数据,参与存储交易。
2.参与Filecoin存储力共识,验证并生成区块,以壮大Filecoin区块链,并以此赚取区块奖励和费用。
它监督以下流程:
承诺新存储和注册新扇区
为了在Filecoin中注册一个扇区,矿工必须对该扇区进行封装。封装过程需要大量计算,以证明的形式产生数据的唯一表示,称为复制证明或PoRep。一旦产生证明,矿工将其压缩并将结果提交给区块链。这就证明矿工确实复制了他们同意存储的数据副本。
持续证明存储
每个存储矿工都必须不断地在链上提交证明,以证明扇区被完整存储。
宣布存储故障并从故障中恢复
如果某部门未能提交上述证明,将导致故障,矿工将受到处罚。
五、矿工和用户注意事项
如上所述,存储交易是在链上发布后,才会被激活和封装。这一点很重要,因为发布交易会将用户的资金锁定在链上托管。只有如此,在封存数据进扇区之后,矿工的收益才有保障。
把在链上发布交易看成是签署合同,把封存和激活交易看成是开始做矿工承诺的工作,是有帮助的。
从想要在Filecoin上存储数据的用户的角度来看,交易大致经过以下几个阶段:
1. 资金交易:用户将资金锁定在托管中。
2. 向矿工提出交易建议。
3. 检查意向接受交易。
4. 将交易的数据传输给矿工:这是通过GraphSync协议完成的。
5. 检查是否接受:确保矿工已经接受了交易并在链上发布。
6. 封装:交易正在进行中,矿工目前正在密封包含该交易的部门。
7. 激活:交易已被封存并处于活跃状态。
从通过存储用户数据为用户提供服务的矿工的角度来看,交易大致经过以下几个阶段:
1. 验证交易:收到交易提案,并检查其参数(规模、价格等)。
2. 检查是否锁定资金:确保用户有锁定的资金,可以支付交易。
3. 等待数据:收到用户提供的交易数据。
4. 在链上为交易提供抵押物。
5. 在链上发布交易上链。
6. 封装扇区。
7. 激活交易:从这里开始,矿工定期提交时空证明,证明他们正在持续存储数据。
六、检索交易流程
检索交易与存储交易不同,使用支付通道,主要链下完成。数据传输是按量计价的,用户在数据传输的过程中逐步向矿工支付费用。整个过程,只有创建支付通道、兑换凭证,是涉及与Filecoin区块链交互的。
这是整体流程:
1. 发现:用户识别拥有所需数据的矿工,并向他们索取检索报价——每字节价格、解封价格、支付间隔等。
2. 支付通道设置:用户在他们和矿工之间设置一个支付通道(如果还没有的话)。
3. 数据传输与支付:矿工向用户发送数据,直到需要支付。
此时用户还未获得完整数据。
七、时空证明
上面的章节快速列举了许多使 Filecoin 独一无二的细节,在概率上对用户数据提供了保证。本节介绍了 Filecoin 使用的两种证明,并解释了它们是如何成为协议的一部分,以及它们所解决的问题。
时空证明(PoSt)是矿工向 Filecoin 网络提交的证明,证明其正在继续为网络存储数据的唯一副本。
目前,时空证明在 Filecoin 中以两种类型存在:
1. WinningPoSt
WinningPoSt是奖励存储矿工对 Filecoin 网络贡献的机制。在每个epoch开始时,一小部分存储矿工被选出来,每个矿工挖出一个新的区块。具体要求是,这些矿工提交指定扇区的压缩存储证明。每个成功创建区块的当选矿工都会获得FIL(区块奖励),以及向其他想在区块中包含信息的 Filecoin 参与者收取费用的机会。
存储矿工如果在必要的时间窗口内没按要求做到,将失去生产区块的机会,但不会因为没产出区块而受到其他惩罚。
2. WindowPoSt
WindowPoSt是 Filecoin 区块链对存储矿工做出的承诺进行审核的机制。
每个存储矿工都应该维护他们的承诺扇区。这些扇区包含与用户达成的交易,或也可能为空。后者被称为承诺容量,也就是说,矿工可以做出容量承诺,用任意数据填充一个扇区,而非用户数据。维护这些扇区可以让存储矿工证明他们在网络预留空间。
每一天分成若干时间窗口,目前48个时间窗口,每个持续时间为30分钟(60个epoch,因为1个epoch等于30秒)。
每个矿工的承诺扇区分成若干组,每组对应一个时间窗口。
在一个时间窗(30分钟)内,每个存储矿工必须为其该时间窗中的每个扇区提交一份时空证明。这需要随时访问该时间窗轮到的每个扇区,并生成 zk-SNARK 证明加入区块发布到 Filecoin 区块链上。这样,每个承诺存储的扇区在每24小时内至少会被审核一次,并保留一个永久的、可验证的、公开的记录,证明每个存储矿工保守承诺。
在上图例子中,您能看到一个矿工应该在 deadline 0 (> 16TB)、deadline 1 (< 8TB) 和 deadline 2 (< 8TB) 提交窗口时空证明,其中大部分扇区都在 deadline 0。每个矿工的 deadline 是随机的,对于这个特定的矿工来说,分别从epoch 1635、epoch 1695和epoch 1755开始。你可以在SpaceGap工具上检查这些 deadline 和更多关于矿工的细节。
Filecoin 网络期望所存储的数据持续可用。未能为一个扇区提交WindowPoSt将导致一个故障,而供应该扇区的存储矿工将被惩罚。这激励存储矿工健康运转。
八、故障
当证明在证明期内因网络连接丢失、存储故障或恶意行为导致证明未被纳入Filecoin区块链时,就会发生故障。
当一个扇区被标记为故障时,Filecoin网络将对本应存储该扇区的存储矿工进行处罚(从矿工预付的抵押币中支付)。
扇区故障费有三种:
1. 扇区故障费:需由每个处于故障状态的扇区每天支付。该费用的大小略高于该扇区每天预计获得的区块奖励额。如果一个扇区连续2周以上处于故障状态,该扇区将支付终止费,并从区块链状态中移除。
2. 扇区故障检测费:这是一次性支付的费用,如果该故障是由链上机制检测发现而非矿工诚实上报时收取。考虑到时空证明检查的概率性,该收费额设为对应扇区在若干天时间中的区块奖励。
3. 扇区终止费:一个扇区可能因为故障或矿工主动而在到期日之前终止。收取的终止费原则上相当于一个扇区当前所产生的收益,且不超过一个限额,以免阻碍长时扇区。
在filecoin.io/网站上阅读更多于故障和处理故障的经济机制
九、结论
本文涵盖了与存储和检索Filecoin上的数据有关的一些概念,用户和矿工为实现这一目标而参与的协议,以及这一过程中涉及的各种证明和保证。
它从用户和矿工的角度详细介绍了存储和检索交易的流程,以及Filecoin协议在其中一方行为不当时实施的惩罚措施。
总而言之,本文概述了Filecoin协议如何管理Filecoin网络,从而形成一个可靠和去中心化的分布式网络。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场