一个月暴涨3倍,一文了解Filecoin的存储和检索交易原理!
发布日期:2021-05-06 19:19:33 浏览次数:24 分类:技术文章

本文共 6441 字,大约阅读时间需要 21 分钟。

Filecoin持续暴涨突破450元一枚,一个多月时间上涨超过3倍!伴随着币价上涨和Gas费的持续下降,目前挖矿基本3个月左右回本,年理论收益率接近10倍,成为目前最为火热的区块链项目,没有之一!

作为最有潜力实现区块链实际应用的项目,在整体数字货币牛市行情中被追捧持续暴涨也在所难免。其实马尔斯之前已经多次跟大家分享过filecoin的核心价值,坚定看好filecoin作为WEB3.0基础设施的未来!

本文就从存储提供方,也就是矿工和使用Filecoin网络存储数据的用户的角度详细介绍Filecoin 网络的运作原理,带大家更详细地了解Filecoin网络的运作原理及其价值。

Filecoin通过允许任何人作为存储提供者参与网络实现规模经济,目前由分布在全球各地的数百个存储提供者,也就是矿工组成。内容寻址和加密存储证明验证了数据在矿工的硬件上长期正确安全地存储,从而创造了一个强大可靠的分布式互联网。

作为存储用户在Filecoin上存储文件,必须首先在其本地Filecoin节点中导入文件。这一步会生成一个数据CID ——即内容标识符,描述该内容的唯一ID,然后数据被传输给矿工。

将数据导入本地的Filecoin节点这步,可以通过lotus client import命令来完成。要记住所产生的 _数据CID_(之后在本地节点上也可获取),因为以后从矿工那里检索数据时会用到。

将数据导入本地节点后,用户需发起交易。这步通过lotus client deal命令来完成。该命令将一个 数据CID 作为输入,产生一个 Filecoin Piece ,并交互式引导用户完成存储交易流程,详见下文。

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

每个 Filecoin Piece 是一个 CAR 文件,包含一个 _IPLD DAG_,有对应的数据 CID 和 _piece CID_。

CAR即内容可寻址档案(Content Addressable aRchives) - 每个 CAR 文件是一个 IPLD DAG 的序列化表示,即将其数据块串起来,再加上描述DAG图的头部信息(还有 根CID )。

当用户要在Filecoin网络中存储文件时,首先要用UnixFS制作文件的 IPLD DAG (这就是lotus client import命令的作用)。代表DAG根节点的哈希是一个IPFS风格的CID,称为数据 CID 。

UnixFS是一种基于protobuf的格式,用于描述IPFS中的文件、目录和软链接。在Filecoin中UnixFS是文件格式标准,文件以此格式提交给Filecoin网络。

所产生的 CAR 文件用额外的零位来补齐,以便使文件写为二叉merkle树。

用户在 Filecoin 网络中通过交易存取数据,网络的参与者包括矿工(供给方)和用户(需求方),通过存储交易和检索交易来与对方交互。

存储交易的过程如下:

第一步用户先确定矿工及其定价,即矿工为了接受交易而希望收到的每epoch(30秒)每GiB的价格,单位为attoFIL(1 attoFIL等于10^-18 * FIL)。目前,Filecoin中一笔交易的最短期限为180天。

可以通过 JSON RPC API 查询已同步的节点,列出所有当前活跃的矿工,使用 Filecoin.StateListMiners 方法。

