星际文件系统(IPFS)会是将来一个非常重要的技术。IPFS的全称是Interplanetary File System,是一种p2p的文件分享系统,目的是要改变信息分发的方式。它在通信协议和分布式系统方面都有几项创新。我们先来看一下它背后的科技突破,这些突破让IPFS的目的成为可能。

首先看一下通讯协议和分布式系统。如果两个人要交流信息,这两个人需要共同的一套标准,以便确定信息在何时以及如何传递。这些标准就是通常说的通讯协议。通讯协议就像语言一样。如果我们去某个国家但是不说该国语言,我们就不具备和当地人交流的“通讯协议”。计算机也是这样,起初计算机是彼此独立的计算设备,一直到20世纪80年代,出现了通讯协议,才得以相互通讯。

在计算机中,通讯协议一般都是协议套件的形式,包含几层。比如网络协议套件包含4层,每一层都有相应的功能。除了网络协议,我们还知道计算机之间相互交流的基本结构叫做系统架构。有很多种架构,不过和我们目前讨论的相关的有客户端-服务器端架构和点对点网络(p2p)。

目前的互联网主要是客户端-服务器端的形式,这种形式正是基于互联网协议套件。而其中HTTP则是信息交流的基础。

现在网络上的数据是存储在集中的服务器上。人们在访问网络上某个数据时,是通过地址来进行寻找的。如需查看一张图片,并不是通过图片内容来寻找图片,而是通过哪台服务器上有这张图片,就去访问这个服务器的方式实现的。这种方式可以让数据更容易发布和管理,更容易保护数据,可以让服务器和客户端的容量更大。但是在安全性、私密性和效率方面有很大的缺陷。有权限控制服务器的一方即有权限控制所有数据。也就是说,你的数据可以被任何有权限访问服务器的人查看和修改,或是删除。使用基于地址寻找数据的方式时,数据是由其地址而非其内容确定的。也就是,即便我们附近的网络里就有我们需要的内容,我们也得访问远程服务器来获得想要获取的内容。而且我们也没有办法识别信息是否被修改,因为客户端只知道数据存放的地址,而不知道数据的内容。

不过,在互联网起始以来,客户端-服务器模型以及HTTP就一直在使用当中,而且表现也很不错。这是因为使用HTTP的网络传输文本和图片之类的小文件很高效。在网络发展的20年,一个普通页面的大小仅仅从2KB增长到了2MB。

HTTP对于加载网页来说很方便。但是它在设计之初就不是用于传输大文件的。(像是音频或者是视频之类。)HTTP的这些限制也催生了如BitTorrent的下载方式,可用来下载电影等大文件。

到了2018年,大数据以及网络高清点播视频已经很普及了。我们所生产和消费的数据也在不断增多,同时我们也在开发更强有力的计算机来处理这些数据。云计算等技术可缓解这一问题,但是分发数据的基础架构还是和以前基本一样。

现在就是星际文件系统(IPFS)登场的时刻了。IPFS想要通过一种全新的p2p文件分享系统来解决客户端-服务器端和HTTP网络的不足。IPFS基于几种新技术以及几种现存的技术,是由Protocol Labs创建的开源项目。Protocol Labs是一个研究网络协议的实验室,之前还是Y Combinator投资的一个初创项目。此外,Protocol Labs还开发了IPLD以及Filecoin,作为补充的系统。IPFS的组成很庞大,其主要结构如下:

分布式哈希表

哈希表是一种数据结构,把数据以键值对的形式保存。在分布式哈希表中,数据分散存储在计算机网络中,我们可以方便地查询并访问相关的节点。

分布式哈希表的主要优点是去中心化、容错和可扩展。节点不需要中心的协调,即使节点出错或者不再存在于网络之中,系统仍然可以可靠地运行,分布式哈希表可以拓展到容纳数百万的节点。如此一来,就比客户端-服务器端结构更有弹性。

块交换

