1.1 IPFS简介
国内的开发者一般是从2017年下半年开始接触到IPFS的投资和开发,那么IPFS和Filecoin的区别是什么呢?IPFS和区块链有什么关系?
1.1.1 IPFS概念
IPFS(InterPlanetary File System)是一个基于内容寻址的分布式的新型超媒体传输协议。IPFS支持创建完全分布式的应用。它旨在使网络更快、更安全、更开放。IPFS是一个分布式文件系统,它的目标是将所有计算设备连接到同一个文件系统,从而成为一个全统一的存储系统。
在技术层面,它是利用BitToreent协议进行Git数据对象的交换来达到这一目标的。
IPFS项目整合了已有的技术(BT、Kademlia、DHT、Git和SFS自证明文件系统),实现数据永久可用,数据可以永久保存的全球文件存储系统,同时具有内容寻址和版本化特性。IPFS是一个协议,也是一个P2P网络,它类似于现在的BT网络。
Filecoin是运行在IPFS上的一个激励层,是一个基于区块链的分布式存储网络,它把云存储变为一个算法市场,代币(FIL)起到了很重要的作用。 代币是沟通资源(存储和检索)使用者(IPFS用户)和资源的提供者(Filecoin矿工)的中介桥梁,Filecoin协议拥有两个交易市场,数据检索和数据存储。IPFS和filecoin相互促进,共同成长。解决了互联网的数据存储和数据分发,特别是对于众多的区块链项目,IPFS/Filecoin将作为一个基础设施存在。 这就是为什么我们看到越来越多的区块链项目可采取了IPFS作为存储的解决方案,因为它提供了更加低成本、安全稳定的存储解决方案。
1.1.2 IPFS起源
搭建全球化分布式存储网络由来已久,此前最知名的有BitTorrent(以下简称BT)、Kazaa、和Napster,至今这些系统在全世界仍有上亿的活跃用户。尤其是BT,现在BT网络每天依然有超过一千万节点在上传数据。但缺点是这些系统最初就针对特定目的设计,没有很好的扩展性。始终没出现全球范围内低延时、完全去中心化的分布式文件系统。
HTTP存在四大问题:
- 极易受到攻击。因其服务器的中心化。
- 数据存储成本高。
- 数据的中心化带来泄漏风险。推特、领英的用户信息泄漏事件。
- 大规模数据存储,传输和维护难。大数据时代,如何存储和分发PB级别的大数据;如何处理高清晰度的媒体流数据;如何对大规模数据做修改和版本迭代;如何避免重要的文件以外丢失等等问题都是阻碍HTTP后续发展的大山。
而IPFS则是为了解决这些问题而生的,优势在于:
- 下载速度快。使用BT协议作为点对点传输,速度快,且节省带宽。
- 优化全球存储。 IPFS/Filecoin采用的内容哈希方式存储数据,存储成本下降。
- 更安全。与现有的中心化或个人存储相比,IPFS/Filecoin的加密技术、区块链技术使其数据存储更安全。有效抵挡黑客攻击。
- 数据的永久保存。 当前的web页面的平均生命周期只有100天。每天大量的互联网数据被删除。IPFS提供了互联网数据被永久保存的可能性,并且提供数据的历史版本(git)回溯。
上面提到了IPFS借鉴了现有的技术,整合了他们的优点。(DHT, Kad,Git、BT和SFS)。下面分别简单介绍下这几种技术。
DHT 分布式哈希表。是一种分布式存储方法,原理是在不需要服务器的情况下,每一个客户端存储一小部分数据,并负责一定区域的检索,进而实现整个DHT网络的寻址和检索。新版BT允许同时连接DHT网络和Tracker,也就是说在不连接tracker服务器的情况下也可以很好的下载,因为它可以从DHT网络中寻找下载同一文件的其他用户。
Kademlia。kad其实也是基于DHT的。 在kad网络中,所有信息均以哈希表条目形式加以存储,这些信息被分散地存储在各个节点上,从而以权威构成一张巨大的分布式哈希表。这个DHT可以像字典一样检索数据,知道key就能通过kad协议查询到对应的value,而不用管这个value信息到底存储在哪一个节点上。这是这一特性确保了IPFS是没有中心调度节点的分布式系统。
BT网络。IPFS主要借鉴了它的三大特性。
首先是消极上传至的惩罚措施;在BT上客户端上传数据会奖励积分,而长期不上传数据的消极节点会扣积分。如果分数低于一定限度,那么网络拒绝再为他们提供服务。
其次,是文件可用性检查,BT优先把稀缺的文件分享出去,各个客户端组件相互补充,这样种子不容易失效,传输效率也提高了。Git。我们在进行大文件传输或修改时总会遇到存储或是传输压力大的问题,而Git在版本迭代方面则非常出色。Git存储会把文件拆成若干部分,并计算各个部分的哈希值,利用这些构建起与文件对应的有向无环图,DAG的根节点也就是该文件的哈希了。这样地好处十分明显,如果需要修改文件,那么只需要修改少数图中节点;需要分享文件,等价于分享这图;需要传输全部的文件,安装图中的哈希值下载合并即可。
SFS。最后是自验证程序(Self-certifying File System),SFS系统同样是一个分布式文件系统,它将所有的文件在同一个目录下保存,所有的文件都可以在相对路径中找到,所有的文件都可以在相对路径中找到,其SFS路径名是其原路径与公钥的哈希。这样的设计会包含身份的隐式验证功能,这就是为什么SFS被称为自验证文件系统了。
1.2 IPFS与区块链的关系
区块链经常和IPFS相提并论,那么它们到底什么关系呢?
1.2.1 IPFS为区块链带来了什么改变
区块链的设计初衷是为了去中心化,而不是追求高效、低能耗和拥有扩展性(因为这三点,中心化程序更为擅长)。IPFS与区块链协同能解决区块链的两大缺陷:
- 区块链存储效率低,成本极高。
- 跨链需要各个链之间协同配合,难以协调。
针对第一个问题,区块链中每个矿工节点都是全节点,备份了区块链的全量数据,这是很不经济的。目前也有折中的方案解决这一问题,在搭建DAPP时,大家普遍将哈希值存放在区块链中,将需要存储的信息存放在中心化的数据库中,但这样存储又成为去中心化应用中的一个短板。IPFS的解决方案是:我们可以使用IPFS存储文件数据,并将唯一永久可用的IPFS地址放置到区块链事务中,而不必将数据本身放在区块链中。
针对第二个问题,IPFS能协助各个不同的区块链网络传递信息和文件。比特币和以太坊区块结构不同,通过IPLD可以定义不同分布式数据结构。这一功能目前还在开发中,目前的IPLD组件,已经实现了将以太坊智能合约代码通过IPFS存储,在以太坊交易中只需存储这个链接,EVM运行的时候可以解析到IPFS网络中。
1.2.2 Filecoin:基于IPFS技术的区块链项目
之前提到过,filecoin位于IPFS的激励层。IPFS网络需要稳定运行需要用户贡献他们的存储空间,网络带宽,如果没有恰当的奖励机制,那么巨大的资源开销很难让网络持久运转。也是受到比特币的激励机制启发,Filecoin称为了IPFS的激励层就是一种解决方案了。
对于用户,filecoin能提高存储效率和速度,对于矿工,贡献一定的网络资源可以得到收益,而对于业务合作伙伴来说,也可以贡献闲置的数据中心计算资源,也相应的得到一笔报酬。
Filecoin会用来支付存储和检索网络中的交易。与比特币类似,它的代币总量上限为2亿枚,其中70%会通过网络挖矿奖励贡献给矿工,15%为团队自持代币,10%份额给投资人,剩下5%作为filecoin基金会持有。投资人和矿工获得的代币按照区块发放,而基金会和团队的代币,按照6年时间线性发放。
在挖矿机制方面,Filecoin使用的是复制证明(Proof of Replication)。复制证明主要是为了防止攻击矿工实际存储的数据大小要比声称存储的数据小,这样就能防止攻击矿工获取本不该他得到的报酬。要避免矿工攻击,网络中的验证节点会随机检查是否矿工在作弊。如果矿工不能提供一份拷贝,那么它将会扣除一定的Filecoin作为惩罚。相比POW带来的算力竞争,PoRep要环保的多。
1.3 IPFS的优势与价值
IPFS的优势在其强大的技术积淀,精巧的架构设计,以及强大的开发者生态。
1.3.1 IPFS优势
-
技术优势
IPFS技术可以分为八层子协议栈,从上至下为身份、网络、路由、交换、对象、文件、命名、应用,每个协议栈各司其职,又互相搭配。
IPFS技术模块和功能间的映射关系图,同时也是个纵向数据流图。刚才说的八层协议,其实每一层的实现都绑定在对应的模块下,进行了一个直观的图表设计:
IPFS团队在开发时,采用高度模块集成化的方式,像搭积木一样去开发整个项目。协议实验室团队从15年到17年一直在作IPLD、LibP2P、Multiformats这三个模块的开发,它们服务于IPFS底层。
Multiformats 是一系列hash加密算法和自描述方式(从值上就可以知道值是如何生存)的集合,它具有SHA1256 5123B等6种主流的加密方式,用以加密和描述nodeid以及指纹数据的生成。
LibP2P 是IPFS核心中的核心,面对各式各样的传输层协议以及复杂的网络设备,它可以帮助开发者迅速建立一个可用P2P网络层,快速且节约成本,这也是为什么IPFS技术被众多区块链项目青睐的缘由。
IPLD 其实是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。现在IPLD支持的数据结构,是比特币、以太坊的区块数据。这也是为什么IPFS受到区块链系统欢迎的原因之一,它的IPLD中间件可以把不同的区块结构统一成一个标准进行传递,为开发者提供了成功性比较高的标准,不用担心性能、稳定和bug。
IPFS应用了这几个模块的功能,集成为一种容器化的应用程序,运行在独立节点上,以web服务的形式,供大家使用访问。
最后是Filecoin,作为去年7月才宣布的项目,它的开发进度至今保密。Filecoin把这些应用的数据价值化,通过类似比特币的激励政策和经济模型,让更多的人去创建节点,去让更多的人使用IPFS。
后面的原理篇将对每个技术细节进行详细的阐述。
- 社区优势
IPFS的社区由协议实验室团队维护,截止目前,社区以及拥有上百位代码贡献者和数十位核心开发人员,IPFS目前已经发布了27个版本的迭代,开发进度一直非常好。
同时协议实验室官方也授权了部分社区中的Co-Organizer牵头全球的推广交流活动。目前已在海内外多个城市包括北京开展了社区自治的Meetup线下活动。
1.3.2 与其他区块链存储技术的对比
竞品对比:
略。
基于IPFS构建的Filecoin区块链项目,是从基础层而不是单单的应用层去改变云存储模式,因此也决定了其应用的范围更加广阔,其对应的加密数字货币增长空间也更大。
1.4 IPFS的应用领域
建立永久信息档案
降低存储、带宽成本
Filecoin将IPFS网络参与者分为了两类:Host(为网络提供空闲的存储空间)和Retriver(为网络中的节点提供带宽,帮其他用户传输文件),通过这种共享模型,无论给项目方还是用户发都节约了很大的开支。
目前,将这个应用方向做得比较成功的项目叫【Dtube】:它是一个搭建在Steemit上的去中心化视频播放平台,其用户上传的视频文件都经过IPFS协议进行存储,具有唯一标识。相较于传统视频网站,它降低了同资源冗余程度,同时大大节约了海量用户在播放视频时所产生的带宽成本。与区块链完美结合
我们可以使用IPFS处理大量文件数据,并将不变的、永久的IPFS链接放置到区块链事务中,而不必将数据本身放在区块链中。目前大部分公链的最大问题是无法存储大量的超媒体数据在自己的链上。比特币100-200G数据,以太坊智能执行和存储小段合约代码。EOS的底层存储就应用了IPFS,来解决大型数据的传输效率。EOS将自己打包好的区块数据通过IPLD进行异构处理,统一成一种便于内容寻址的数据结构类型,并挂载到IPFS的link上,让IPFS网络承担存储和P2P检索的逻辑。为内容创作带来自由
Akasha提供分布式缓存方案