什么是IPFS?
IPFS全称为Inter Planetary File System(以下简称IPFS)
IPFS是一种分布式文件存储协议,允许全球的计算机将文件作为巨大的对等网络的一部分进行存储和提供。
世界上任何地方的任何计算机都可以下载IPFS软件并开始托管和提供文件。
如果有人在其计算机上运行IPFS并将文件上传到IPFS网络,则该文件可以被世界上运行IPFS的任何其他人查看和下载。
同时因为IPFS去中心化的特点注定其无法被监管,导致了在国内被墙
为什么有IPFS
互联网是建立在HTTP协议上的. HTTP协议是个伟大的发明, 让我们的互联网得以快速发展.但是互联网发展到了今天HTTP逐渐出来了不足.
HTTP的中心化是低效的, 并且成本很高
使用HTTP协议每次需要从中心化的服务器下载完整的文件(网页, 视频, 图片等), 速度慢, 效率低. 如果改用P2P的方式下载, 可以节省近60%的带宽. P2P将文件分割为小的块, 从多个服务器同时下载, 速度非常快.
Web文件经常被删除
回想一下是不是经常你收藏的某个页面, 在使用的时候浏览器返回404(无法找到页面), http的页面平均生存周期大约只有100天. Web文件经常被删除(由于存储成本太高), 无法永久保存. IPFS提供了文件的历史版本回溯功能(就像git版本控制工具一样), 可以很容易的查看文件的历史版本, 数据可以得到永久保存
中心化限制了web的成长
我们的现有互联网是一个高度中心化的网络. 互联网是人类的伟大发明, 也是科技创新的加速器. 各种管制将对这互联网的功能造成威胁, 例如: 互联网封锁, 管制, 监控等等. 这些都源于互联网的中心化.而分布式的IPFS可以克服这些web的缺点.
互联网应用高度依赖主干网
主干网受制于诸多因素的影响, 战争, 自然灾害, 互联网管制, 中心化服务器宕机等等, 都可能是我们的互联网应用中断服务. IPFS可以是互联网应用极大的降低互联网应用对主干网的依赖.
IPFS尝试解决HTTP目前存在的四个问题:
- 服务低效,成本高。这也是大部分P2P服务比中心化服务器优秀的地方。
- 网络服务受限于供应商,文件具有无法永久保存的风险,更无法历史回溯。
- 中心化的网络权力过于集中,网络控制和监管某些程度上限制了科技创新。
- 互联网服务大多依赖于骨干网络,一旦宕机大部分服务将无法使用。
IPFS的主要技术原理
IPFS使用了 分布式哈希表 BT技术 Git版本协议和SFS自验证文件系统四种技术
分布式哈希表(DHT)
分布式哈希表(DHT)主要思想是全网的计算机共同维护一个巨大的文件索引哈希表,这个表每一条内容是文件哈希直和对应的存储该文件的计算机的IP地址
由于这张表很大所以将其分成多个部分每个节点维护一部分就行,避免了太多的算力浪费
当查询文件时首先通过节点路由的方式找到所维护小块哈希表有对应文件哈希内容的节点,然后从该节点拿到表中的信息
即通过表找到存储该文件的节点IP地址,并从该节点获取到想查询的文件
BT技术
BitTorrent(中文全称比特流,简称BT,又称变态下载)是一个多点下载的P2P软件。不象FTP那样只有一个发送源,BT有多个发送点,当你在下载时,同时也在上传,使大家都处在同步传送的状态。
BT首先在上传者端把一个文件分成了多个部分,客户端甲在服务器随机下载了第N部分,客户端乙在服务器随机下载了第M部分。
这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的第M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的第N部分。
Git版本协议
版本控制系统提供了对随时间变化的文件进行建模的设施,并有效地分发不同的版本。流行版本控制系统Git提供了强大的Merkle DAG对象模型,以分布式友好的方式捕获对文件系统树的更改。
- 不可更改的对象表示文件(blob),目录(树)和更改(提交)。
- 通过加密hash对象的内容,让对象可寻址。
- 链接到其他对象是嵌入的,形成一个Merkle DAG。这提供了很多有用的完整和work-flow属性。
- 很多版本元数据(分支,标示等等)都只是指针引用,因此创建和更新的代价都小。
- 版本改变只是更新引用或者添加对象。
- 分布式版本改变对其他用户而言只是转移对象和更新远程引用。
SFS自验证文件系统
SFS使用一种新的解决思路,将公钥信息嵌入到文件名中,这种命名为“自验证文件名”。这样就没必要在文件系统内部实现密钥管理了。秘钥管理的功能就加入到用户对文件命名的规则中。用户可以根据自己需要选择加密方式。 SFS核心思想有如下几点:
- SFS文件系统具备自验证路径名称,不需要在文件系统内部实现密钥管理。
- 在SFS上易于假设各种秘钥管理机制,包括各类组织机制。
- SFS将密钥撤销与秘钥分发分离开,防止影响密钥的恢复。
- 实现全球范围的文件系统
为什么人们使用IPFS?
确保内容的完整性
IPFS 上的每个文件都有一个唯一的地址,该地址由组成该文件的确切位确定。即使只有一位更改,整个地址也会更改。这使用户可以确定文件是否曾经被篡改过。
具有冗余的主机
实现弹性,因为 IPFS 上的每个文件都可以托管在许多不同的位置,但可以从同一地址访问。如果托管该文件的一台计算机脱机,则网络将仅从另一台计算机检索该文件。
IPFS与HTTP两者有何区别?
- 从成本角度来看,HTTP中心化服务器运行,往往维护运行所需的成本较高,只要中心化数据库受到DDOS攻击,或者是遭受到不可抗力的损害,其所有数据会全部丢失;相较于HTTP而言,IPFS能很大程度上降低服务器存储成本,同时服务器的带宽成本也得到控制。
- 效率角度来说HTTP是依赖中心化服务网络,服务器比较容易被关闭,服务器上文件较易被删掉,而且服务器必须是24小时开机状态才可运行;而IPFS是 P2P网络拓扑,整个网域内所有计算机均可作为存储节点,就近分布式存储大大提高了网络效率。
- 安全性:HTTP属于集中化的,所有流量直接搭载在中心化的服务器上,承载的压力极大,容易造成系统崩溃,HTTP还容易遭受DDOS攻击;IPFS的存储方式是去中心化的分片的分布式存储,黑客无法攻击,文件不易丢失,安全有保障。
- HTTP的客户网络访问很大部分不是本地化,存在网络延时;IPFS较大程度使得网络访问速度加快,网络访问本地化,体验感会明显提升。
参考资料
IPFSPowers the Distributed Web
Distributed Web Gateway | Cloudflare
什么是IPFS?(一) - 知乎 (zhihu.com)
什么是IPFS? - 知乎 (zhihu.com)