LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 官方版块--一文全面了解Filecoin存储和检索交易流程

官方版块--一文全面了解Filecoin存储和检索交易流程

2021-03-11 浙江云储 来源:区块链网络

本篇博文从存储提供商(也就是矿工)和想要在Filecoin网络上存储数据的客户端两个角度解释了Filecoin交易的工作原理。

查询数据时,本文中的技术说明使用JSON-RPC API与Filecoin网络进行交互。该API主要由应用程序使用。作为人类,您可以使用用户友好的lotus命令行工具,该工具在后台使用JSON-RPC API。

介 绍

Filecoin网络通过允许任何人作为存储提供商参与来实现规模经济。当前,该网络由遍布全球的数百家存储提供商组成。内容寻址和加密存储证明可验证数据是否随着时间的推移正确而安全地存储在矿工的硬件上,从而创建了强大而可靠的服务。

这篇博文介绍了Filecoin两种交易的基本阶段,即存储交易和检索交易,并详细说明了它们的生命周期。还说明了用于验证系统参与者是否按照其承诺履行其职责的加密证明。

Filecoin上的数据

为了在Filecoin上存储文件,客户端必须首先将它们导入到本地Filecoin节点中。此步骤生成数据CID(内容标识符),一个唯一描述内容的ID,之后,数据将传输到矿工。另一种在Filecoin上存储文件的方法是通过离线交易。

可以使用lotus客户端命令将数据导入本地Filecoin节点。记住生成的数据CID,这很重要的(以后在本地节点上也可以使用),因为以后从矿工那里检索数据时必须使用它。

在将数据导入本地节点之后,用户必须发起一个交易。这可以通过lotu客户端导入命令完成。该命令将数据CID作为输入,生成一个Filecoin Piece,并以交互方式引导用户完成下面详细介绍的存储交易流程。

Filecoin Piece是用户存储在Filecoin网络上的数据的主要协商单位。Filecoin Piece没有特定的大小,但受网络参数的制约,受扇区大小的上限。如果一个Filecoin Piece大于矿工支持的扇区大小,就必须将其分割成更多的碎片,使每个碎片都适合一个扇区。

Filecoin Piece是一个包含IPLD DAG的CAR文件,它有自己的数据/有效负载CID和Piece CID。

CAR代表内容可寻址归档文件(Content Addressable aRchives)——CAR文件是任何IPLD DAG的序列化表示,作为其块的串联,再加上一个描述文件中图形的头文件(带有根CID)。

当客户端要在Filecoin网络中存储文件时,首先要用UnixFS制作文件的IPLD DAG(这就是lotus客户端导入命令的作用)。代表DAG根节点的哈希是一个IPFS式的CID,称为data/payload CID。

UnixFS是一种基于protobuf的格式,用于描述IPFS中的文件、目录和符号链接。UnixFS在Filecoin中用作提交到Filecoin网络的文件的文件格式指南。

所产生的CAR文件用额外的零位来填充,以便使文件成为二进制的梅克尔树。

存储交易流程

用户可以通过交易将数据存储在Filecoin网络中并从Filecoin网络中检索数据。网络中的参与者,矿工(供应方)和客户端(需求方)通过存储交易和检索交易相互交互。

存储交易的生命周期如下:

NO.1 发现

客户端识别矿工并确定他们当前的要价,即矿工为了接受交易而希望收到的每GiB每纪元(30秒)的价格,单位为attoFIL(1 attoFIL等于10^-18 * FIL)。目前Filecoin中一笔交易的最短期限为180天。

