互动式教程 | ​IPFS:可变文件系统

互动式教程 |  ​IPFS:可变文件系统

本文由IPFS原力区收集译制,版权所属原作者

 本文系围绕

IPFS可变文件系统》

做讲解 

  • 引入IPFS

  • IPFS星际文件系统

IPFS(星际文件系统),是一个点对点(P2P)网络协议,用于在分布式web上共享数据。正如它的全称所示The InterPlanetary File System),你可以将IPFS看作一个文件系统,它具有一些独特的特性,这些特性使它非常适合于安全、分散的共享。

如果你还没有这样做,可以阅读分散数据结构教程,在那里可以了解关于分散web的所有信息,以及它与你习惯的web的比较。在那里,你可以学习有关内容寻址、密码散列、内容标识符(cid)和与对等点共享的所有知识,了解这些知识,以便充分利用本教程中有关IPFS的知识。(涉及外链:https://proto.school/#/data-structures/

  • IPFS中存储和共享数据 

当内容被添加到IPFS网络时,它位于何处?

作为一个对等的数据存储系统,IPFS允许每个用户(对等者)在本地托管他们想要的任何数据。当你第一次向IPFS添加新内容时,实际上只是在你自己的机器上通过IPFS协议共享的格式进行设置。通常,你将在自己的计算机上安装IPFS,并在那里创建一个新的IPFS实例(也称为节点)。这是你的数据在本地的位置,由内容地址(cid)引用。存储在IPFS中的数据可以采用多种形式,但是最常见的用例之一是共享传统文件,我们将在本教程中对此进行更多的了解。

当你有网络连接时,你可以选择与你的对等点共享数据或文件,但是如果你是唯一承载特定资源的人,那么当你的计算机脱机时,对等点将无法使用该资源。让多个对等点承载相同的文件使它们更容易可用,而使用CIDs(通过cryptograhpic哈希创建的唯一内容标识符)使这个系统更安全。我们将在以后的教程中讨论更多关于共享的内容,但是现在我们将重点讨论如何在你自己的IPFS实例中处理文件。

  • 可变的文件系统

因为IPFS中的文件是内容寻址和不可变的,所以不能编辑文件;相反,每次更改都会创建一个新文件。可变文件系统(MFS)是一个内置在IPFS中的工具,它允许你像通常在基于名称的文件系统中那样处理文件——你可以添加、删除、移动和编辑MFS文件,并为你处理所有更新链接和哈希的工作。它是一个抽象,允许你像处理可变数据一样处理不可变数据。

通过IPFS CLI(命令行接口)和API中的文件命令访问MFS。在本教程中,我们将研究Files API

(涉及外链:https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#the-files-api-aka-mfs-the-mutable-file-system

如果你以前使用过命令行中的文件和目录,那么许多MFS方法看起来都非常熟悉!

让我们开始探索如何在IPFS中处理文件!

  • 检查目录的状态

  • 协议学院处理文件

在协议学院的教程中,在浏览器中为你创建一个新的IPFS节点,每次你在一节课中点击“Submit”按钮可原文链接查看)。在教程中,每当看到ipfs. somemethod()时,ipfs是一个引用IPFS实例的变量,也称为节点。你所采取的操作只影响你自己的IPFS节点,而不影响属于你的对等节点的节点。

协议学院正在幕后创建你的IPFS节点,这样你就可以专注于课程的内容,但是最终你需要学习如何在本地托管你自己的节点,方法是安装IPFS并在你的终端中运行一个守护进程。当你准备好进行实验时,你可以在文档中找到安装IPFS初始化节点的说明。

(涉及外链:https://docs.ipfs.io/introduction/install/

(涉及外链: https://docs.ipfs.io/introduction/usage/

如前所述,与可变文件系统关联的方法是文件API的一部分,因此它们将采用ipfs.files.someMethod()的格式。来看看一个简单的方法,你可以在向IPFS节点添加任何文件之前就开始使用它。

  • 使用IPFS .files.stat探索IPFS节点

在使用IPFS节点时,你通常希望检查文件或目录的状态。你可以使用ipfs.files.stat来实现这一点,传入要检查的路径。

例如,要检查根目录( / )中名为stuff的目录的状态,可以这样调用方法:

await ipfs.files.stat(‘/stuff’)

这个方法返回一个对象,其中包含关于协议学院的文件或目录的一些基本数据:

  • hash(带加密哈希的字符串)

  • Size(文件或目录大小为字节的整数)

  • cumulativeSize(一个以字节为单位组成文件的DAGNodes大小的整数

  • type(可以是目录或文件的字符串)

  • blocks(如果类型是目录,这是目录中的文件数;如果类型是file,则表示组成文件的块数

  • withLocality(一个布尔值,用于指示是否存在局部性信息)

  • local(一个布尔值,用于指示查询的dag是否在本地完全存在

  • sizeLocal (一个整数,表示本地数据的累积大小) 

可以明白,一个目录的大小总是0,不管它包含多少条目,因为目录实际上只是一组到其他文件和目录的链接。相反,目录的累积量会随着目录内容的变化而变化。它不仅表示该目录中所有条目的文件大小,还表示描述这些条目的元数据:类型、块大小等等。

需要注意的是,即使还没有IPFS节点,也可以统计它。甚至空节点也有CID(哈希)。

 -全文完-

下节继续讲解Working with files in ProtoSchool(在协议学院处理文件)

持续讲解IPFS:可变文件系统》及后续

本文由IPFS原力区编译,原文链接:

https://proto.school/#/mutable-file-system/

互动式教程 |  ​IPFS:可变文件系统

【IPFS原力区】

Slogan:让存储更安全、更高效、更开放、更经济
 
价值观:价值 共建 共享 荣耀
总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。
每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。
互动式教程 |  ​IPFS:可变文件系统

本文来自https://mp.weixin.qq.com/s/FRz2ly-_83vCkqT9xyskVw,经授权后发布,本文观点不代表IPFSER立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

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

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code