为什么需要一个去中心化的存储
互联网上经常有这样的情况出现:有些文章如果你不抓紧时间看,那么可能就再也看不到了,只能看到各种各样的花式404提示页面。
(这里我意识流的插一段:经常有人会管被墙了叫做404,但这是不对的。404是服务器返回找不到相应资源的响应,比如原有内容被删除或者是地址输入错误。背后的原理是你和服务器已经通讯,但服务器表示你还是另请高明吧,我找不到这个内容了。而当你试图访问某些不存在的网站,例如Googl×、 Youtub×、Faceboo×等等,你根本就访问不到服务器,一般会是Connection Reset,而不是404。再简单点理解就是:对内404、对外 Connection Reset ...)
除了一些主观上的主动删除外,一些非主观的人为操作或者技术故障也会导致存储丢失的事件。最近几天,国内就有云上数据丢失的情况发生。
所以,一个过于中心化的网站或数据中心都会存在这样的数据丢失或被移除的风险。
IPFS是什么
简介
星际文件系统 IPFS (Inter Planetary File System) 是一个分布式文件存储系统,可以实现在多台计算机上存储、共享文件的功能。
我种子少,你不要骗我
那么,IPFS 和 BitTorrent 的区别在哪里呢? 的确,它给人的第一感觉是和 BitTorrent 很像。从网络的底层机制上看,他也确实和 BitTorrent 并没有什么太本质的区别,都是实现了文件的特征摘要、以及根据这个摘要的点对点存储与传输。
但 IPFS 的设计对于程序的读取更加友好,不仅仅是一个存储和下载的系统,而更像是一个基于分布式网络的文件系统,甚至可以作为一种 CDN 来使用。
以后加上了 Filecoin 等通证经济机制后,还可以诞生出来更多好玩的应用,例如 PT 这种激励用户上传、做种获取回报的极其适合用区块链方式来运行的体系。
另外,还有版本控制功能,采用了类似 Git 的实现,可以实现存储内容的多个版本。
所以,这也就是为什么IPFS的描述里会有:IPFS = HTTP web + Git + BitTorrent。也就是被设计用来取代现有的 HTTP 协议。
类似产品
IPFS 早在2015年就启动了。所以到目前,除了 IPFS 以外,还有类似产品诞生,例如: Storj 、 Sia 、 Swarm 等。
Storj
Sia
Swarm
IPFS 缺点
当然,IPFS 目前还不够完善,比较突出的主要有:
- 无法删除文件。也就是用户上传文件后,就失去了掌控权。最多只能从用户自己的节点上清空掉这一文件
- 暂时还缺少 Filecoin 这一激励层
如何保存和读取文件
IPFS 的操作使用还是比较方便的。最后,以保存和读取文件为例来解释如何使用IPFS
如何上传
- 首先登录 https://dist.ipfs.io/ 下载平台。
- IPFS 初始化
ipfs init
IPFS 检查状态是否正常。如果能显示,则为正常
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
- IPFS 监控
ipfs daemon
- 将文件上传到IPFS平台
增加单个文件:
ipfs add xxx
增加目录:
ipfs add xxx -r
上传后需要记录下来文件的 哈希值
- Pin 文件
Pin 的作用是让其他节点知道这个文件可以在我这里找的到。
ipfs pin add QmdNMBVqQJ9baQDAJMUwci8LzVK2a52cTLEHoinaKFEdFY
如何读取
搭建节点方式
最直接的方式就是搭建IPFS节点,通过命令行来get
ipfs cat QmdNMBVqQJ9baQDAJMUwci8LzVK2a52cTLEHoinaKFEdFY
ipfs get QmdNMBVqQJ9baQDAJMUwci8LzVK2a52cTLEHoinaKFEdFY
除了命令行之外,也可以web UI来访问到自己的节点:
http://localhost:5001/webui
如果使用 chrome,还有一些好用的插件,例如 IPFS Companion 来操作和查看 IPFS 节点
第三方工具方式
除了自己搭建节点外,较为方便的方式是可以通过 ipfs.io 官网来直接查看
https://ipfs.io/ipfs/QmdNMBVqQJ9baQDAJMUwci8LzVK2a52cTLEHoinaKFEdFY
还有一些国内网站也可以使用
http://www.ipfs.guide/