1. 优优财经首页
  2. 技术

快速了解星际档案系统IPFS的原理与应用

IPFS 本身不是区块链(Blockchain),也不是服务(Service),而是「协议(Protocol)」,性质上跟BitTorrent 很像。

如果你对区块链有兴趣,你应该要了解IPFS ,区块链本身是一项去中心化的分散式资料库系统,由于必须做到去中心化的程度,它本身仅是适合纪录数字的简单储存系统,无法载入文件或是图片。但区块链技术若要成功商业化,则必须拥有更复杂的储存系统,用来提供复杂程式、文件、图片及影片的储存功能,而IPFS 能补足区块链的储存性能问题。

目前去中心化应用(DAPP)只有计算作为筹码用的加密货币时才会动到区块链,其余网页、文件以及程式码仍然储存在单一伺服器上,例如AWS 、 GCP 这些平台,本质上仍是中心化的产品。

照理说DAPP 不该仰赖中心化的储存空间,一旦伺服器被关闭,所有的网页内容也就跟着消失,无法满足区块链当初设计的初衷,为了补足区块链当前的缺陷,「IPFS 星际档案系统」(InterPlanetary File System) 被设计出来。

它能提供分散式的P2P 网路储存服务,每一个节点都掌握部份的分割档案,一旦上传成功,档案将以「DAG 有向无环」的形式被纪录在Merkle Tree 上而且无法修改与删除,每个档案都有唯一的HASH 值,允许使用者利用该唯一的HASH 值访问并下载档案。

利用IPFS 持久储存档案

IPFS 本身不是区块链(Blockchain),也不是服务(Service),而是「协议(Protocol)」,性质上跟BitTorrent 很像,是一项档案储存与分享系统,只要是有点网路年纪的人一定知道BitTorent ,简称BT 这项P2P 服务,过去网路内容还不发达的时代,过去你可以透过BT 找到所有想要的档案,但你要先下载BT 种子文件,然后让电脑从别人的电脑下载目标档案。

IPFS 则更为先进,只要使用者持有档案的加密金钥,是一连串的乱数值,该协议就能引导使用者在「IPFS 节点群」中搜寻到特定的档案,而「IPFS 节点群」是由数个伺服器节点组成,每台伺服器各自储存及备份了部份的档案。

如果我在IPFS 节点群存入一个影片,该影片会被分拆成多个分割档案,并且标上一个Hash 值标签,以有向无环DAG 树状图的模式存在于IPFS 地图中,接着这些分割档案模块会被备份在两个以上的伺服器中,即使其中一个节点被删除也有其他节点进行备份供使用者取用及下载,借此达到持久储存的功能,很适合用来储存一些「敏感且危险」的影片及文件。

当然由于采用DAG 储存档案位址,每一个档案都拥有唯一的Hash 值,挡案上传后便无法修改或删除,后续的档案更新则可以透过IPNS 的命名功能把原有的档案位址导向更新后的地址,但原先的档案仍然会存在。

那要如何找到这些档案呢?IPFS 协议运用了区块链类似的分散式杂凑表(Distributed Hash Table),使用者必须使用对应的加密金钥才能透过IPFS 协议找到特定档案, IPFS 协议会利用杂凑表解密该金钥并产生对应的档案地址(From key to value),使用者一般无法透过搜寻的方式在分散式网路中找到档​​案,只能持有对应的金钥才能找到。

简单说,使用者只要输入对应的Hash 值,就能快速在IPFS 网路中找到对应的档案,然后档案以多个分割模块的方式储存在IPFS 网路中,由于节点分散在全球网路中可以有更高的稳定性。

所以IPFS 比起单纯的NAS 储存,它的形式更像是一种内容传递服务(Content Delivery Network),只要档案存入IPFS 节点群中,该档案就会被分割并备份到全球不特定的伺服器之中。

什么是CDN 服务?

所谓的CDN 服务是指在全球各地建置许多的资料中心,让就近客户取用资料。

举例来说,如果企业的网站设置在美国,但是客户位于日本,那么客户就得走太平洋电缆连到美国的伺服器,过程将产生一段可观的延迟。但是透过CDN服务可以事前把网页内容快取到日本的伺服器,那么位于日本的客户直接连到日本当地的伺服器即可。如此一来将可以大幅加速网站的存取速度,目前微软的Azure也有提供IPFS的PAAS服务,实务上可以透过Cloudfare的CDN服务来加速档案存取。

解决BT 的效率问题

BitTorrent 是很早期的P2P 档案分享装置,当有使用者出来作种(档案来源的标签),以自家的电脑与频宽为起点分享特定档案,作种的人可以将种子分享给他人,其他人可以利用该种子从起点下载档案,并且借此互相分享档案,而且越多人作种速度就越快。

