IPFS并非全新发明,它是几十年来分布式系统探索的产物

来源:广州艾比特网络科技有限公司  作者:广州艾比特网络科技有限公司  时间:2018-12-27

  区块链是一个分布式系统,包括以太坊、EOS在内的公链实现数据的分布式计算,没有提供数据的分布式存储,这导致分布式的区块链系统无法真正彻底地做到分布式。

  IPFS(Inter Planetary File System,星际文件系统)协议解决这样的问题,它是分布式文件系统,可以实现数据的分布式存储。同时它也是一个去中心化网络的基础设施,包括公链在内的不同类型的应用都可以构建在它的基础之上。

  IPFS并非全新发明,它是几十年来分布式系统探索的产物,包括DHT(Distributed Hash Table),BitTorrent,Git和SFS(Self-Certified Filesystems)在内,IBFS对它们做出适合区块链系统的改进,并通过分层设计将它们组合成一个新的系统。

  IPFS并非全新发明,它是几十年来分布式系统探索的产物

  当把文件存储到IPFS系统时,文件并不是以一个完整的个体被存储,而是文件数据以平均分割法方式被切分成若干个256KB大小的块。这些块在经过哈希运算后,分开存储在网络中的各个分布式的节点之中,没有节点拥有特权。

  这个分布式存储的难点不在于文件的切割或加密,而是如何把这些被分割和被分开存储的数据重新组合成一个文件,这正是IPFS协议的第一个关键技术——Merkle DAG(Merkle Directed Acyclic Graph,默克尔有向无环图)。

  Merkle DAG从Git系统(林纳斯·托瓦兹创作的分布式版本控制系统)改造而来,是在Merkle Tree的基础上构建,储存的是哈希值。IPFS上大部分数据都是以Merkle DAG的结构存在。

  当网络获取文件时,先从可信的节点获得文件的Merkle Tree树根哈希值。一旦获得了树根,就可以从其他不可信的节点获取Merkle Tree的各个节点的哈希值。通过可信的树根来检查接收到的Merkle Tree节点,如果Merkle Tree某节点是损坏或者虚假的,就从其他存储节点获得另一个Merkle Tree节点,直到最终获得一个与可信树根匹配的Merkle Tree。

  由于Merkle DAG是基于哈希值的,而哈希值取决于数据块的内容,因此IPFS协议拥有内容寻址的功能(HTTP是基于域名寻址),它还有防篡改和去重复的功能。防篡改是可以通过哈希值来确认数据是否被篡改;去重复是由于相同内容的数据块哈希是相同的,可以去掉重复的数据,节省存储空间。

  仅仅实现数据的分布式存储还远远不够,数据还需要在节点之前有效的交换,从而使得整个系统能够高效运转。IPFS协议受BitTorrent 的启发,通过对等节点间交换数据块来分发数据。

  IPFS并非全新发明,它是几十年来分布式系统探索的产物

   BitTorrent 是一种点对点传输的网络协议,它可以存有不信任对等节点的网络中分发数据,对于一个文件,下载的用户数越多,速度就越快,部分的网络拥堵或服务器宕机也不会对整个系统造成影响。不过BitTorrent有一个致命的缺点,就是节点往往更多的是索取而不是贡献。

   如何激励节点分享数据?IPFS在BitTorrent的基础上进行了创新,增加了信用、策略、帐单在内的体系,这一体系的数据交换协议被称做BitSwap。

   在BitSwap协议下,发送数据给其他节点可以增加节点信用值,而从其他节点接受数据则会降低节点信用值。

   也就是说,如果一个节点持续分享数据,其他节点给它发送数据的概率就会越大;而一个节点只接收数据而不分享数据,而其他节点给它发送数据的概率就会越低,直到低到被其他节点忽略。

   此外,BitSwap获取数据块不限于从同一组对等节点中,在该协议里存在一个对等节点形成的大集群,它包括所有的数据块,这使得BitSwap的效率相比于BitTorrent更高。

  最后,介绍一下Filecoin和Filenet。

  Filecoin和Filenet都是运行在IPFS上的激励层,通过Token激励让节点有动力为网络提供存储空间,从而在IPFS协议的基础上构建一个分布式的存储网络。但Filecoin和Filenet彼此独立,是两个不同的项目,采用的也是不同的Token分发模式。从某种角度而言,任何组织都可以在IPFS上搭建自己的激励层。

您可能喜欢
Copyright © 2017 iIPFS.cn IPFS/FileCoin资讯站