最近离开了舒适的校园,进入社会的“挨打场”,所以有一段时间没有更博客。再这样下去感觉不太行,平时也没有多少时间和精力去提高自己。所以现在趁着周末有空来记录一下最近比较火的一个概念IPFS。先说明,本文无任何广告。
IPFS全称是InterPlanetary File System,星际文件系统。有那么点高大上的名字。看这个名字就能明白,它其实就是个文件系统,不过能运用在星际上。
这里先要说一下平时我们熟悉的http协议,我们知道平时浏览网页时,需要在网址前面加一个http/https
才能访问到对应的网站。这其实是我们告诉了浏览器,访问网页时使用http或者https
协议去访问。(关于这两者的区别,这里先不做介绍,只要知道带s的更安全。)
举个访问百度的例子,当我们在浏览器输入http://www.baidu.com
时,浏览器会去访问baidu的服务器,待服务器处理完成后返回响应结果给浏览器,并渲染输出。这是http
协议基本流程,也是我们平时所理解的web应用的处理流程。
这种模式有一个弊端,那就是资源全部集中在服务器中。试想一下,如果baidu的机房着火或者停电等等不可抗力因素,那么,我们是不是就用不了这个搜索引擎了呢?在现实中就有一个相似的例子,几年前土耳其以威胁国家安全的理由,关闭维基在该国的服务器以及建立网络墙(貌似是这样)。导致该国无法使用到维基服务。
在传统的Web中,用户数据存储在自己能够完全控制的集中式存储服务器上。这种控制能力,为他们提供了在用户不知情或未经用户同意的情况下可能会滥用的高级特特权。此外,集中存储可能存在可用性问题,尤其是如果数据仅存储在一个位置时,会因此产生单点故障。
这种模式的弊端其实我们是比较熟悉的,类似于版本管理工具svn
,当中央的代码仓库节点宕机了,那么工作团队就会因为代码管理这个问题无法正常工作了…基于此原因git
就诞生了。
同理,IPFS,本文的主角之一,就诞生了。它的出现就解决了上述的问题。
http
协议本质是基于内容寻址的,再拿上述的例子说明,我们告诉浏览器地址http://www.baidu.com
,浏览器得到这个地址之后它就根据此地址去寻找资源,这里我们没有指定要访问哪个资源,所以就默认去找它的首页。
而IPFS则不同,它是基于内容寻址的。上述的http
协议是所有资源都储存在一个集中式的服务器内。IPFS是一个分布式的解决方案,在一个网络内,只要你是节点,你就可以储存资源。
看到了吧,小明、小红和小灰三个人注册进了网络中,此时,它们三个人就作为三个节点存在。有那么一天,小明想要我这个博主的个人简历,于是去网络上问。小红没有,而小灰有,然后小灰发送我的简历给小明。这就是基于内容寻址。
IPFS的模型就是如此,抱歉前面这么啰嗦了。它和http
的区别是资源不再集中化,并且不再依靠单一的服务器地址,而是靠着要寻找资源的内容去寻找。
IPFS是一种用于文件存储的对等网络协议,采用的是基于内容的寻址,而非基于位置。这意味着要查找文件,我们不需要知道它在哪里(abc.com/cat.png),而是它包含的内容(QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan)——由内容的哈希进行表示。
哈希函数为每个文件创建唯一的“指纹”。因此,如果我们想要检索一个文件,只需询问网络“谁拥有这个文件(QmSNssW5a9S3KV…)”,然后来自IPFS网络的某个拥有该文件的人将提供给我们。我们可以通过将请求的哈希值与接收到的哈希值进行比较来验证文件的完整性,如果哈希值匹配,则可知该文件没有被更改。这个哈希函数还可以帮助消除网络的重复,这样具有相同内容的文件就无需提交两次,因为相同的内容会产生相同的哈希。这优化了存储需求,也提高了网络的性能。
这一节摘选自网络.
文件存储被为IPFS对象,后者是一种数据结构,包括:
如果我们的文件大于256 KB,那么它将被拆分并存储在多个IPFS对象中,然后创建一个空对象,链接文件的所有其他对象。如下图所示:
IPFS作为一种不可变的存储方式工作,一旦某个东西被添加到网络中,它就不能被更改,因为更改文件将更改哈希。那么我们如何更新文件呢?为此,IPFS使用了版本控制系统,该系统特别是在开源社区中被广泛使用,被称为Git。IPFS具有“提交对象”,这有助于跟踪文件创建以来的所有版本。每当我们在IPFS网络上添加一个文件时,都会为该文件创建一个提交对象,当我们更新该文件时,会创建一个新的提交对象,该对象指向该文件的旧提交对象,如下图所示:
但是IPFS
也不是最优解,因为上面的例子还有一个问题,就是如果小灰不在网络中呢?那小红没有简历,小明不就找不到了吗?
面对这一问题,官方给出的解决方法是,尽量扩大在网络中的节点数,以此来解决容错率。节点数多了,你找到的资源可能性就大了。
所以这个文件系统当然是越多人使用越好,但是人家凭啥帮你存东西呢?像上面例子一样,小灰凭啥帮你存简历呢???
如果不是因为博主简历优秀,小灰凭啥帮你存呢?
开个玩笑,人家帮你存,还要占用人家的存储空间,只为你能方便的获取资源,这笔买卖不太划算呀。所以官方又引进了一个制度—FileCoin。简单来说,就是你帮我存东西,并且通过官方的一系列认证后(主要是算力认证与时空认证),我就给你FileCoin。这个东西也是IPFS的激励机制。与比特币相似,但是又有很大的不同。我会在下篇文章中介绍。
最后,感谢您的观看,最近实习与学校的事情,有点忙,可能有些私信不能及时回复,在这里说声抱歉了。