BT存在效率问题,同一种档案可以重复存在,种子彼此也无法整合,导致使用者必须找到最多人使用的种子文件才有办法拥有较快的下载速度,但 IPFS中档案拥有唯一的Hash值。当然更棒的是后续分享档案只需要提供唯一的Hash值就能提供其他人下载,由于任一档案都被纪录在IPFS的DAG树状图中,都会被标记唯一的Hash值,所以都可以任意下载文件夹中的任一档案。

  • 假设小明的节点拥有歌曲A ,阿华的节点也拥有歌曲A 的档案,这个歌曲A 有唯一的Hash 值,使用者可以依据这个Hash 值找到歌曲A ,不需要种子文件下载,而且可以同时从小明及阿华的节点下载档案。

 BT只能依据种子文件下载整个档案内容,比如说你只想要A专辑的一首歌03.mp3 ,如果采用BT系统,你必须下载整张A专辑再从中取出你想要的歌曲03.mp3 ,然而在IPFS中只需要该歌曲的Hash值便能直接下载03.mp3,不用先下载整张专辑,节省了许多时间与下载频宽。如果BT要直接下载03.mp3则需要再重新产生一份种子文件,这样网路就便会存在两个种子文件,然后再重新发布到网路上,过程不但繁琐也缺乏效率, IPFS则直接从原本的专辑档案中利用hash抓出档案即可,不用重新再做一个种子文件。

IPFS 与区块链结合, Hash 索引可存入交易备注并导引至特定档案

根据上述的解释, IPFS 看起来只是BitTorent 的改良版,可以提供档案分散式储存与Hash 值索引的功能,为何跟区块链会产生关联?

其实IPFS 的Hash 索引功能可以起到很大的作用,只要将特定档案的Hash 存入区块链的「交易备注」中,便可以直接引导到特定且唯一的档案,而且该档案会被分割到多个节点并备份,可以提供更持久且安全的保护,这是BT 无法作到的精准度与专有性,让IPFS 很适合与主链结合,可以发展出更完整的去中心化应用。

虽然说IPFS 具有许多优点,但目前网路的档案分享还是以BitTorent 为主流,因为BitTorent 具有丰富的社群与资源之外,你几乎可以在上面找到任何你想要的档案,而且IPFS 客户端的使用界面与普及度还有很大的改善空间,现在区块链的DAPP 也还在发展与实验期,使用者仍停留在小众族群,现有储存需求透过中心化储存早已足够。

但是未来随着去中心化应用成熟,对于分散式储存的需求将越来越大。区块链会带来直接金流,只要牵涉到利益问题,参与者对于应用上的文档、图片及影片的保存也会越来越重视, IPFS 将可以提供更安全及分散式的储存方案。

对了, IPFS 与BT 同样能储存一些被极权政府禁止的档案,一旦上传便无法删除及修改。

问题来了,过去BitTorent 都是社群中的志愿者分享档案来源,可能基于自己的喜好,但回归商业考量,谁会愿意无偿提供自己的电脑作为储存空间呢?

所以像是Filecoin 这类的专案就是希望结合区块链的经济模型与IPFS 的储存协议,让提供储存与下载频宽的节点可以获得报酬,上传或下载档案的使用者都需要付费使用,如此便可形成一个经济模型,促使越多节点愿意提供空间与频宽,使用者也能享受到更高速且稳定的下载速度。


什么是「IPFS」?

「IPFS」星际文件系统(InterPlanetary File System)是一个分布式的web,点到点超媒体协议。可以让我们的互联网速度更快、更加安全,并且更加开放。IPFS协议的目标是取代传统的互联网协议HTTP。

为什么有IPFS?

众所周知,互联网是建立在HTTP 协议上。HTTP 协议是个伟大的发明,让我们的互联网得以快速发展,但是互联网发展到了今天,HTTP 逐渐出来了不足。

HTTP 的中心化是低效的,并且成本很高。

使用HTTP 协议每次需要从中心化的服务器下载完整的文件(网页、视频、图片等),速度慢、效率低。如果改用P2P 的方式下载,可以节省近60% 的带宽。P2P 将文件分割为小的块,从多个服务器同时下载,速度非常快。

Web 文件经常被删除。

回想一下是不是经常你收藏的某个页面,在使用的​​时候浏览器返回404(无法找到页面), http 的页面平均生存周期大约只有100 天。Web 文件经常被删除(由于存储成本太重),无法永久保存。IPFS 提供了文件的历史版本回溯功能(就像git 版本控制工具一样),可以很容易的查看文件的历史版本,数据可以得到永久保存。

中心化限制了web 的成长。

我们的现有互联网是一个高度中心化的网络。互联网是人类的伟大发明,也是科技创新的加速器。各种管制将对这互联网的功能造成威胁,例如: 互联网封锁、管制、监控等等,这些都源于互联网的中心化。而分布式的IPFS 可以克服这些web 的缺点。

