1. IPFS原力区首页
  2. IPFS

IPFS – 基于内容寻址,版本化的P2P文件系统 (白皮书. Part1)

星际文件系统(IPFS)是一个点对点的文件分发网络系统,这个系统的目标是将所有的电脑设备用同样的文件系统连接起来。

IPFS – 基于内容寻址,版本化的P2P文件系统

(3稿)   先贴出来,后面慢慢改

Juan Benet

juan@benet.ai

摘要

星际文件系统(IPFS)是一个点对点的文件分发网络系统,这个系统的目标是将所有的电脑设备用同样的文件系统连接起来。一定程度上来说IPFSWeb系统有相似之处,但其实IPFS更类似于一个独立的BitTorrent设备群组,在一个Git储存库里进行文件交换。换句话说,IPFS提供了一个拥有超链(hyber links),高吞吐量,基于内容寻址的区块存储网络。这就构成了一个广义上的默克尔有向无环图,也就是一个可以构建版本化文件系统,区块链甚至永久网络的数据结构。IPFS拥有一个分布式的哈希表,一个有激励机制的区块交易所,和一个可以自我证明的命名空间。IPFS不具有单点故障,并且节点之间不需要相互信任。

1.   介绍

人们曾为了构建全球化的分布式文件系统做过非常多的努力。这些努力有的获得了标志性的成功,有的则彻头彻尾地失败了。在这些学术性的尝试中,AFS[6]获得了广泛型的成功并一直沿用至今。但其他尝试[7,?]全都没有获得如此的成功。在学院派之外,最成功的系统当属针对大型媒体(音视频)而研发的点对点文件分享应用。最突出的是NapsterKaZaA,以及BitTorrent [2]构成的巨型文件分发系统,它可以支持上亿的同步用户。即便是今天,BitTorrent仍然维持着相当多的部署,每天都有数以百万的节点在上面运行[16]。这些应用比同类的学院派文件系统拥有多得多的用户和文件分发数目。但这些应用最初并不是被设计来作为公共服务的。尽管它们被成功地再利用,但始终没有一个一般性的文件系统能提供全球性的,低延迟的,去中心化的文件分发。

也许是因为我们已经有“足够好”的这样一个系统了:HTTP。到目前为止,HTTP是人们应用过的最成功的“文件分发系统”。与浏览器结合起来后,HTTP获得了空前的技术和社会影响力。它已经成为了事实上的全网文件交互途径。然而,它并没有吸取过去十五年中各式各样文件分发技术的长处。从某种角度来说,考虑到诸多兼容性问题和各方势力相互制约,更改全网的基础框架几乎是不可能的。但换个角度考虑,从HTTP走入人们视线开始,也有很多新的协议出现并得到广泛使用。目前来看,我们最缺乏的是对设计的升级:提升现有的HTTP网络,并在不影响用户体验的情况下添加新的功能。

工业界之所以一直使用HTTP,是因为即使对于有很大流量的小型组织来说,这种形式的文件传输也要相对廉价。但我们正进入数据分发的新时代,也就有着新的挑战:(a)托管和分发以PB级别的数据量,(b)跨组织的大数据运算,(c)大容量、高解析度的需求以及实时媒体流,(d)大数据的管理和链接,(e)防止重要文件的偶然丢失。这些问题很多都能归结为“数据太多,随处可及”。鉴于HTTP的陈旧功能和带宽所限,我们已经开始用一些新的数据分发协议来取代它。下一步,就是要让这些新的协议融入网络中。

正交于数据分发,版本控制系统被用来处理重要数据的协同工作流。Git,一个分布式源代码版本控制系统,发展出了许多有用的途径来模拟和实施数据分发。Git工具链提供了通用的版本控制功能,这是很多文件分发系统所缺少的。受Git启发,许多新的解决方案涌现了出来。像Camlistore[?],一个个人文件存储,系统,以及Dat[?],一个数据协同工具链和资料收集管理器。基于内容寻址的的默克尔有向无环图可以提供强大的文件分发能力,基于此,Git对文件分发系统的设计产生了很深的影响。目前这些系统中仍需探索的问题是,数据结构是如何影响高吞吐量文件系统的设计的,以及它们怎样才能对网络产生促进作用。

本文将要介绍IPFS系统,一个新型的点对点版本控制文件系统,其旨在解决上述一系列问题。IPFS综合学习了以往系统的成功经验,精心打造了一个超越以往经验的综合性系统。IPFS的核心思想是将所有数据模拟为默克尔有向无环图的一部分。

2.   背景

本节将要介绍IPFS所参考和借鉴的一些优秀点对点系统的重要特点。

2.1    分布式哈希表

分布式哈希表(DHTs)被广泛应用于协调和维持点对点系统的元数据。例如,BitTorrent 中的主干哈希表会追踪torrent群组中的一系列节点。

 

2.1.1        Kademlia DHT

