了解Filecoin 中的存储和检索交易 您所在的位置:网站首页 filecoin真的假的 了解Filecoin 中的存储和检索交易

了解Filecoin 中的存储和检索交易

2024-06-03 20:27| 来源: 网络整理| 查看: 265

Mar 9, 2021了解Filecoin 中的存储和检索交易

本文从存储提供方(也就是矿工)和使用 Filecoin 网络存储数据的用户的视角,解释 Filecoin 交易的运作原理。

本文的技术性解析部分,使用 JSON-RPC 的 API 格式来与 Filecoin 网络交互,查询数据。该 API 主要由应用程序使用。人工操作时,您可以使用更友好的 lotus 命令行工具。其底层也是使用 JSON-RPC API 的。

介绍

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

本文阐述了Filecoin中两种交易类型,存储交易 和 检索交易 运作的各个阶段,并详解其生命周期。并解释了密码学证明是如何用于验证系统中的参与者是否按照承诺履行职责的。

Filecoin 上的数据

为在Filecoin上存储文件,用户必须首先在其本地Filecoin节点中导入文件。这一步会产生一个 数据CID ——即内容标识符,描述该内容的唯一ID。之后,数据被传给矿工。另一种在Filecoin上存储文件的方式是通过 离线交易,不在本文讨论范围中。

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

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

Filecoin Piece 是用户在Filecoin网络上存储数据的主要协商单位。Filecoin Piece 并没有特定的大小,而是以 扇区 大小为上限,受网络参数控制。如果一个 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 网络中通过交易存取数据。网络的参与者,包括矿工(供给方)和用户(需求方),通过 存储交易 和 检索交易 来与对方交互。

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

1. 发现

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

您可以通过 JSON RPC API 查询已同步的节点,列出所有当前活跃的矿工(为了测试目的,使用了https://api.node.glif.io_公共终端节点),使用 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 @- 16TB)、deadline 1(< 8TB) 和 deadline 2 (< 8TB) 提交窗口时空证明,其中大部分扇区都在 deadline 0 。每个矿工的 deadline 是随机的,对于这个特定的矿工来说,分别从 epoch 1635、epoch 1695和epoch 1755 开始。你可以在SpaceGap工具上检查这些 deadline 和更多关于矿工的细节。

Filecoin 网络期望所存储的数据持续可用。未能为一个扇区提交WindowPoSt将导致一个 故障 ,而供应该扇区的存储矿工将被 惩罚 。这激励存储矿工健康运转。

故障

当因为网络连接丢失、存储故障或恶意行为导致证明未在期限内被纳入Filecoin区块链时,故障就发生了。

当一个扇区被登记为故障时,Filecoin 网络将对本应存储该扇区的存储矿工进行惩罚;也就是说,将对矿工未能持续存储的行为进行处罚评估(从矿工预付的抵押品中支付)。

扇区故障费分为三类:

扇区故障费 - 需由每个处于故障状态的扇区每天支付。该费用的大小略高于该扇区每天预计获得的区块奖励额。如果一个扇区连续2周以上处于故障状态,该扇区将支付终止费,并从区块链状态中移除。扇区故障检测费 - 这是一次性支付的费用,如果该故障是由链上机制检测发现而非矿工诚实上报时收取。考虑到时空证明检查的概率性,该收费额设为对应扇区在若干天时间中的区块奖励。扇区终止费 - 一个扇区可能因为故障或矿工主动而在到期日之前终止。收取的终止费原则上相当于一个扇区当前所产生的收益,且不超过一个限额,以免阻碍长时扇区。

您可在 Filecoin 规范 阅读更多关于故障和处理故障的经济机制。

结论

本文描述了关于存储和检索 Filecoin 上数据的一些概念、用户和矿工为存取数据使用的协议以及这些流程中所涉的各类证明和保证。

从用户和矿工的视角,详细介绍存储交易和检索交易的流程;以及在某一方出现恶意行为时, Filecoin 协议对其的惩罚措施。

总结起来,本文概述了 Filecoin 协议如何管理 Filecoin 网络,使之成为一个可靠和无信任的去中心化存储网络。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有