1、什么是【IPFS】是什么?? A理论解释 【IPFS】中文名叫做【星际文件系统】(全拼:InterPlanetary File System)。是一个面向全球的、点对点的分布式版本文件系统
顺晟科技
2021-06-16 10:46:06
373
虽然网上有很多关于IPFS的文章,但真正了解IPFS想做什么的文章很少。本文试图从未来网络3.0的角度来看IPFS用来解决什么问题
DApp的缺陷
了解区块链的同学都知道,区块链保持着一种中立(分散)、共同的信任,难以篡改数据库,而智能契约创建了一个完全透明(不受干扰)的操作规则,因此可以解决信任问题。
一切看起来都很美。我们可以开发分散的应用程序DApp来解决信任问题,这产生了大量的投注DApp游戏。
不熟悉DApp的学生可以阅读另一篇关于程序员如何切入区块链和分散应用开发的文章。
细心的学生可能会发现一个问题。虽然DApp的后台逻辑(智能契约)是非中心节点上运行的透明规则,但我们可以看到内容来自不受信任的集中式服务器。
这是由当前的互联网规则——超文本媒体传输协议(HTTP)决定的。简单来说,在这个协议下,当我们在浏览器中输入一个网址时,我们总是会找到该网址(域名)对应的服务器的IP地址,然后请求服务器,并在浏览器中显示服务器的响应。
文件能否以这种方式访问完全取决于服务器。服务器可能关闭,内容获取可能被篡改或删除,无法保证用户。看到好的内容就有收集网页的习惯。当我再次访问它们一段时间后,这些页面就不再存在了。
IPFS想做什么
IPFS-星际文件系统星际文件系统。大多数人只谈论IPFS的分散存储。事实上,ipfs想要做的不仅仅是存储,它的目标是取代HTTP,成为Web3.0时代的基本协议。我们可以从它在官网上对IPFS的定义看出它的野心。
虽然目前还没有明确定义Web3.0,但是自从2014年Ethereum的联合创始人Gavin Wood提出分布式网络的Web3.0概念后,业界普遍认为Web3.0的特性应该是分布式的,值得信赖的。
官网有两个描述:
IPFS是分布式网络
一种对等超媒体协议,使网络更快、更安全、更开放。
IPFS的目标是取代超文本传输协议,为我们所有人建立一个更好的网络。
翻译如下:1。IPFS是一个分布式网络和点对点超媒体协议,以建立一个更快、更安全和更开放的网络。2.IPFS的目标是取代超文本传输协议,为我们建立一个更好的网络。
当然,要完全取代HTTP还有很长的路要走。更大的障碍是如何让主流浏览器支持IPFS协议。现在,IPFS网络上的文件是通过HTTP网关访问的。
IPFS未来是否能取代Http?即通过在web浏览器中直接输入IPFS://的文件哈希来访问内容。目前这种方式访问ipfs依赖于浏览器插件ipfs伴侣,这种插件应用并不广泛。
注意这里说的浏览器只用到了这个名词。Web3.0的浏览器可能不叫浏览器,但更有可能是数字钱包和浏览器的组合。现在浏览器上发起的交易也需要钱包插件签名。所以,这种产品也是每个人的机会。是全新的超大型入门级产品。
也就是未来预期的接入方式如下:
ipfs ://qme 2 qny 61 ylj 9 hzdm 4 vn6 dekmksycgsem 33k 4 ehcgkavu
现在通过网关访问是这样的:
http://127 . 0 . 0 . 1:8080/ipfs/qme 2 qny 61 ylj 9 hzdm 4 vn6 dekkcmksycgsem 33k 4 ehcgaavu
https://ipfs . io/ipfs/qme 2 qny 61 ylj 9 hzdm 4 vn6 dekkcmksycgsem 33k 4 ehcgaavu
IPFS是怎么做到的
IPFS是一个内容可寻址、版本化、点对点超媒体分布式存储和传输协议。
我们知道在目前的网络服务中,内容是基于位置(IP)寻址的,也就是在搜索内容的时候,我们需要找到内容所在的服务器(根据IP),然后在服务器上找到对应的内容。
在IPFS网络中,寻址基于内容。上传到IPFS的每个文件和文件夹都是以Qm为首字母的哈希值。您可以通过哈希值找到该文件,而不知道该文件存储在哪里。这种方法称为内容寻址。
操作原理
在IPFS系统中,内容将按块存储(如果内容很小,将直接存储在分布式哈希表中),并分散存储在IPFS网络的节点中(但是,在IPFS的当前实现中,一个节点将完全存储内容的所有块)。系统会为内容的每个块计算哈希值,然后将所有块的哈希值拼凑在一起,然后再次计算哈希值,从而得到最终的哈希值。同时,每个节点将维护一个分布式哈希表(DHT),其中包含数据块和目标节点之间的映射关系。
在IPFS,文件是通过哈希请求的,它将使用这个分布式哈希表来找到文件所在的节点,检索文件并根据哈希重新组装文件(它还将验证文件)。
IPFS的特色
根据前面的原理,我们可以推断出IPFS的几个特征:
当我们知道一个文件的哈希值时,就可以保证文件不被修改,即被访问的文件不被篡改。因为根据hash的特点,即使源文件稍有改动,对应的hash值也会完全不同。
(理论上)如果推广IPFS,节点数量达到一定规模,内容会保存,即使部分节点离线,也不会影响文件的读取,不像现在的收藏,是无效的。
因为IPFS是一个统一的网络,只要文件已经存储在网络中,除了必要的冗余备份外,文件不会重复存储。与现有互联网相比,信息孤岛、数据不在中心间共享、数据不重复存储。IPFS在一定程度上节省了空间,使得整个网络的带宽消耗更低,网络效率更高。
与易受DDOS攻击的集中式存储相比,IPFS采用分布式存储网络,文件存储在不同的网络节点,自然避免了DDOS攻击。同时,一个文件可以同时从多个节点下载,通信效率会更高。
网络
在IPFS,文件的哈希值完全取决于其内容,如果其内容被修改,其相应的哈希值也会改变。这样做的好处是保证文件不被篡改,提高数据的安全性。
但与此同时,我们在开发应用程序(比如网站)时,往往需要更新内容,发布新版本。如果我们让用户每次在浏览器中输入不同的IPFS地址来访问更新的内容网页,这种体验肯定是不可接受的。
IPFS提供了一个解决方案IPNS(行星间命名系统),它提供了一个IPNS哈希id(通常是PeerID),由一个私钥限制,用于指向一个特定的IPFS文件哈希。当更新新内容时,可以更新ipns散列id的指向。
为了大家方便,打个比方。与DNS类似,DNS记录的是域名所指向的IP地址。如果服务器发生变化,我们可以改变DNS域名指向,确保域名指向最新的服务器。
IPNS是一个散列,它使用一个散列标识来指向一个真实的内容文件。文件更新改变散列标识指向。当然,更新指向需要一个对应于散列标识的私钥。
通过IPNS访问文件的方式如下:
使用插件访问:ipns ://qmym 36s 4 ut2 tiuffvuabsvx8vmdu 7 xuiveswutva
使用网关访问:http://127 . 0 . 0 . 1:8080/ipns/qmym 36s 4 ut 2 tiuvvuabsvx8vmdu 7 xukuiveswutva
IPNS也兼容域名系统。如果域名解析系统用来记录域名对应的IPNS散列标识,域名可以代替IPNS散列标识进行访问。从而实现轻松读写记忆。
例如,通过以下方式简化访问:
ipns://ipfs.io
https://ipfs.io/ipns/ipfs.io/
如果使用IPFS/IPNS,将在下一篇文章中进一步介绍。
总结
IPFS是一项非常激动人心的技术,虽然还处于发展的初级阶段(区块链也是),但是还有很多问题需要共同解决,比如NAT渗透、浏览器支持、内容存储激励、存储数据安全、隐私保护等。
然而,IPFS区块链将真正在网络3.0时代创建一个应用程序,这是一个完全可信的、自动运行(不间断)的应用程序。我不知道它能做什么,但我对未来充满期待。