IPFS的优势和不足

IPFS原意是指一种点对点的去中心化内容分发协议,而包括其开发者自身在内的很多人往往也用IPFS指代实现了IPFS协议的系统。

IPFS是完全去中心化的设计,每个节点都是对等的。每个节点维护一张DHT(分布式哈希表),包含相应数据块与目标节点的对应映射关系。整个DHT被组织成二叉树,平均查询联系节点的复杂度是O(log2N),例如要查询1000万节点最多需要20跳。

IPFS基于内容寻址,通过文件或数据块的Hash值,IPFS便可自动在全网节点中找到拥有这些数据块的节点,并从节点上拉取数据。

上传数据到IPFS时,IPFS会把文件分块后保存到本地IPFS节点的blockstore,并记录元数据。将来其它节点需要读取该数据时,就会将数据拉取到该节点,从而增加一份副本。有更多的节点都读该数据时,该数据就会在IPFS网络上有很多副本。

IPFS的优势

IPFS所宣传的目标是补充甚至取代现在上网所用的HTTP协议。人们用IPFS加内容Hash值访问网页,代替现有的http加域名的方式,只要IPFS网络上有该网页,不管是被移动到了哪个节点上都能访问到该网页,使得网站内容可以更长久和有效地存在。

IPFS也可以作为CDN使用,因为其热数据在全球各地都有副本,用户根据内容寻址,就近拉取。如果是没人用过的冷数据就不占用额外的存储空间。CDN的市场有大约100亿美元左右,这是IPFS可以发力的市场。

IPFS的不足

IPFS虽然有诸多的优点和光环,但其设计还不能满足持久化存储市场需求。如果没有其它节点拉取该数据,就只有本机存有该数据的孤本,一旦本机出现故障,该数据就会丢失。也就是说,IPFS并不自动对数据做冗余,更没有心跳监测和自动数据重建。因此,IPFS没有数据持久性保障机制。换句话说,IPFS并不能保证所存储的数据内容永久不丢。

IPFS没有设计数据持久性保障机制,与IPFS不对数据加密有直接关系。根据伦理要求,IPFS不能把数据自动推送到其它节点,以避免将色情图片推送给女性,或者将宗教禁忌内容推送给不合适的人。如果是加密数据,都是看不出内容的随机数一般的密文,就不存在这个问题,但对明文数据就必须考虑这个伦理问题。

IPFS不加密,与IPFS没有密文去重技术有直接关系。众所周知,密文去重是YottaChain独家拥有的专利技术,IPFS就只能在加密和去重之间二选一。IPFS选择了数据去重,牺牲了数据加密,就导致了IPFS的数据持久性保障机制的缺失。

IPFS不加密,还直接导致了IPFS的数据安全性保障机制的缺失。上传到IPFS的数据对任何人都是开放的,只要知道Hash值就可以读取。如果说BAT这样的中心化平台会偷用户数据作恶的话,那也只是一个人偷,而将数据存储到IPFS这样的没有数据安全性保障机制的去中心化存储系统,就变成了人人都可以偷数据。毕竟,将数据不被偷的希望寄托在没人知道该数据的Hash值,就相当于将隐私数据放到一个公开的网站上,赌没有人知道该网站的域名。

IPFS对硬盘资源的利用率也不高,有抽样调查表明,IPFS只利用了70%的硬盘空间,其余空间被浪费了。

IPFS的并发性能也有待提高,很多用户都反映并发数超过2就会拥堵甚至出错。

IPFS的宣传误区

由于IPFS涉及很专业的领域,导致一些非专业人员在宣传时经常因为误解而出现不实宣传。其实,只要认真阅读官方网站就不难发现一些常见宣传的谬误之处

误区一:IPFS可以永久保留数据。

真相:由于IPFS并没有数据持久性保障机制,IPFS并不是为永久保留数据设计的。但是IPFS能让你找到IPFS网络上其它节点保存的相同数据,因此只要全网还有这个数据,你就永远能找到该数据。对于很多人都用的数据(即热数据)就不会丢,但对只有你自己用到的数据,或者需要按法律规定保存10年甚至20年但在此期间根本没有人拉取该数据的,IPFS并不是一个适合的存储方式。10年后原始保存该数据的硬盘已经坏掉了,但由于从来没有人拉取过该数据,也就没有在其它地方有副本,该数据就永久丢失了。

误区二:IPFS不用担心隐私泄露

真相:IPFS没有数据安全性保障机制,并不对数据做加密,你上传到IPFS的任何数据都是暴露在所有公众面前的,因此对于隐私数据需要在上传前自己做加密。但加密后的数据的hash值就是密文的hash值了,除了你自己以外是不会有人拉取该数据的,因此也就不能指望还有其它节点保存该数据了,你的数据就注定只有一个孤本,你自己必须承担妥善保管该数据的责任(即需要你自己来建立一套数据持久性保障机制)。

误区三:IPFS的性能很高

真相:当你将数据上传到IPFS时,IPFS实际上只是将数据保存到你本机的IPFS节点内。也就是说,数据还在你本机上,只是挪到另一个目录了。由于数据并不在网络上传输,就显得性能很高。同理,当你从IPFS读取数据时,很可能读的是你之前上传的内容,因此本机的IPFS节点上就存得有该数据,IPFS就又从本机复制给你了,也显得性能很高。但是如果本机没有数据,就需要用分布式哈希表来查找,一个分布式哈希表只能记录全网的部分元数据,需要跳几次才能找到数据,这时性能就不够高,再加上IPFS并发性能不够理想,此时的下载速度就未必能达到你的期望值。

你可能感兴趣的:(存储技术,区块链,区块链,分布式存储,ipfs)