curl -X POST -H "Content-Type: application/json" \  --data '{ "jsonrpc": "2.0", "method": "Filecoin.StateListMiners", "params": [ null ], "id": 1 }' \  'https://api.node.glif.io' | jq{  "jsonrpc": "2.0",  "result": [    "f011303",    "f011092",    ...

用户可以根据矿工在网络中的信誉和能力进行选择,当前矿工的信誉指标还未进入 Filecoin 协议,未来会持续更新。

当用户选好矿工之后,可以用诸如 Filecoin.StateMinerInfo 方法来获取矿工的 PeerID ,用于在 libp2p 协议中与对方建立安全连接。

curl -X POST -H "Content-Type: application/json" \  --data '{ "jsonrpc": "2.0", "method": "Filecoin.StateMinerInfo", "params": [ "f03274", null ], "id": 1 }' \  'https://api.node.glif.io' | jq{  "jsonrpc": "2.0",  "result": {    "Owner": "f03261",    "PeerId": "12D3KooWP5D9TmqC45i6L2e2qQHYcuxaUwPdYo6CzqUMVmFEH3N9",    ...

接下来,可以用 Filecoin.ClientQueryAsk 方法获取一个带签名的 StorageAsk 。这将与选定的矿工建立 libp2p 连接,并询问存储报价。

curl -X POST https://api.node.glif.io \     -H "Content-Type: application/json" --data-binary @- << EOF{  "jsonrpc": "2.0", "method": "Filecoin.ClientQueryAsk", "id": 1,  "params": [    "12D3KooWP5D9TmqC45i6L2e2qQHYcuxaUwPdYo6CzqUMVmFEH3N9",    "f03274"  ]}EOF{  "jsonrpc": "2.0",  "result": {    "Price": "100000000000",    "VerifiedPrice": "100000000000",    "MinPieceSize": 256,    "MaxPieceSize": 34359738368,    "Miner": "f03274",    "Timestamp": 148031,    "Expiry": 1199231,    "SeqNo": 14  },  "id": 1}

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

第二步,议价和数据发送。在这一阶段,双方就交易条款达成协议,如交易成本、交易期限、交易起始时间等,然后,数据从用户发至矿工。

第三步通过 PublishStorageDeals 消息在链上发布交易,使存储提供方对交易公开负责。

第四步,交易一旦在链上发布,就会被交给 挖矿子系统 ,打包成扇区,随后 封装 ,再不断地被证明可用。

存储挖矿子系统确保 Filecoin 网络的数据由矿工有效保存,并且:

  1. 参与 Filecoin 存储市场 ,承接用户数据,参与存储交易。
  2. 参与 Filecoin 存储算力共识 ,验证和产出区块,让 Filecoin 区块链增长,并获得区块奖励。

该系统监督以下进程:

承诺新存储和注册新扇区

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

证明存储持续可用 (见WindowPoSt)

所有存储矿工需要持续提交链上证明,以验证扇区被完整存储。

宣布存储故障和从故障中恢复

如果扇区所需的上述证明如果未成功提交,将导致故障,矿工会受到处罚。

存储矿工和用户的考量

如上文所述,存储交易是在链上发布后,才会被激活和封装。这一点很重要,因为发布交易会将用户的资金锁定在链上托管,只有如此在封存数据进扇区之后,矿工的收益才有保障。可以将在链上发布交易视为签署合同,将封装和激活交易视为开始做承诺的工作。

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

  1. 交易入金:用户将资金锁入代管中;
  2. 向矿工提出交易提议;
  3. 检查意向来接受交易;
  4. 数据传输给矿工来进行交易,这是通过GraphSync协议完成的。GraphSync是节点之间同步IPLD图的协议,该协议允许本地节点向远程节点发出请求,以获取在远程节点的IPLD图上按选择器搜索所得的结果。Lotus使用的是GraphSync协议的实现ipfs/go-graphsync;
  5. 检查是否接受,确保矿工已经接受了交易并在链上发布;
  6. 封装,交易已在链上,矿工正在封装包含交易的扇区;
  7. 激活,交易已被封存并处于活跃状态。从这里开始,存储提供商/矿工应定期证明他们继续存储数据,详见下面的时空证明。

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

  1. 验证交易,收到交易提议并检查其参数(大小、价格等);
  2. 检查是否有锁定资金,确保用户有锁定资金,可以支付交易;
  3. 等待数据,接收客户提供的交易数据;
  4. 为交易提供抵押用于链上交易;
  5. 在链上发布交易上链;
  6. 封装扇区;
  7. 激活交易,从这里开始,存储提供者(矿工)定期提交WindowPoSt,证明他们在持续存储数据。

检索交易流程

检索交易与存储交易不同,使用支付通道,主要链下完成。数据传输是按量计价的,用户在数据传输的过程中逐步向矿工支付费用。整个过程中,只有创建支付通道、兑换凭证,是涉及与 Filecoin 区块链交互的。

整体流程如下:

  1. 发现用户找出拥有其所需数据的矿工,并向其索取检索报价详情:每字节价格、解封价格、付款间隔;
  2. 设立支付通道,用户需要和矿工之间设立一个支付通道(如果还不存在的话);
  3. 数据传输与支付,矿工向用户发送数据,直到需要支付。当达到一定的阈值时,会要求进行支付处理,之后继续进行数据传输。根据矿工是否在他们的区块存储中拥有数据,他们可能需要首先解封数据。这是一个非常规和非瞬时的操作,这是存储交易一节中描述的封装的反向操作;

时空证明

上面的介绍列举了许多使 Filecoin 独一无二的细节,在概率上对用户数据提供了保证。下面介绍了 Filecoin 使用的两种证明,并解释了它们是如何成为协议的一部分,以及它们所解决的问题。

时空证明(PoSt)是矿工向 Filecoin 网络提交的证明,证明其正在继续为网络存储数据的唯一副本。

目前,时空证明在 Filecoin 中以两种类型存在:

  1. WindowPoSt
  2. WinningPoSt

WinningPoSt

WinningPoSt是奖励存储矿工对 Filecoin 网络贡献的机制。在每个epoch开始时,一小部分存储矿工被选出来,每个矿工挖出一个新的区块。具体要求是,这些矿工提交指定扇区的压缩存储证明。每个成功创建区块的当选矿工都会获得FIL(区块奖励),以及向其他想在区块中包含信息的 Filecoin 参与者收取费用的机会。

存储矿工如果在必要的时间窗口内没按要求做到,将失去生产区块的机会,但不会因为没产出区块而受到其他惩罚。

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存储和检索数据的一些概念、用户和矿工为存取数据使用的协议以及这些流程中所涉的各类证明和保证的详细介绍,我们可以看到Filecoin通过独特的存储和复制证明机制,建立了一个强大、可靠的分布式存储网络,真正把区块链带进可实际应用的时代。

Filecoin自2020年10月15日上线以来还不到6个月时间,全网存储已经达到3.318 EiB。相当于可以存储10亿部1080p电影、累计时长2272830年的连续视频通话、63份目前整个互联网档案的备份,成长速度远远超出预期。

星际空间作从2018年就开始从事Filecoin网络技术研发和生态建设,坚定看好Filecoin作为WEB3.0基础设施的未来。虽然最近一个月来Filecoin价格已经上涨超3倍,但这其实只是刚刚开始。未来随着Filecoin生态持续繁荣,Filecoin未来不可限量!

欢迎大家持续关注@星际空间IPFS,将持续给大家带来优质内容和信息。

上一篇:Filecoin官方发布:并不存在“双花”问题!
下一篇:Filecoin迎来1.5.0版本更新,会带来哪些改变?

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年03月29日 06时13分20秒