互联网应用高度依赖主干网。

主干网受制于诸多因素的影响,战争,自然灾害,互联网管制,中心化服务器宕机等等,都可能是我们的互联网应用中断服务。IPFS 可以是互联网应用极大的降低互联网应用对主干网的依赖。

1. IPFS 的目标

IPFS 不仅仅是为了加速web。而是为了最终取代HTTP 协议,使互联网更加美好

2. IPFS 包含哪些内容

IPFS 是一个协议,类似http 协议

  • 定义了基于内容的寻址文件系统
  • 内容分发
  • 使用的技术分布式哈希、p2p 传输、版本管理系统

3. IPFS 是一个文件系统

  • 有文件夹和文件
  • 可挂载文件系统

4. IPFS 是一个web 协议

  • 可以像http 那样查看互联网页面
  • 未来浏览器可以直接支持ipfs:/ 或者fs:/ 协议

5. IPFS 是模块化的协议

  • 连接层:通过其他任何网络协议连接
  • 路由层:寻找定位文件所在位置
  • 数据块交换:采用BitTorrent 技术

6. IPFS 是一个p2p 系统

  • 世界范围内的p2p 文件传输网络
  • 分布式网络结构
  • 没有单点失效问题

7. IPFS 天生是一个CDN

  • 文件添加到IPFS 网络,将会在全世界进行CDN 加速
  • bittorrent 的带宽管理

8. IPFS 拥有命名服务

  • IPNS:基于SFS(自认证系统)命名体系
  • 可以和现有域名系统绑定

IPFS 的「宏伟」目标是取代HTTP,那么先来看看IPFS 是如何工作的?

  1. IPFS 为每一个文件分配一个独一无二的哈希值(文件指纹: 根据文件的内容进行创建), 即使是两个文件内容只有1 个比特的不相同, 其哈希值也是不相同的。所以IPFS 是基于文件内容进行寻址, 而不像传统的HTTP 协议一样基于域名寻址。
  2. IPFS 在整个网络范围内去掉重复的文件, 并且为文件建立版本管理, 也就是说每一个文件的变更历史都将被记录(这一点类似版本控制工具git, svn 等), 可以很容易个回到文件的历史版本查看数据。
  3. 当查询文件的时候, IPFS 网络根据文件的哈希值(全网唯一) 进行查找。由于每个文件的哈希值全网唯一, 查询将很容易进行。
  4. 如果仅仅使用哈希值来区分文件的话, 会给传播造成困难, 因为哈希值不容易记忆, 就像ip 地址一样不容易记忆, 于是人类发明的域名。IPFS 利用IPNS 将哈希值映射为容易记的名字。
  5. 每个节点除了存储自己需要的数据, 还存储了一张哈希表, 用来记录文件存储所在的位置。用来进行文件的查询下载。

我们在前面提到HTTP 及一些中心化服务器的缺点。那么问题来了,IPFS 是如何来解决这些缺点的?

1 . 下载速度快, 不再依赖主干网, 中心化服务器

整个IPFS 系统是一个分布式的文件存储系统,那么在下载相关数据的时候,将从多个节点同时下载,相比于HTTP 从中心服务器的下载速度要快很多,大家都用过P2P 下载(比如: 迅雷、BitTorrent), IPFS 下载过程跟这个类似。

2 . 存储空间变得非常便宜

由于IPFS 使用的是区块链技术,利用Filecoin 来激励矿工分享自己的硬盘,并且IFPS 从全网去掉了冗余存储(从整个网络空间考虑, 这将大大节省网络存储空间), 将来的IPFS 存储将会变得非常便宜(与我们现在的云盘, 各种中心化的CND 相比较)。

3 . 安全

中心化服务器目前很难抵挡DDoS 攻击, 当大量的访问请求从四面八方涌来, 中心化的服务器几乎会在一瞬间瘫痪, 做过运维的同学应该深有感触,比如每年双11,不能睡觉的除了阿里、腾讯的技术同学,还有整个银行业的小朋友。巨大的访问量随时可能造成服务器宕机。IPFS 天生就拥有抵挡这种攻击的能力。因为所有的访问将会被分散到不同的节点。甚至攻击者自己也是节点之一。某种程度上讲, IPFS 甚至能抵挡量子计算的攻击。

4 . 开放

众所周知, 比特币是一种去中心化, 匿名的数据货币, 这些特性使得比特币无法被管制, 交易无法篡改。IPFS 同样, 由于是建立在去中心化的分布式网络上的, 所以IFPS 很难被中心化管理、限制,互联网将更加开放。

上面介绍了IPFS 的基本概念, 那么IPFS 都可以用来做什么?