您可以通过查询同步节点的JSON RPC API(为了测试目的,使用https://api.node.glif.io作为公共端点),使用Filecoin.StateListMiners方法,列出所有当前活跃的矿工:

您可能需要根据特定提供商的信誉或网络能力来决定。矿工的声誉指标还不是Filecoin协议的一部分,因此本文不涉及。

一旦你选择了一个特定的矿工,你需要获取它的PeerID,例如用Filecoin.StateMinerInfo方法,通过libp2p协议与他们建立安全连接:

然后你可以用Filecoin.ClientQueryAsk方法查询一个签名的StorageAsk,这将建立一个与所选矿工的直接libp2p连接,并询问存储报价:

该结果包括这个矿工愿意接受的交易细节,比如接纳的Filecoin Piece大小范围和每GiB每纪元的价格。但需要注意的是,提出与矿工的存储要求相匹配的存储交易建议是一个前提条件,但不足以确保交易被接受,存储提供商可能会在之后运行自己的决策逻辑。

NO.2 谈判和数据传输

在此阶段,双方就交易条款达成协议,例如交易成本,交易持续时间,交易开始时间等。

然后数据从客户端传输到矿工。

NO.3 出示

交易通过PublishStorageDeals消息在链上发布,从而使存储提供商对交易公开负责。

NO.4 交接

交易在链上发布后,将被移交给Storage Mining子系统,打包成一个扇区,该扇区随后被密封,并随

后被连续证明。

Storage Mining子系统

Storage Mining子系统确保矿工可以有效地将存储提交到Filecoin网络,并:

参与Filecoin存储市场,承接客户数据,参与存储交易。

参与Filecoin存储力共识,验证并生成区块,以壮大Filecoin区块链,并以此获得区块奖励和费用。

它监督以下过程:

提交新存储并注册新扇区

为了在Filecoin中注册一个扇区,矿工必须封装该扇区。封装是一个计算量很大的过程,它以证明的形式生成数据的唯一表示,称为复制证明或PoRep。一旦证据生成,矿工就会压缩它并将结果提交给区块链。这是一份证明,证明矿工确实复制了他们同意存储的数据的副本。

不断验证存储

每个存储矿工都必须不断地在链上提交证明,以证明他们继续存储其扇区。

声明存储故障并从中恢复

未能提交给定扇区的上述证明将导致错误,并将对矿工处以罚款。

存储矿工和客户注意事项

如上所述,存储交易在激活和封存之前,会在链上发布。这一点很重要,因为发布交易会将客户的资金锁定在链上托管。因此,矿工有保证,如果他们确实封存了某个扇区的数据,他们将获得报酬。

它有助于将在链上发布的交易视为签订合同,而将合同的达成和激活视为开始进行矿工承诺的工作。

从想要在Filecoin上存储数据的客户的角度来看,交易大致经过以下几个阶段:

为交易提供资金,客户将资金锁定在代管中。

向矿工提出交易建议

检查是否有接受交易的意向

将交易的数据传输给矿工。这是通过GraphSync协议完成的。GraphSync是一个在对等体之间同步IPLD图的协议。它允许主机向远程对等体发出一个请求,以获取在远程对等体本地IPLD图上遍历IPLD选择器的所有结果。Lotus使用的是GraphSync协议的ipfs/go-graphsync实现。

检查接受。确保矿工已经接受了交易,并在链上发布。

Sealing。交易已在链上,矿工目前正在封存包含该交易的扇区。

活跃。交易已被封存,并处于活跃状态。从这里开始,存储提供商/矿工应该定期证明他们继续存储数据。

从通过存储客户数据向客户提供服务的矿工的角度来看,交易大致经历以下几个阶段:

验证交易。收到交易建议,并检查其参数(大小,价格等)

检查是否有锁定资金。确保客户已锁定资金并可以为交易付款。

等待数据,收到客户提供的交易数据。

在链上为交易提供抵押物

在链上发布交易

封闭该区

激活交易,从这里开始,存储提供商/运营商定期提交WindowPoSt证明,证明他们正在持续存储数据。

检索交易流程

检索交易与存储交易不同,大多发生在支付渠道促成的链外。数据传输是计价的,客户端在数据传输的过程中逐步向矿工支付费用。创建支付通道,兑换凭证,是整个过程中唯一涉及与Filecoin区块链交互的部分。

这是整个过程:

发现:客户识别拥有所需数据的矿工,并向他们请求检索报价-每字节价格,未密封价格,付款间隔。

付款渠道设置:客户在他们和矿工之间建立付款渠道(如果尚不存在)。

通过付款进行数据传输:矿工将数据发送到客户,直到需要付款为止。当达到特定阈值时,请求付款处理,然后数据传输继续。根据矿工是否在他们的区块存储中有数据,他们可能需要首先将其解封,这是一个不平凡且非即时的操作,与存储交易一节中描述的密封相反。

客户端尚未成功检索数据的完整副本。

时空证明

上面的章节浏览了许多细节,这些细节使得Filecoin独一无二,并为用户提供了数据的概率保证。本节介绍了Filecoin利用的两种证明,还解释了它们如何融入协议以及它们所解决的问题。

时空证明(PoSt)是一种过程,存储矿工可以通过该过程向Filecoin网络证明他们继续代表网络继续存储某些数据的唯一副本。

目前,时空证明在Filecoin中表现为两种:窗口时空证明(WindowPoSt)和赢得时空证明(WinningPoSt)

WinningPoSt

赢得时空证明(WinningPoSt)是一种机制,通过这种机制,存储矿工对Filecoin网络的贡献得到了奖励。在每个时期的开始,都会选举少量的存储矿工来为每个矿开采一个新的区块。为此,每个矿工的任务是为指定扇区提交压缩的存储证明。每个成功创建区块的选举矿工都将获得FIL(区块奖励),并有机会向其他Filecoin参与者收取费用,以将消息包括在区块中。

未能在必要的窗口中执行此操作的存储矿工将丧失其开采区块的机会,但不会因此而受到惩罚。

WindowPoSt

窗口时空证明(WindowPoSt)是一种机制,存储矿工的承诺由Filecoin区块链审核。

每个存储矿工都应该维护他们的抵押扇区。这些扇区包含与客户达成的交易或空扇区。后者被称为承诺容量,即矿工可以做出容量承诺,用任意数据而不是客户数据填充一个扇区。维护这些扇区可以让存储矿工证明他们在代表网络保留空间。

每天被分解成一个窗口阵列,目前有48个窗口,持续时间为30分钟(60个纪元,因为1个纪元等于30秒)。

每个存储矿工的质押扇区集被分割成多个子集,每个窗口为一个子集。

在给定的窗口(30min)内,每个存储矿工必须为各自子集中的每个扇区提交一份空间证明。这需要随时访问每个被挑战的扇区,并将导致zk-SNARK证明作为区块中的消息发布到Filecoin区块链上。通过这种方式,每个承诺存储的扇区在任何24小时内至少会被审核一次,并保留一个永久的、可验证的、公开的记录,证明每个存储矿工的持续承诺。

在上图中,你可以看到,一个样本矿工应该在截止日期0(>16TB)、截止日期1(<8TB)和截止日期2(<8TB)提交WindowPoSt证明,他们的大部分扇区属于截止日期0。每个矿工的截止日期是随机的,对于这个特定的矿工来说,分别从纪元1635年、纪元1695年和纪元1755年开始。你可以在SpaceGap工具上查看这些截止日期和更多关于矿工的细节。

Filecoin网络期望存储数据的持续可用性。如果未能为某个扇区提交WindowPoSt,将导致故障,供应该扇区的存储矿工将被削减。这激励了存储矿工的健康行为。

缺 点

如果在证明期内未在Filecoin区块链中包含证明,则会导致故障,这是由于网络连接丢失,存储故障或恶意行为导致的。

当某个扇区出现故障时,Filecoin网络将大幅削减本应存储该扇区的存储矿工;也就是说,它将对该矿工(将从该矿工提供的抵押品中支付)未能履行其存储承诺的行为进行处罚。

扇区故障收费分为三种:

扇区故障费:当扇区处于故障状态时,每天按扇区支付此费用。这项费用的规模略高于该行业预计每天获得的整体奖励金额。如果某个扇区连续出现故障超过2周,该扇区将支付终止费,并从链状态中移除。

扇区故障检测费:如果矿工没有如实报告,而未报告的故障被区块链捕获,则这是在发生故障时支付的一次性费用。考虑到事后检查的概率性质,这被设定为一个特定部门有望获得的几天的区块奖励。

扇区终止费:扇区可在到期日前通过自动故障或矿工决定终止。收取终止费,原则上相当于一个部门迄今为止的收入,但不超过一个限度,以避免阻碍较长的部门寿命。

总 结

这篇文章涵盖了与在Filecoin上存储和检索数据有关的一些概念,客户和矿工为实现这一目的而参与的协议以及过程中涉及的各种证明和保证。

它从客户和矿工的角度详细说明了存储和检索交易的流程,以及在当事方之一行为不当的情况下Filecoin协议将要执行的处罚。

总而言之,它概述了Filecoin协议如何管理Filecoin网络以形成可靠且不受信任的分布式存储网络的一些基础。

—-

编译者/作者:浙江云储

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...