编者按:本文来自 imToken(ID:imToken),Odaily星球日报经授权转载。
什么是 IPFS
IPFS 的全称是 InterPlanetary File System,中文译为「星际文件系统」。IPFS 不是一个区块链项目,而是一个底层的网络传输协议。该协议的提出者 Juan Benet 看到了当前互联网 HTTP 协议的缺陷,因此于 2014 年 5 月提出了 IPFS,目的是打造更开放、更安全的下一代互联网 Web3.0。
IPFS 的提出者 Juan Benet
那么当前互联网的 HTTP 协议到底有什么问题?
HTTP 的全称是 Hypertext Transport Protocol,中文译为超文本传输协议,由万维网之父 Tim Berners-Lee 在 1991 年提出,主要规定了客户端和服务器之间的通信格式,该协议主要有三大缺陷:
中心化
成本高
隐私保护差
一、中心化
HTTP 协议极度依赖中心化服务网络,服务器必须 24 小时开机运行。
世界第一台 Web 服务器
👆这是 Tim Berners-Lee 在 CERN 欧洲核子研究中心工作时使用过的一台电脑,也是世界上第一台遵循 HTTP 协议的 Web 服务器,现已被淘汰存于博物馆。机箱上贴着纸条:
This machine is a server. Do not power down!(这是一台服务器,不要关机!)
因为一旦关机,这台服务器所承载的网站信息就会消失不见。我们访问网站时就会看到网站页面不存在的 404 提醒。404 是 HTTP 协议的错误码,代表客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应且不知原因。
当我们在浏览器中输入网址后,浏览器会根据这个网址从服务器中进行信息检索并返回展示在客户端,即我们普通用户看到的样子。而一旦服务器关机,浏览器就无法检索到相关信息,于是我们就会看到网页 404 的界面。
另外,虽然现在网站、App 很多,但是大多都运行在阿里云、亚马逊云、谷歌云等服务器商的服务器上,一旦这些云服务器出现问题,租用了服务的网站都会被牵连。
2019 年 3 月 3 日,阿里云华北地区的服务器宕机 3 小时,租用了服务的众多互联网公司也因此处于服务瘫痪的状态。
二、成本高
Gangnam Style
还记得《江南 Style》么,这首歌在 2012 年风靡一时,是互联网历史上第一个点击量超过 10 亿次的视频(虽然我到现在也没明白这歌好听在哪😓)。如果这个视频大小为 100 MB,那么 10 亿次的浏览就消耗了 100 PB 的网络流量。
假设每 GB 的流量成本(包括网络带宽和服务器存储)是 0.01 美元,则总共的花费是 100 万美元。此外,中心化的数据服务对资源的利用效率低,比如中心化的模式要求各数据中心 365 天不间断运营,行业报告显示仅电力消耗就占据了 57% 的运营成本。可见在 HTTP 协议上,集中由数据中心向外传播信息的成本是非常昂贵的。
三、隐私保护差
互联网,顾名思义就是由连接到世界各地互联互通的网络组成的,而信息流经通信线路上的光缆和某些网络设备时,可能遭到监视。值得注意的一点是,全球的通信流量大部分都经过美国。
美国国家安全局与多家电讯公司签署了《网络安全协议》,规定电讯企业要在美国本土建立「网络运行中心」。与此同时,美国的盟友英国、加拿大等也为其提供光缆监听情报。根据华盛顿邮报的消息,美国国家安全局 NSA 海底光缆的监控覆盖全球 4 大洲的 27 个国家地区。
此外服务器一旦被成功入侵,存储其中的信息也会泄漏。2013 年 6 月,美国中央情报局(CIA)前雇员爱德华·斯诺登揭露了美国国家安全局代号为「棱镜」的秘密项目。棱镜是美国国家安全局(NSA)和联邦调查局(FBI)于 2007 年启动的一个秘密监控项目,可以直接进入微软、雅虎、苹果、谷歌等互联网巨头公司的中心服务器里获悉通讯记录以及双方通信的时间、地点等信息。
爱德华·斯诺登
正是看到了 HTTP 协议的诸多缺陷,Juan Benet 提出了 IPFS 的设想,并在 2015 年成立了 Protocol Labs 实验室,专门负责开发 IPFS。
IPFS 的运作原理
1、通过内容寻址进行唯一标识
2、通过非对称加密保护文档隐私
3、通过点对点传输加快文档传输速度
一、内容寻址
HTTP 协议是基于「域名的寻址」,浏览器会根据我们输入的网址到指定的服务器上获取文件,而 IPFS 是基于「内容的寻址」。IPFS 会将文件进行哈希得到一个以 Qm 开头的哈希值,我们提供哈希值就能检索获取对应的文件。
这两者具体有什么不同呢?
例如我想通过浏览器下载一个文件,按照 HTTP 协议,浏览器首先会查找服务器的位置,也就是域名寻址,接着向服务器索要文件的路径。这种体系下文件的位置取决于服务器的管理者,而我只能寄希望于文件的位置没有变动,并且服务器处于开机状态。
此外,下载文件时,我无法确定客户端下载的文件和服务器上的文件是否一致,文件在下载传输的过程中可能会被人篡改,但我对此是无法感知的。
IPFS 的做法则是撇开服务器和文件具体位置,只关注文件中的内容。当我把一个文件放到 IPFS 节点,它会根据文件内容计算出一串 Qm 开头的哈希值,比如这样👇
QmYqSCWuzG8Cyo4MFQzqKcC14ct4ybAWyrAc9qzdJaFYTL
哈希算法从数学上确保了文档中的内容哪怕只修改一个标点,哈希值也会完全不同。每份存储在链上的内容都会分配得到独一无二的哈希值作为内容标识(Content Identifier,缩写 CID)。
但有个隐私问题,任何人知道了哈希值,不就都能通过 IPFS 网络下载我的文件了么?这时就需要用到非对称加密技术了,是时候再次请出密码学的男女主角 Bob 和 Alice 了。
二、非对称加密
发送者:Bob 🚹 ,接收者:Alice 🚺
1、Bob 想上传一份文档至 IPFS ,且只有 Alice 能查看该文档
2、Bob 用 Alice 的公钥对文档进行加密
3、Bob 将加密后的文档上传至 IPFS ,得到对应的哈希值作为内容标识
4、加密后的文档被存储在 IPFS 系统中,Alice 可以凭借 Bob 提供的哈希值下载该文档
5、Alice 用自己的私钥解密这份文档,获取文档中的内容
6、未经授权的第三方由于没有 Alice 的私钥,即便下载了文档也无法解密。
Alice 通过 IPFS 下载文档的过程类似于通过迅雷下载电影,是基于 P2P 点对点传输技术。
三、点对点传输
如果你读过比特币白皮书,点对点这个词听起来应该不会很陌生,因为它白皮书的标题就是《比特币,一种点对点的电子现金系统》
点对点是根据 Peer-to-Peer 翻译过来的中文,简称 P2P,Peer 这个英文单词在字典有一个常见意思是身份或地位相同的人。
在 HTTP 协议中,客户端想要获取信息时需要访问服务器,如果服务器访问量在短时间内剧增,就会出现访问失败的情况,你可以想想自己回家抢火车票时,订票平台宕机的情景。分布式拒绝服务攻击 DDoS 就是通过在短时间内借助数百甚至上千台设备对服务器发起请求,耗尽服务器的资源造成其他用户无法正常访问该网站。
IPFS 采用的点对点传输技术,点就是指一台计算机。系统中的任何一台电脑都可以做为服务器,彼此之间共享文件,比如迅雷,电驴,酷狗都用到了 P2P 技术,实现彼此之间资源的共享。
比如我想下载某个文件,那么我的电脑就会找到存有对应资源的多台电脑,从这些电脑上下载一个个小小的碎片,最后在我的电脑上拼成一个完整的文件。
根据 HTTP 协议进行文档下载时,B、C、D 等多台电脑都要访问服务器 A 进行下载,访问量一多,服务器 A 就会宕机。而点对点传输技术可以使得 B 从 A 处下载,B 下载完后变成一个服务器, C 就可以从 A、B 处下载。C 下载完后也变成一个服务器,D 可以从 A、B、C 处下载文档,每一个存有文档的电脑都可以作为服务器,给其他下载用户提供信息。
因此越到后面,可以作为服务器的电脑就越多,下载速度也就越快。此时 A、B、C、D 等多台电脑之间的地位是平等的,都可以作为服务器。原则上,与传统的 HTTP 协议相比,Alice 通过 IPFS 下载文档的速度更快。
但这里有个问题,A、B、C、D 等多台电脑在没有任何奖励的情况下,为什么要白白给其他电脑提供资源下载?经济激励 Filecoin 就显得很有必要了。
IPFS 与 Filecoin 的关系
2017 年,Protocol Labs 实验室宣布成立基于 IPFS 的区块链项目 Filecoin。Filecoin 和 IPFS 虽然都由 Protocol Labs 创建,但 Filecoin 不等同于 IPFS,IPFS 是一个底层协议,而 Filecoin 是建立其上的经济激励层,通过发行代币 FIL 作为奖励,让各个节点有动力去存储和检索数据。
当用户想要将文档上传至 IPFS 网络或者在网络中下载文档时,都需要支付 Filecoin 给矿工作为他们的辛苦费。Filecoin 网络的原生代币 FIL 总发行量为 20 亿枚,其中 70% 都会分配给矿工。
同时,为了确保矿工不会中途删除存储的数据,矿工需要抵押一部分 FIL 代币,每 1 小时左右提交一次数据还在的证明。链上也会在每个出块时间随机验证数据是否存在,若验证失败,矿工抵押的代币会被扣除。
然而由于 Filecoin 主网刚刚上线,不少矿工手中并没有足够的 FIL 进行抵押,处于一个略显尴尬的状态。IPFS 中国社区的发起人在朋友圈吐槽:主网上线,全部矿工停在那,是无奈!是大家都没有币进行抵押!
经历了多次跳票,被称为「鸽王」的 Filecoin 真的能改变现有的中心化存储模式么?对这个问题,你怎么看?