【区块链】IPFS存储七问

作者: 胡飞瞳 | 来源:发表于2018-12-16 20:17 被阅读0次

    我前期写过几篇关于IPFS的文章,不是很满意,关键在于对技术探讨多深入这个度很难把握。技术性太强没有人看,但不谈技术又讲不清楚。想来想去,觉得还是尽量浅显易懂为好,其实这样是更难写的,最后决定采用回答问题的形式来进行阐述。希望能够说的简单,说得清楚。

    0、IPFS是什么?与挖矿有什么关系?

    IPFS是新一代去中心化的分布式存储网络,称为星际文件系统,这么大的名字自有它的道理。这在我的前几篇文章中有所描述,如需了解,请参见文末的我的相关文档链接。

    IPFS作为2017年最轰动的区块链项目,雄心勃勃,要取代HTTP,实现人类数据的永久保存,这些不仅仅是说说而已,实际上IPFS的大部分功能都已经实现,已经有不少企业开始使用,目前存储在IPFS上的文件超过50亿个,而且每天都在增长。

    那么链圈的同志们为什么总是在抱怨IPFS的开发慢呢?而且不少准备了半年以上的矿圈的同志们也一直在翘首以盼开始挖矿,但迟迟没有结果,以至于有不少人开始怀疑这个项目。这其实是混淆概念了,因为区块链的投资者总是盯着钱的,凡是讲IPFS就要讲代币。其实,挖矿与IPFS项目没有直接关系,那是IPFS之上的激励层FileCoin项目的事。也就是说应该是FileCoin挖矿。 IPFS与FileCoin的结合不是必须的,比如Ulord的实现就单独采用IPFS,而在之上采用UT来实现激励机制。另外,如果把IPFS用于私有存储网络,激励层都是可以不要的。

    然而,作为一个通用的去中心化的存储网络,IPFS将与FileCoin结合,来形成一套完整体系,为用户服务。FileCoin本身的开发在进行过程之中,由于要实现去中心化的两个市场,结合新设计的共识算法,难度不小。目前为止,项目组还在紧锣密鼓地开发,有一些挑战列出来希望寻求支持,何时推出,还需拭目以待。

    1、存到IPFS里的数据到底存到了哪里?

    简单地说:一开始是存到你自己的硬盘里,当有人读取的时候,会有新的拷贝产生。也就是谁用这个数据,这个数据就会复制到哪里去。

    详细一点:为提高存取效率,IPFS采用最快的路径来存储数据。当一个节点加入IPFS网络时,这个节点会提供一部分硬盘空间(缺省为10G,可以配置)给整个网络使用。那么通常情况下,当您在存储文件的时候,您自己提供的这部分硬盘空间总是最快的,因为不需要跨网。当存储完毕后,网络上任意节点都可以访问这个文件。当另一个节点访问的时候,那个节点往往会复制一份您的数据到他的硬盘空间。这样整个网络中就有两份拷贝了。试想,当有很多人对这个文件感兴趣,那么网络中的拷贝数会越来越多。

    2、IPFS的存取效率是如何体现的?

    简单地说:无论存还是取,都是采用最快路径的方式,从而提高效率。
    详细一点:问题1里面已经讲过,文件存储一般是直接到你的硬盘,因为是本地存储,非常快;那么读取呢?其实一开始并没有那么快,当第一个人读取的时候,因为需要从你的本地硬盘读取,要穿越网络,速度相当于从网络上去下载一个文件。那么为什么说IPFS的效率会很高呢?很重要的原因是,当读取的人多了过后,会产生很多拷贝,接下来读取此文件的人就可以从最近的节点读取,而且可以同时从多个节点同时读取,相对于中心化的存储而言,自然效率高出很多。这样,利用IPFS存储网络来开发应用的商家,就不需要庞大的数据中心来支持高并发率,因为用户是从整个网络中访问数据的,而IPFS天然支持数据分发网络和高并发率

    3、不是说IPFS不会重复存储相同的内容吗?

    是的,当你往IPFS中存储网络中已存在的内容的时候,IPFS会很快告诉你,存好了。不是这次存好了,是之前就存好了。这一点对与空间利用效率的节省非常大。你想想,随便一个小明星的照片在网上会存储多少份,流行的电影会存多少份。利用IPFS则可以大大减少空间的使用。

    需要提出的是:这一点与问题2中的描述并不矛盾。问题2中的多个拷贝一般都是缓存,也就是说是临时存储的。时间一长就被自动删除掉了。这种临时缓存非常好地解决了分布式数据分发的问题,比如说一个社会热点往往呈现出预热期、火热期和退潮期等阶段,利用IPFS,数据的分布和拷贝数与这些时期是完全匹配的。访问的人越多,拷贝数就越多,但热度下来了,拷贝数就会降下来,从而自然地实现空间利用率和存取效率的平衡。

    4、 IPFS存储的数据会永不消失吗?

    简单地说:这是一个误解
    具体一点:IPFS只是一个存储网络,存什么东西是用户说了算的。当一个内容没有用户想要保存的时候,它就会慢慢消失。那么,它在系统中是如何实现的呢?其实,每一个节点都有自主权利选择什么内容长久保存在本地,当然,也有权利选择不保存。比如一个企业使用IPFS网络存储数据,那么它可能建立多个数据中心,对其要保存的数据在多个数据中心都保存一份(这可以通过配置或应用接口实现)。其实应该这么说,只要有人愿意存储相关数据,这个数据就会被保存。

    那么对于一般用户的数据呢?比如说我想把我的照片保存在IPFS上,而且希望永久保存,为了安全我还想保存多份。那么这有两个办法:1)你自己加入多个IPFS节点,每个节点选择保存一份;2)使用FileCoin提供的存储市场,付费让人替你保存。当然,1)不是一个很好的选择,因为如果这样做,你干嘛还用IPFS;2)是正在实现的部分,期待2019走入实用。

    5、我可以建立自己私有的IPFS网络吗?

    完全可以。
    IPFS是完全开源的。你可以利用IPFS技术,代码,模块等建立自己的网络和存储系统。可以把你私有的IPFS建立在公共网络上,但是你独有的IPFS节点之间实现加密通信,与公共的IPFS完全隔离,就像前面所讲的,建立私有IPFS系统,你一般不需要FileCoin了,自己构建上层应用吧。

    6、听说Ulord采用IPFS,它与IPFS是什么关系

    Ulord是基于区块链技术的价值传播网络,是一条内容分发的公链。它填补了目前公链系统的空白。其内容存储基于类IPFS存储系统,但加入了自己的激励和管理体系,在不需要FileCoin的情况下,构成了完整的生态。是一个采用IPFS的很好的例子。


    主要参考资料

    • IPFS whitepaper (draft 3)
    • Filecoin whitepaper
    • IPLD官网
    • Juan Benet: Enter the Merkle Forest

    我的相关文章

    image

    相关文章

      网友评论

        本文标题:【区块链】IPFS存储七问

        本文链接:https://www.haomeiwen.com/subject/kmgxkqtx.html