Kademlia DHT[10]是一种常见的哈希表,它能提供:

1.     高效的网络查询:查询过程平均经过[log2(n)]个节点。(例如,拥有10,000, 000个节点的网络只需要20跳)

2.     低协调成本:Kademlia对送往其他节点的控制信息数进行了优化。

3.     对长期节点的偏爱提高了对各种攻击的抗性。

4.     在点对点应用中的使用非常广泛,包括GnutellaBitTorrent,它们的网络节点数已经超过了20[16]

2.1.2        Coral DSHT

虽然一些点对点文件系统直接在哈希表中储存数据,但“数据非要存储在不需要它的节点上,是对空间和带宽的浪费”[5]Coral DSHT用三种方式扩展了Kademlia

1.     Kademliaids为对key“就近”的节点(使用XOR距离)存储数据。这不考虑数据的存储位置,忽略可能已经存有数据的“遥远”节点,强制“就近”节点进行存储,而不管节点是否需要。很明显这可能浪费存储空间和带宽。相反,Coral会在可以提供数据块的节点存储地址。

2.     Coral DHT APIget_value(key)释放到get_any_values(key) DSHT 中的“sloppy”)。用户只需要一个工作的节点就可以,并不需要整个列表,所以这个方法行得通。作为回报。Coral只把value的子集分配给“就近”节点,避免热点产生(当一个key变得热门的时候,附近的节点可能会过载)。

3.     此外,Coral根据区域和大小组织出叫做“团簇(clusters)”的分立DSHTs。这使得节点可以优先查询他们区域中的对等点,“在不查询远距离节点的情况下找到附近的数据”[5],这可以大大减少查询的延迟。

2.1.3   S/Kademlia DHT

S/Kademlia是对Kademlia的扩展,S/Kademlia尤其在以下两个方面上保护了系统不受恶意攻击:

1.     S/Kademlia为保护NodeId的生成,和防范Sybill攻击提供了方案。它需要节点生成一个PKI密匙对,从而得到他们的身份并互相签名。有一个方案包含了工作量证明的加密谜题,来使Sybill的生成更为困难。

2.     S/Kademlia节点在不相交的路径上查找value,以确保在存在大量攻击者的时候,网络中的诚实节点仍然能够相连通。S/Kademlia在攻击者规模达到全网节点的一半时成功率仍可达0.85

2.2    区块交换—BitTorrent

BitTorrent[3]是一个非常成功的点对点文件分享系统,它成功地让不受信对等点们(swarm)与系统协调工作,相互发送文件。BitTorrent的关键特征和它启发了IPFS设计的生态系统如下:

1.     BitTorrent 的数据交换协议使用了一种类似tit-for-tat策略的方法,可以奖励对其他节点做出贡献的节点,并惩罚只会吸取其他节点资源的节点。

2.     BitTorrent的对等点会追踪可用的文件片段,优先发送最稀少的。这减轻了种子的负担,使得没有种子的终端有能力相互间进行交易。

3.     BitTorrent的标准tit-for-tat策略对一些剥削贷款的分享机制是很脆弱的。PropShare[8]是一个不同的对等点带宽分配策略,它可以更好地抵抗剥削机制,提高群组的表现。

2.3     版本控制系统—Git

版本控制系统提供了一些策略,这些策略根据时间变化对文件进行模拟,并高效地分发不同的版本。非常流行的版本控制系统Git提供了强大的Merkle DAG2对象模型,这个模型可以用分布式友好的方式对文件系统树的变化进行捕捉。

1.     不可改变的对象表现文件(blob),路径(tree)和变更(commit)。

2.     通过对内容进行哈希加密,对象可以进行内容寻址。

3.     到其他对象的链接是嵌入式的,形成了一个Merkle DAG。这提供了许多有用的完整性和工作流的特性。

4.     很多版本的元数据(分支,标签,等等)都是简单的指针引用,因此创建和更新的成本都不高。

5.     版本变更只需要更新引用和添加对象。

6.     分布式版本变更对其他用户来说只是转移对象和更新偏远的引用。

2.4     自证明文件系统—SFS

两个引人注目的(a)分布式信任链,(b)平等共享的全局命名空间都是SFS [12,11]提出的 SFSi介绍了一种搭建自我证明文件系统的技术:使用下面的方法寻址远程文件

 

/sfs/<Location>:<HostID>

 

其中Location 是服务网络地址。

 

HostID = hash(public_key || Location)

因此SFS文件系统的名字就证明了他自己的服务。用户可以验证服务提供的公共密匙,协商共享机密,以及保障通信。所有SFS实体都共享一个全局命名空间,在这里命名的分配是加密的,不受任何中心实体控制。

 

原创文章,作者:wb,如若转载,请注明出处:https://ipfser.org/2018/01/11/ipfsneirongxunzhi/

提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:ipfsforce@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code