文件共享软件Bittorrent通过创新的数据交换协议,能够成功协调数百万节点之间的数据传输,不过仅限于种子生态系统。IPFS实现了这一协议的通用版本,称为BitSwap,可以作为任何类型数据的市场。这个市场是Filecoin的基础:Filecoin是一个建立在IPFS上的p2p存储市场。

Merkle DAG

Merkle DAG即默克尔有向无环图,是默克尔树和有向无环图的一种组合。默克尔树保证在p2p网络上进行过交换的数据块正确无误、完好无损且未经修改。这样的校验是通过加密哈希函数实现的。函数接受一个输入值,通过计算输出一个独一无二的由数字和字母组成的字符序列,即哈希值。可以校验一个输入值经过计算之后得出的哈希值和现有的哈希值是否吻合,但是很难通过哈希值反推出输入值。

每一个独立的数据块叫做“叶子节点”,这些叶子节点计算了哈希值之后,得出“非叶子节点”。这些非叶子节点可以相互组合和计算哈希值,一直到所有数据块可以用一个单独的根哈希值表示。

下图形象地展现了该过程:

有向无环图用于对没有环的数据做出拓扑序列模型。有向无环图的最简单例子是家族树。默克尔有向无环图是一种数据结构,其中哈希值被用来引用有向无环图中的数据块和对象。这样就有了几个非常有用的特性:IPFS上所有内容都可被独一无二地确立,因为每一个数据块都有独一无二的哈希值。而且数据可以防止被篡改,因为如果修改了哈希值也就改变。如图:

IPFS的中心思想是把所有数据都建立在默克尔有向无环图上。这样可以使得安全性获得极大的提升。

版本控制系统

默克尔有向无环图的另一个强有力的特性是,可以让我们建立分布式的版本控制系统。比如Github就是一个例子,开发者可以同时协作开发项目。Github上面的文件就是通过默克尔有向无环图存储并分版本的。开发者可以单独复制和编辑文件的多个版本,保存这些版本,之后再把修改的内容和原文件合并。

IPFS对于数据对象使用的是相同的模型。只要对象对应于原来的数据,并且新的版本可访问,则整个文件的历史版本都是可获取的。如果数据块在网络中是保存在本地的,而且可以无限缓存,那么就表示IPFS对象可以永久保存。

而且,IPFS不依赖互联网协议。数据可以直接分布在覆盖网络上。这也是很重要的特性。

自认证文件系统

最后一个IPFS的重要特性是自认证文件系统(SFS)。它是分布式文件系统,不需要特殊权限就可以交换数据。

IPFS通过SFS这一概念实现了星际文件空间(IPNS)。IPNS是使用公钥来自认证用户在网络上发布的对象的SFS。上文提到,所有IPFS上的对象都可被独一无二地确定,节点也是这样。每个节点都有一套公钥和私钥,以及一个由其公钥经过哈希生成的节点ID。节点因此可以使用他们的私钥来签证其发布的任何数据对象,且数据的真实性可使用发送者的公钥来验证。

Reference:

https://hackernoon.com/a-beginners-guide-to-ipfs-20673fedd3f

https://hackernoon.com/merkle-trees-181cb4bc30b4

https://docs.ipfs.io/

https://docs.ipld.io/#the-data-model

