本文由币车HIT(biche.yaofache.com)大V养成计划支持
员外臆想的背景
有很多喜欢看小电影的同学,一定遇到过这样的情况,求爷爷告奶奶终于找下一个能看小电影的网站,结果没看几天,该网站被封了,然后你又奔波在寻找下一个网站的路上,结果刚找小还没怎么看了,就又被封了,简直是想死的心都有了。
那凭什么他的官网封了,我的小电影就看不成了呢?
ipfs.jpg
云存储的原理
相信大家都用过百度云盘,也分享过链接,那么大家就会发现链接的形式是这样的:
首先,如果你想下载这个路径下的文件的时候,按照 HTTP 协议,浏览器会最先去访问这个服务器的地址,也就是俗称的 域名/IP 地址,对应上面这个网址中的 pan.baidu.com
这部分。随后就可以根据这个网址的后半部分 code/helloworld/hello.txt
来找到 hello.txt
文件了,这个就是文件的相对路径,而 pan.baidu.com
就算是绝对路径了。
举个例子区别一下相对路径跟绝对路径的区别,假如员外向你问路,说去公园怎么走,如果你说沿着这条路向前走第一个路口右拐,直行500米就到了,那这就是相对路径。如果你说公园在北纬多少度,东经多少度,你去找吧,那这就是绝对路径了。
这种形式的文件路径取决于文件的管理者,如果管理者更改其中的一个文件夹名称之类的,那么你通过原来给你提供的链接就访问不到了。同时如果百度云公司的服务器关闭了,那你照样访问不到,因为你连 pan.baidu.com
这个绝对路径都访问不到了。也就是你提供小电影的地址都失效了。
星际文件存储IPFS是如何做的?
IPFS 的做法是不考虑文件的存放位置了,也不考虑服务器的地址,而是只关注这个文件中可能出现的内容。那是怎么做到的呢?
还记得我们之前讲过的哈希值吗?一个文件用同一个哈希算法,不管算多少次,都只能得出一个一样的结果。比如这样的:QmXGTaGWTT1uUtfSb2sBAvArMEVLK4rQEcQg5bv7wwdzwU
。当你在这个文件中哪怕改动一个字母,这个计算出来的哈希值就会发生改变,理论上一个哈希值只对应一个文件。
当你用 IPFS 来访问一个文件的哈希时,他会使用一个分布式哈希表来找到文件所在的节点,然后验证文件数据之后取回文件,你访问成功。
那这些文件存放在哪里了呢?
这些文件被分散到网络中的各个具有存储功能的节点,这个节点可以是你,也可以是我。小的文件直接存放进去,大的文件可以分割开来,分散存储在不同的节点当中。这么做的好处有很多,比如:
可以高效的利用其闲置的存储资源;
每个节点不需要多大,只要节点数够多,积累的存储空间、带宽和可靠性也是很可观的;
实现了去中心化,你最爱看的小电影,再也不会访问不到了。