我们都知道,IPFS是号称是要取代http的存在,在传统的Web中,用户数据是存储在中心化服务器上的。中心化的弊端是,第三方可能会在用户不知情或未同意的情况下随意访问其数据,用户隐私没有保障。
此外,中心化存储可能会导致可用性问题。特别是,如果将数据存储在一个地方,会导致单节点故障,这也是我们一直所关注的数据安全问题。因为传统的Web文件存储使用是基于位置的寻址来存储和检索文件的。就是说,如果我们需要从某个网站上去找一张狗狗的图片,那么就需要通过访问某个域名,然后从里面访问一张狗狗的图片cat.png。这样我们通过网络浏览器访问此位置,作为回报,就会得到猫的照片。
但是,如果这个时候因为种种原因,上传图片者亦或者网站服务商原因将该文件现从网站服务器中删除,那么我们将再也无法再访问之前看到的那张图片。当然有可能当时有人在之前就下载好图片放在了本地,但是我们是无法与这张图片建立联系的,所以是无法取得该照片的副本的。
IPFS的出现就是为了解决这一问题
IPFS和传统的中心化存储不一样,它是用于点对点协议的文件存储,具有基于内容的寻址而不是基于位置的寻址。
这就是说,如果你要查找文件,你不需要知道它在哪里(就是不需要通过知道域名和图片名字来查找,当然IPFS会兼容域名),而是要知道它包含什么,因为它的内容是由哈希(hash)表示。
要知道,哈希功能是为每个文件创建唯一的指纹。因此,如果我们要检索一个文件,我们将询问网络“谁拥有此文件(QmSNS3KV...)哈希”,然后来自IPFS网络的拥有该文件的人就会将其提供给我们。
同时你可以将请求的哈希值与接收到的哈希值进行比较,来验证文件的完整性。如果哈希值匹配,则表明文件未更改。此哈希功能还有助于对网络进行重复数据删除,以使具有相同内容的文件无法提交两次,因为相同的内容会产生相同的哈希。
这样做可以优化存储要求,并提高网络性能。
那IPFS怎样存储文件的,文件能永存吗?
举个例子:比如我希望在IPFS网络中存储一段自己拍摄狗狗的视频,那这段狗狗的视频数据将会通过特殊的加密算法,然后把视频分割成了若干的小份,然后再分散的存储到世界各地提供存储的服务器里。
里面的一小段可能就在你邻居的存储器中,当然也可能被存储在地球另一端离你最远的地方。而IPFS中的容错机制会保证你的数据被复制了足够多数量并存放在不同的地区,即使某一个地区或者某一片区域出现数据因自然灾害完全被毁了,也能通过其他地区甚至国家的备份来完整恢复你的数据。这就极大的保证了存储在IPFS上的数据安全性,当你再次要查找这段视频时,你看到的一定是完整的,而不会是因为数据无法完全恢复而看到缺失的部分。
同时,还不必担心你的数据泄露,因为被加密保存的数据是小块数据,是无法被人查看的,就是说你的邻居也不清楚他帮谁保存了数据,也不清楚保存的数据到底是什么内容,这就比中心化的存储可以更好的保护隐私。
领取专属 10元无门槛券
私享最新 技术干货