探索太空的奥秘,是人类数千年的梦想。然而,距离地球最远的人造飞行器旅行者一号也仅刚进入太阳系最外层边界而已。目前最现实的是实现太阳系行星之间的行星际旅行(interplanetary travel)。SpaceX的行星际运输系统 (Interplanetary Transport System)正是以此为目的,希望实现以太阳系中其他地方为目的地的太空探索。
星际文件系统
J.C.R. Licklider在1962年提出了“星际计算机网络(Intergalactic Computer Network)”的概念,这些概念几乎包含了当今互联网的一切,包括云计算。
ipfs- 星际文件系统(InterPlanetary File System),正是一个向传奇致敬的构想。
今天,一个网站需要拥有一台服务器或一个服务器集群。当用户访问网站时,浏览器必须直接连接到为该网站提供服务的计算机,即使它们距离遥远、传输过程会占用大量带宽。
作为点对点分布式文件系统,IPFS试图重新设计互联网。IPFS对互联网的核心改进是分散式分布,“我们使网站和网络应用程序没有中央原始服务器,它们可以像比特币网络一样分布”,这是HTTP无法做到的事情。
如何改进HTTP弊端
作为一种旨在将所有计算设备与相同文件系统连接的点对点分布式文件系统,IPFS试图从以下方面改进HTTP。
IPFS使用内容寻址,因此内容可以与原始服务器解耦,并可以永久保存。这意味着内容可以被存储并且非常靠近用户,甚至可以从同一个房间中的计算机来提供。内容寻址也使得数据可以被验证。一旦用户的设备里有了内容,就意味着它被无限期地缓存。
内容寻址和内容签名会保护基于IPFS的站点,使得DDoS攻击变得不可能。同时为了减轻已停用网站的负担,IPFS可以对重要的公共记录进行归档。
IPFS用基于内容的寻址替代传统的基于域名的寻址,用户不需要关心服务器的位置,不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中,将会得到基于其内容计算出的唯一哈希值。哈希值直接反映文件的内容,哪怕只修改1个比特,哈希值也会完全不同。当IPFS被请求一个文件哈希时,它会使用一个分布式哈希表找到文件所在的节点,取回文件并验证文件数据。
IPFS协议
作为分布式文件系统,IPFS综合了先前P2P系统(包括DHTs、BitTorrent、Git、SFS)的成功构想。 IPFS简化、发展、融合这些经过验证的技术到一个单一的系统。IPFS为编写和部署应用程序提供了一个新的平台,以及一个用于分发和版本化数据的新系统。
IPFS是点对点的,没有特权节点。 IPFS节点将IPFS对象存储在本地存储中。节点相互连接并传输对象。这些对象代表文件和其他数据结构IPFS协议分为一系列负责不同功能的子协议:
身份(Identities):管理节点身份生成和验证。
网络(Network):管理与其他节点的连接,使用各种底层网络协议。可配置的。
路由(Routing):维护信息来定位指定的节点和对象。响应本地和远程查询。默认为DHT,可切换。
块交换(Exchange):一种管理块(block)分布的新型块交换协议(BitSwap)。
对象(Objects):Merkle DAG,由面向内容寻址的不可变对象组成。用来表示任意的数据结构,例如文件层次结构和通信系统。
文件(Files):受Git启发的版本化文件系统层次结构。
命名(Naming):一个自认证的可变名称系统
IPFS与区块链
共识机制是区块链的核心部分,它强制性要求所有节点以一种一致性的方式保存分布式数据。而这是IPFS缺少的部分。
另外一点,加密货币爱好者一直关注比特币区块链的大小。现在看来以太坊也有类似的问题,尤其是各种以以太坊为基础的ICO完成后的疯狂交易活动更加剧了这个问题。这些问题大部分可以归因于区块链膨胀(blockchain bloat),这是成熟的区块链生态系统一个非常恼人的副作用。
有消息表示,以太坊的“区块链膨胀”在2017年可能达到1TB。为了最大限度地减少状态数据库膨胀带来的影响,需要付出相当大的代价来存储状态数据库中的数据。
因此,对于较大的数据来说,一种常见的设计模式是让区块链存储数据的IPFS哈希,不是存储数据本身。在区块链上存储数据和在区块链上存储数据哈希存在天壤之别。在这种情况下,如果有人在区块链中存储了IPFS链接,我们可以无缝地通过这个链接访问数据,就好像数据存储在区块链本身一样。
参考文档:
J. C. R. Licklider @Wikipedia:https://en.wikipedia.org/wiki/J._C._R._Licklider
Why The Internet Needs IPFS Before It’s Too Late:https://techcrunch.com/2015/10/04/why-the-internet-needs-ipfs-before-its-too-late/
IPFS官方站点:https://ipfs.io/
IPFS Docs:https://ipfs.io/docs/
IPFS @Wikipedia:https://en.wikipedia.org/wiki/InterPlanetary_File_System
An Introduction to IPFS:https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
如何使用星际文件传输网络(IPFS)搭建区块链服务:http://liyuechun.org/2017/09/18/ipfs-blockchain/
ipfs papers@github:https://github.com/ipfs/papers
领取专属 10元无门槛券
私享最新 技术干货