什么是星际文件系统(IPFS)相关推荐

  1. 什么是行星际文件系统 (IPFS) 以及如何使用它?

    星际文件系统 (IPFS)是一个分布式的点对点文件共享网络,可以很好地成为新的去中心化网络的基础.以下是它的工作原理,以及如何开始使用它. 去中心化的互联网 尽管它是全球性的,但万维网仍然是一个 集中 ...

  2. 星际文件系统(InterPlanetary File System,缩写IPFS)

    星际文件系统(InterPlanetary File System,缩写IPFS)是个旨在创建持久且分布式存储和共享文件的络传输协议.它是一种内容可寻址的对等超媒体分发协议.在IPFS网络中的节点将构 ...

  3. IPFS星际文件系统(中文白皮书)

    IPFS - 可快速索引的版本化的点对点文件系统 作者: Juan Benet (juan@benet.ai) 译者: 郭光华(gavin@8btc.com) 摘要 星际文件系统是一种点对点的分布式文 ...

  4. ipfs星际文件系统初体验

    ipfs是InterPlanetary File System的简称,即星际文件系统,他不同于一般的操作系统文件系统,也不同于分布式文件系统,因为分布式文件系统最终访问文件还是采用的http协议,而i ...

  5. IPFS星际文件系统科普

    IPFS一般指星际文件系统. 星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议. 它是一种内容可寻址的对等超媒体分发协议. 在IPFS网络中的节点将构成一个分布式文件系统. 它是一个 ...

  6. BSN IPFS(星际文件系统)专网简介、功能、架构及特性、接入说明

    当今,随着信息技术.互联网的日益发达,人类的交流与协作方式已发生了颠覆性的变革.无论是数字,还是文字.图片.音乐.视频,都能从网上获得,点点手指就能掌握这一切.信息技术.互联网极大便捷了我们的生产.生 ...

  7. Computer:IPFS(星际文件系统)的简介、安装、使用方法之详细攻略

    Computer:IPFS(星际文件系统)的简介.安装.使用方法之详细攻略 目录 IPFS的简介 1.IPFS的应用 IPFS的安装 IPFS的使用方法 1.下载文件 第一步,启动IPFS节点 第二步 ...

  8. IPFS星际文件系统注定会成为伟大的项目

    资料来源:smg-corporate.com 作者丨Jonas Bostoen 翻译丨Jason · · 这篇文章将分为IPFS的理论介绍和IPFS的使用指南两部分. 第一部分旨在向大家展示IPFS是 ...

  9. IPFS星际文件系统下载及安装

    ipfs的下载与安装 ipfs星际文件系统是一个面向全球的.P2P的分布式文件系统. 目标是补充(甚至是取代)目前通知互联网的超文本传输协议http. 与传统的基于域名寻址的http协议相比较,ipf ...

最新文章

  1. redis nio 多路复用
  2. 《Linux高性能服务器编程》学习总结(四)——TCP/IP通信案例:访问Internet上的Web服务器...
  3. HDU1869---(最短路+floyd)
  4. android开发那些事儿(四)--调用系统相机像素过低
  5. pycharm的使用技巧
  6. java关键字false_无聊,null,true,false是java关键字吗
  7. 虚拟机XP系统突然变卡顿解决办法
  8. windows屏幕放大镜
  9. windows系统中误删文件恢复
  10. VOT 数据集下载toolkit
  11. rn在java中什么意思,RN150中RN是什么意思
  12. 前端基础总结--CSS
  13. express获取url路由地址参数的方法 获取get请求参数
  14. Ecowalker充气足球门,为青少年足球训练保驾护航!
  15. MEM最全汇总及分析
  16. python海量数据分析师_数据分析师真的月入过万吗?(基于Python的招聘数据分析全流程实操)...
  17. STM32学习记录:输入捕获应用
  18. 嵌入式实时操作系统1——初识嵌入式实时操作系统
  19. 【日拱一卒】如何编写测试用例(上)
  20. 弹性盒之主轴与交叉轴的区分

热门文章

  1. 信息安全管理(CISP)—— 信息安全管理
  2. 小白也能看懂的Pandas实操演示教程(下)
  3. 旅途——Python基本的“生存技能”
  4. 成为一名专业Web渗透工程师难吗?
  5. 一看就懂→专票电子化的三条实现路径
  6. 【USACO】2017 December Contest, Platinum题解
  7. PHP常见三种设计模式:单例、工厂、观察者
  8. Android 按键消息处理 1
  9. dya6小数据池、集合、编码、深浅copy
  10. 伤疤好了有黑印怎么办_疤痕留下黑印怎么办 不妨试试这四种方法