在之前的关于介绍 Skiff mail 的文章中提到过 用户可以选择数据存储服务使用Ipfs 服务器,那么什么是 Ipfs服务器?想必有很多人不太熟悉,我从网上找到了一个入门的文章来一起了解下什么 Ipfs。
P2P技术
在介绍 Ipfs 之前,有必要简要回顾下 P2P 技术。
P2P 是 peer to peer 的简称,其定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。
在P2P网络环境中,彼此连接的多台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站,整个网络一般来说不依赖专用的集中服务器,也没有专用的工作站。
P2P技术有几个核心特点:
▪ 非中心化:网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,无需中间环节和服务器的介入。
▪ 可扩展性:随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能比较容易地满足用户的需要。理论上其可扩展性几乎可以认为是无限的。例如:在传统的通过FTP的文件下载方式中,当下载用户增加之后,下载速度会变得越来越慢,然而P2P网络正好相反,加入的用户越多,P2P网络中提供的资源就越多,下载的速度反而越快。
▪ 健壮性:由于服务是分散在各个节点之间进行的,部分节点或网络遭到破坏对其它部分的影响很小。P2P网络一般在部分节点失效时能够自动调整整体拓扑,保持其它节点的连通性。
▪ 高性价比:采用P2P架构可以有效地利用互联网中散布的大量普通结点,将计算任务或存储资料分布到所有节点上。利用其中闲置的计算能力或存储空间,达到高性能计算和海量存储的目的。
▪ 隐私保护:在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。
▪ 负载均衡:P2P网络环境下由于每个节点既是服务器又是客户机,减少了对传统C/S结构服务器计算能力、存储能力的要求,同时因为资源分布在多个节点,更好的实现了整个网络的负载均衡。
P2P 技术的应用
由于 P2P 技术的特征,所以在早期互联网时代,国内应用非常普遍,最主要的应用就是资源下载和视频播放,其中一个很著名的应用软件就是快播软件。
快播 (又叫Qvod或Q播)与传统播放软件不同,快播集成了不一样的播放引擎,应用P2P技术并支持MKV、RMVB、MPEG、AVI、WMV等主流音视频格式。
在原理上,快播本身可以不存储任何视频文件,而是使用 P2P 技术将用户电脑上的视频文件进行了共享,同时观看同一部视频的用户无形中帮助其他用户加速了。
Ipfs 技术
IPFS星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。
IPFS技术本质上有点类似于P2P技术,它出现的目的主要作用于取代当前的HTTP技术。我们知道当前的互联网是由一台台电脑连接而成,通过同一种语言沟通,被成为“协议”。举个例子,最早的互联网就是通过 IP 地址进行访问的,但是 IP 地址太难记住了,后来通过 DNS 服务系统进行解析后,就可以通过域名来访问。
HTTP的协议原理是当我们需要找一份文件时,需要找到存有该文件的电脑IP地址,然后才可以下载。
IPFS的协议则完全放弃了这一做法,它将每一个文件标记一个独一无二的哈希值,当我们需要查找文件时,只需要找到该文件的哈希值就可以直接找到该文件下载。跟 ETH 协议里面的 merkle tree 有一点类似。
Ipfs 技术的应用——Filecoin
P2P 软件经验丰富的人会发现,不仅下行的流量在走,上行的流量同样满负荷在跑,因为此时你不仅在享受着别人帮你的加速,同时也在帮助别人加速。而你关闭了上行流量,同样下行流量也会归零。
从上面的例子中我们看到P2P 软件的困境,它没有办法逼用户自愿贡献出自己的流量,对于自私的用户也没有更好的办法。而IPFS虽然跟P2P 软件类似,但IPFS解决了这一问题,Filecoin正是在这种背景下诞生的。
在Filecoin的经济模型中,由存储矿工、检索矿工和用户三种角色组成。用户将文件上传到Filecoin网络中,该文件会被特殊的算法分散成多个小文件并由存储矿工竞争存储文件,矿工们靠存储文件来获得代币奖励。
拆分的文件在有效保护用户隐私的同时,由于用户下载时可同时从多种源下载,加快了下载的速率。
检索矿工的作用则是帮助用户找到他们下载的文件并提供下载服务。
Skiff 的应用
从前面的讲述就可以可以看到,Ipfs 最核心的就是解决了资源存储问题,使用去中心化的 P2P 技术来解决存储问题,避免中心化存储给用户带来的不安全感。因为在过往,所有的 email 都是存储在中心化的服务器上面的,服务提供商决定了数据的归属权,即便 web3.0使用了加密技术,服务提供商无法读取数据,可是还是没有实现“own by user”这个最初的里面。而 skiff 利用了 ipfs 技术以后,可以真正的实现“own by user”,是 web3.0技术与 Emai 一个良好的应用场景。