如果你认为仅仅是CDN, 永久的web?Are you kidding me?

IPFS 可是要

— 改变世界的。。。

— 变世界的。。。

— 世界的。。。

— 界的。。。

— 的。。。

接下来我们来看看IPFS 都可以用来做什么:

  1. 在/ipfs 和/ipns 下面挂载全球文件系统:就是说我们所有的文件都可以存到上面。
  2. 挂载个人同步的文件夹, 可以自动进行版本管理, 自动备份。也就意味着未来我们将拥有无限空间的网盘, 不用担心数据丢失,不用担心隐私泄露(非对称加密)。是不是想到了什么? 现在比较流行的某度(曾经把大家自动备份的照片全部共享了,各种艳照啊) 和企鹅网盘,国外的dropbox,跟IPFS 云盘相比,都将变得微不足道。
  3. 作为加密文件和数据共享系统。IPFS 天生视乎就具备这样的能力,文件加密,数据共享,都是小菜一碟。
  4. 作为带版本控制的软件包管理系统。
  5. 作为虚拟机的根文件系统。
  6. 作为利用管理程序,把IPFS 作为虚拟机的引导文件系统:在线操作系统。
  7. 作为数据库:应用可以直接操作IPFS的Merkle DAG数据结构,并且可以使用IPFS的版本控制、缓存。试想一下我们的数据库直接存在IPFS 的文件系统是什么体验?自动备份,永不丢失,安全加密,无限空间,高速连接,想想就美好。科技改变生活,未来会有多美好⋯
  8. 作为加密通讯平台,谁都别想窃听消息通信。
  9. 作为加密CDN, 作为web 的CDN, CDN 功能全包了。
  10. 永久web, 不存在不能访问的链接, 跟「404」说byebye。

上面的应用场景是IPFS的创始人Juan Benet在IPFS论文里面直接提到的。有兴趣的朋友可以去《IPFS白皮书》里面看一下。

实际上IPFS 能做不仅仅限于这些场景。我们所有的计算机系统几乎都是这种结构:

快速了解星际档案系统IPFS的原理与应用

IPFS为我们解决的是最后那一个部分:数据存储。它能够极大的降低数据存储的成本,提升数据下载速度。

那么凡是需要优化数据存储的地方几乎都可以使用IPFS 来提升效率!

(插点题外话)

世界发展的规律告诉我们, 凡是符合「共享的、提升效率的」,一定是未来的趋势。

从人类诞生之初,我们的世界运转就围绕「共享」这个核心运行!为什么?因为共享是我们已发现最有效的提升资源配置、提升效率的方式之一,它已经植根于我们的基因当中了。记得有人写了本书叫做《共享经济》,作者是罗宾·蔡斯,还有互联网腾飞的这几年,各种把共享经济挂在嘴边的那些人(包括我自己),都在讨论这个概念。然而事实上共享经济从人类诞生就开始了:

  • 国家就是一个最大的共享体, 我们要共享国防,共享安全,共享一切。
  • 城市是组成国家的共享体单位, 你的生存, 你的工作,无不是共享,你乘坐的地铁、飞机、公交。你使用的自来水、电力等等, 哪一样不是共享的呢?

所以「共享」是我们人类与生俱来的生存方式, 并不是互联网的东西,互联网探讨的共享经济只不过是这几年集中出现的一种创业方式而已。

(题外话结束)

IPFS Filecoin 的哲学思考

IPFS 和filecoin 的诞生极大提高了我们数据存储的共享,这就是价值。如果这是潮流,那将是不可逆的。

跟BTC 不一样,BTC 带来的问题是POW 对计算资源的高度依赖和对能源的巨大耗费。

BTC 的价值如何确定:

用马克思经济学来解释BTC 的价值是耗费的能源计算成本无差别的人类劳动;

用西方经济学来解释:BTC 的价值是供需平衡;

用时下互联网流行说法解释是:IP BTC 创造了自己的IP ,就像黄金一样,一个巨大的IP 

可是BTC 没有从根本上提升我们的效率,从BTC 的创始宣言(中本聪BTC 白皮书)里面可以看到BTC 诞生的原因:源于公平,却无关乎效率(或者可以说BTC 共享了货币?关于这一点还没有认真深入思考,也许以后会单独写文章,也欢迎大家交流)

IPFS(Filecoin)采用POW 机制不同于BTC,不需要消耗巨大的能源和依赖计算资源。从这种意义上来讲IPFS 系统从根本上提升人类的效率,是真正的共享经济,把我们对存储资源利用方式往前迈了一大步,这也是笔者对IPFS 的信心的来源。

发布者:Baldiey,转载请注明出处:https://www.uucj.com/archives/40630

本资讯不能作为投资建议。

发表评论

电子邮件地址不会被公开。 必填项已用*标注