前言
相信很多人开始接触IPFS,首先会问,IPFS是什么, 它到底是干嘛的? 如果我使用它,他能给我带来什么好处?又能创造怎么样的价值?
结缘IPFS
相比之下,我是比较幸运的。 我当时使用IPFS,正好是因为它可以解决我在开发中的使用场景。当时准备开发一个原创图片的内容分享网站。以下是当时项目的一些简单的描述:
创艺云平台项目计划
项目定位
创艺云平台基于区块链共识机制,采用区块链技术与智能合约来解决当前原创艺术图片内容系统中遇到的盗版、侵权等诸多问题,旨在开创一个创艺开发,互信,有偿的内容新天地。
创艺云平台整合创作版权方、需求方,通过区块链应用平台去中心化内容协议,赋予自身内容平台上所有用户更多的权益保障和能都,实现内容价值公平分配。
还有一个不成熟的商业模式。
还有半死不活的发展路线图
当然,前面这些都不是重点。重点是因为这个项目,我接触到了IPFS。IPFS解决了我对于图片的分布式存储,而不是存储在中心化的服务器上。 同时IPFS的MerkleDAG数据结构也保证了我数据的唯一、不可篡改。一次上传,永久有效,且能永久追踪。
深入研究
由于以上背景,可以说IPFS深深吸引了我,后来就花了大量的时间来研究IPFS。从阅读IPFS白皮书开始,后来开始翻译白皮书,翻译文档。使用IPFS搭建个人博客,再到熟悉IPFS技术架构,阅读IPFS源码。这一路走来,IPFS给我留下了深刻的印象。尽管,目前为止,IPFS还有很多方面不够成熟,尽管IPFS还有很多代码没有写完。但,这丝毫不影响它独有的魅力与宏大的野心。
最近,随着IPFS整个项目的拆分与整理。IPFS彰显了更大、更宏伟的野心与梦想。正如IPFS官网所说,IPFS旨在取代HTTP,在我看来IPFS还能做更多。不管最终能否成功,我都会在这个过程中做一个参与者与见证人。
IPFS是什么?
前面说了那么多,那么IPFS究竟是什么?
IPFS官网是这么描述的:
IPFS is the Distributed Web, A peer-to-peer hypermedia protocol to make the web faster,safer,and more open.
IPFS是分布式Web,是点对点的超媒体协议,可以让我们的web服务更快、更安全、更开放。
这里相信有很多人有疑问,既然说IPFS是下一代的web,那么它有什么区别,又有什么优势?
其实在我看来,IPFS与传统web最本质的区别就是思维方式的区别。或者说IPFS是一种新的思维模式。
我们知道,在传统的web服务时代,我们寻找内容的方式是,首先知道存储文件的服务器地址(比如域名)然后通过服务器来查找自己需要的资源。当然,这里要提一下搜索引擎,因为有像google或者baidu这样的搜索引擎,所以在我们检索文件时,我们会错误的以为自己是根据内容寻地址(网站)。
而在IPFS的世界里,我们不需要知道文件存储的服务器地址,我们只需要文件的唯一指纹,就可以在全网进行查找我们需要的文件。所以IPFS是基于内容寻址的分布式WEB系统。
当然,除此之外,还有人说:
- IPFS是一种协议
- 定义一种基于内容寻址的文件系统
- 协调内容的分发
- 结合了Kademlia分布式Hash表+BitTorrent协议+git分布式文件系统
- IPFS是一种文件系统
- 有文件夹和文件
- 可以进行文件挂载(通过fuse)
IPFS是Web系统
- 可以用来像web一样浏览文档
- 可以通过HTTP请求的方式获取文件
- 哈希加密的地址可以保证内容的唯一性
IPFS是一个模块
- 在任何网络协议上的连接层
- 路由层
- 路由层使用分布式hash表
- 使用基于路径的命名服务
- 使用受到Bittorrent启发的块交换协议
IPFS使用了加密算法
- 内容地址是经过加密的哈希
- 数据块层的数据去重
- 文件压缩并打版本
- 文件层的加密和验证支持
- IPFS是P2P网络
- 全球化的点对点文件传输
- 完全的分布式架构
- 不存在中心节点失效
IPFS是一种CDN网络
- 文件添加到本地文件系统,节点加入到IPFS对等网络就可以全球共享
- 友好的缓存
- 基于bittorrent的带宽分配
IPFS是一种命名服务
- IPNS,受SFS启发的命名系统
- 基于PKI的全局命名空间
- 有助于建立信任链
- 和其他的NSes兼容
- 可以映射DNS,.onion .bit 等到IPFS
How It Work?
关于IPFS的使用,在本文中我就不介绍了,感兴趣的同学可以关注我的另一个专栏《EOS区块链技术开发》里面有几篇介绍IPFS详细使用的教程。IPFS个人博客,是我之前用IPFS写的一个个人博客系统。源码在我的github里面,作为一个简单的demo,欢迎大家交流。
总结
以上就是我跟IPFS的结缘以及IPFS的简单介绍。最近随着IPFS开发者社区的不断壮大。IPFS项目被拆分成了很多子项目。典型的三个项目就是libp2p, 目前IPFS网络层跟路由层都拆分到libp2p当中。其次IPLD主要围绕MerkerDAG算法,承载了IPFS核心的数据结构。Bitswap是IPFS当中核心的数据交易所。这些项目目前都在快速发展着,代码更新相当活跃。