一、从HTTP到IPFS
我们平时上网时,最熟悉的莫过于网址里的“http://”字样,其实HTTP是万维网 (WWW: World Wide Web)服务器传输超文本到本地浏览器的传送协议。协议全称是Hyper Text Transfer Protocol,即超文本传输协议。
万维网如何利用HTTP工作呢?这又涉及到TCP/IP通信协议。简单来说,假设用户A在电脑上操作将文件上传至浏览器,而用户B需要从浏览器下载这个文件,那么这之间会经历一个过程。首先TCP程序会把A要发送的文件分解成很多数据,然后压缩成多个压缩包。这些压缩包又统统被装进一个IP里通过URL[ URL, 全称是Uniform Resource Locator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。向HTTP服务端即WEB服务器发送请求。Web服务器根据接收到的请求后,向客户端发送响应信息,于是A的文件上传成功。
而用户B下载这个文件时,需要输入IP地址或者域名,好让电脑知道去哪里找到对应信息(基于位置的寻址Location based addressing)。之后电脑上会向WEB服务器发送请求,TCP会将发下载的压缩后的数据按序还原。如果接收TCP发现部分文件受损,会请求再发送一次。这样的话,就会有以下一些问题:
1) 在互联网中,所有数据都会被存储在一个中心服务器上。无论用户是上传/下载文件或者是浏览网页,都需要一次一次从服务器上获取资料。一旦服务器出现故障、被限制或是被攻击,就会出现文件丢失或者网页无法打开的情况(错误404)。
2) 基于位置的寻址方式也存在不确定性。比如,一旦IP被删,或者服务器关闭,那么用户将无法下载该文件。
3) 如果这个文件是很多人都需要的,那么每个人都得去下载才能使用,造成很大的存储空间浪费问题。
所以互联网虽然是四通八达又涵盖广泛的工具,但是也不可避免的有其局限性。
IPFS在构建信息交换的桥梁这一点上,与互联网很相像,不同的是IPFS是去中心化的。也就是说IPFS没有一个中心服务器,所以不存在信息丢失或者被篡改的问题。并且IPFS可以实现文件共享,从而节省存储空间。
二、IPFS的极简主义
2014年5月,墨西哥小哥Juan Benet与他的几个斯坦福大学同学一起发明了IPFS。在创办IPFS之前,Juan Benet是典型的国外常春藤学生极客,有一个开挂般的人生。他是斯坦福大学的本科和硕士毕业,在斯坦福读硕士的期间就参与创立了Loki studios,担任联合创始人和CTO,这是一家手游公司,后来被雅虎收购。2011年入驻斯坦福学生创业孵化中心StartX EIR,2012年,毕业后创办了Athena,这是一个做了一年多的时间后,于2014年5月份创办Protocal Labs。
Protocal Labs刚以创立就得以加入美国硅谷顶级孵化器Y-Combinator,IPFS是他们做的第一个产品。Protocol Labs 在创建IPFS的时候给它取名为“InterPlanetary File System(星际文件传输)”也是有深刻含义的。Protocol Labs希望构建一个点对点的分布式文件系统,通过底层协议,让全世界所有人都能够轻松从IPFS系统上提取文件,且不受防火墙的影响。甚至如果科技发展到一定程度,需要进行星球与星球信息传输时,IPFS也可以提供快速存储文件的服务。
1.存储
在IPFS中,信息可以存储进IPFS系统中的块(block)里,这些块可以存储至多256kb的数据,它们还可以链接其他IPFS块。也就是说,存储小于256kb的文件时,只需将这个文件放进一个块内就可以了。而大于256kb的文件会被分成多个256kb然后放进块中,之后IPFS将创建一个空块,该块将链接到文件的所有其他部分。这个空块就类似于一个大信封,里面会涵盖整个文件的所有部分。
系统会给同一个文件的每一个块计算一次哈希值a,所有块的哈希值a计算完毕之后,会将所有的哈希值a拼凑成一个数组b,再计算一次哈希值,从而得到最终的哈希值c。最后把最终的哈希值c和原文件捆绑起来,组成一个对象,从而形成一个索引结构d。把块和最终的索引结构d上传至IPFS节点,文件便同步到网络了。
此外,还有一种小于1kb的小文件,如果这些小文件也单独放进一个块里的话,也会造成一定的浪费。于是,IPFS把小于1kb的数据内容直接和哈希索引放在一起上传给IPFS节点,不会再额外的占用一个块。
可见IPFS的创作理念,是尽可能少的使用存储空间,尽量分散的存储文件。另外,对于相同的文件,IPFS只创建一个文件夹,系统也会自动删除重复的文件,并修改的版本历史记录,这样可以大大节省存储空间,保证整个系统的运行速度,并保证存储文件的安全,和使用的便捷。
2.读取
同样作为信息价值交换的基础,用户在IPFS上传或者使用文件时,不再是基于位置的寻址(Location based addressing),而是基于内容的寻址(Content based addressing)。也就是把“去哪找信息”的指令换成“想找什么内容”的指令。
在互联网内,下载文件或者浏览信息需要一个IP地址或者域名,而在IPFS内,每个文件都有自己的哈希值,并且一个哈希值只对应一个文件。不存在一个文件有多个哈希值,或者多个哈希值对应同一个文件的问题。因而,用户只需在IPFS内输入需要文件的哈希值,系统就会出现对应的文件。这些文件是分布存储的,所以只要有一个用户有对应的文件,就算部分节点罢工或者不在线,也不会影响文件的读取。
具体在IPFS系统种下载文件时,首先,需要矿工根据最终哈希数值搜索该哈希的索引结构,并下载下来。然后,用户就可以根据哈希索引搜索到文件所在的节点位置。用户将节点上的块下载下来之后,IPFS将根据哈希数组的顺序,把文件重新组合出来,用户就可以使用了。
可以看出,IPFS将文件细分,使上传略显复杂,其目的是使用户在下载时更加便捷。毕竟,小文件的下载比大文件来得更加简单方便。
三、IPFS的缺陷
1)信息不可撤销、不可篡改是IPFS的优点,但是,如果是一个需操作的文件,或者说是内容错误、信息需要更新的文件,那么不可撤销、不可更改将会成为一个很麻烦的事情。
对此,IPFS给出的对应措施是:可以将修改之后的文件上传至IPFS,IPFS也会对文件进行更新,在IPFS内可搜索到文件更新的所有历史纪录。
2)IPFS将大文件分别存放于不同的块中,也不可避免的有一个隐患,即:如果一部分存放文件的节点统统下线不可用了,并且该文件没有备份,那么整个文件都是不可用的。
对此,有两种解决方案,一是激励更多的节点去存储这个信息,二是积极分发文件,使得更多节点存储这个信息。IPFS也认识到了这个问题,于是创始团队又推出Filecoin帮助解决这个问题。Filecoin共发行20亿枚,并在2017年7月进行代币私募,8月进行了代币众筹,融资超过2.5亿美元,成为史上规模最大的代币发行之一。
图片来源【摄图网】
Filecoin是建立在IPFS基础上的一条公链,旨在创立一个分布式的储存市场,帮助IPFS激励用户利用多余的空间存储链上信息,维系IPFS生态的正常运行与发展。Filecoin激励用户出租自己的闲置硬盘、磁盘等存储空间,用于接收链内存储信息,防止部分节点下线或破坏导致文件不可用问题。出租了自己存储空间的用户便成为矿工,只需连接到 Filecoin 网络,然后等着协议来处理文件传输和交易就行。矿工贡献的存储空间越大,获得的Filecoin(FIL)就越多。当然,客户也可以通过花费Filecoin来雇佣矿工来存储或分发数据。
四、基于IPFS的项目
2016年,IPFS一度成为区块链行业中最受青睐的技术之一,数千名开发人员称之为“WEB的未来”。同年,协议实验室还创建了libp2p、IPLD、multiformats、Orbit以及其他项目。直到现在,IPFS都保持着非常好的开发进度。到目前为止,基于IPFS而开发的项目很多,包括Akasha,BlockCat,Mana,DistrictOx,TokenClub等等。ETE也是基于ETH和IPFS的架构开发出来的。
自Protocol Labs成立以来,一直潜心技术,在市场上十分低调。直到近期,Protocol Labs开始新闻不断,刚在7月中旬举办完《IPFS & libp2p开发者大会》,又在8月3日在旧金山举办LAB DAY 2018活动,即实验室日2018。此次活动中,Protocol Labs从项目展示、黑客破解模拟和协议相互协作为主等方面,向投资机构等关注者展示协议实验室生态系统最新的动态资讯。
IPFS在区块链行业内其实一直保持着非常高的关注度,从诞生之日起,就被广泛的讨论和传播,在主网未上线的时候,Filecoin的期货就已经最高达到10.19美元,市场总估值达到203.8亿美金,各种矿机厂商的IPFS矿机被抢购一空,可见市场对其期望之高。Protocol Labs创立了Filecoin和IPFS,两者互为补充。Filecoin可以为IPFS在全球范围内提供大量节点,与此同时还带着一个巨大的分布式存储空间,同时解决了IPFS的存储问题,而IPFS则为Filecoin提供了一个坚实的价值基础及技术架构。
正如我们现在对于互联网和移动互联网的使用习以为常一样,IPFS实则是重构了我们传递、获取、存储信息的方式,而Filecoin则为这一系统建立了激励体系来确保系统的运转,IPFS的前沿或许会在不久的将来,彻底改变我们看待信息的方式,成为我们日常生活的一部分。不管是区块链本身带来的金融自由,还是IPFS给我们带来的信息自由,无疑都将是人类进化史上重要的一个里程碑。
作者简介:李丽诗Laura,LITEX CMO
毕业于北京大学与哥伦比亚大学,盖娅大学与区块链星球创始人。