站在Web3.0 理解IPFS是什么

尽管网络上,已经有不少文章讨论IPFS,不过真正讲明白IPFS想做什么的很少,文本尝试站在未来Web3.0的高度来看看IPFS究竟用来解决什么问题。

DApp 的缺陷

对区块链有所了解的同学,知道区块链维护的是一个中立的(去中心)、共同信任、难以篡改的数据库、智能合约创造的是一个完全透明(不被干扰)的运行规则,因此可以解决信任问题。

一切看起来很美好,我们可以开发去中心化应用DApp 解决信任问题,由此也确实产生了很多的博彩类DApp游戏。

不熟悉DApp的同学可以看我另一篇文章程序员如何切入区块链去中心化应用开发.

细心的同学,也许会发现一个问题,虽然DApp的后台逻辑(智能合约)是在无中心的节点上运行的透明的规则,但是我们看到内容却来自于一台无信任的中心化服务器。

这是由当前互联网规则-超文本媒体传输协议(HTTP)决定的,简单来讲,在这个协议下,当我们在浏览器输入一个网址时,总是会先找到这个网址(域名)对应的服务器IP地址,然后请求服务器,并把服务器的响应显示在浏览器。

这种方式下文件能否访问,完全取决于服务器,服务器也许会关闭、内容获取被篡改或删除,对用户都无法保证。我自己看到好内容把网页收藏的习惯,经常会出现过一段时间再去访问的时候,页面已经不存在了。

IPFS想要做什么

IPFS - InterPlanetary File System 星际文件系统,多数人谈到IPFS都只讲到它的去中心化存储,其实IPFS想要做的远不只存储,其目标是取代HTTP,成为Web3.0时代的基础协议。我们从其官网对IPFS的定义就可以看到其雄心。

尽管Web3.0目前没有明确定义,从2014年以太坊联合创始人Gavin Wood提出分布式网络的Web3.0概念开始,业界普遍认为Web3.0 特征应该是 分布式、可信任。

在官网的有这样两个描述:

  1. IPFS is the Distributed Web
    A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.

  2. IPFS aims to replace HTTP and build a better web for all of us.

翻译过来就是: 1. IPFS是分布式Web,是点对点的超媒体协议,以构建更快、更安全、更开放的网络。 2. IPFS旨在取代HTTP,为我们构建一个更好的web。

当然,要完全取代HTTP还有一段路要走,最大的坎是怎样让‍‍主流的浏览器支持IPFS协议,‍‍现在是通过HTTP网关的方式访问IPFS网上面存在的文件。
未来IPFS能取代Http的话?就是通过网络浏览器里直接输入 ipfs://文件hash 访问内容,‍‍目前这种方式访问IPFS 必须依靠浏览器插件ipfs 伴侣, 并且这个插件的使用不广泛。

注意,这里提到的浏览器,只是沿用这个名词,Web3.0的浏览器也许不叫浏览器, 它更可能是数字钱包和浏览器的组合体,现在浏览器上发起交易也同样需要依靠钱包插件进行签名。所以这样一个形态的产品也是大家的机会,这是一个全新的超大入口级产品。

即未来期望的访问方式是这样的:
ipfs://Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu

而现在通过网关访问是这样的:
http://127.0.0.1:8080/ipfs/Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu
https://ipfs.io/ipfs/Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu

IPFS是怎么做的

IPFS是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议。

我们知道在现在的网络服务里,内容是基于位置(IP)寻址的,就是在查找内容的时候,需要先找到内容所在的服务器(根据IP),然后再在服务器上找对应的内容。
而在IPFS的网络里,是根据内容寻址,每一个‍‍上传到IPFS上面去的文件、文件夹,都是以Qm为开头字母的哈希值,无需知道文件存储在哪里,通过哈希值就能够找到这个文件,这种方式叫内容寻址。

工作原理

在IPFS系统中,内容会分块存放(如果内容很小就会直接存在DHT中),并分散存储在IPFS网络中的节点上(不过目前的IPFS实现,一个节点会完整保存内容的所有区块)。系统会给内容的每一个块计算哈希值,然后把所有块的哈希值拼凑起来,再计算一次哈希值,从而得到最终的哈希值。同时每个节点会维护一张DHT(分布式哈希表),包含数据块与目标节点的映射关系。

在IPFS中是通过哈希去请求文件的,它就会使用这个分布式哈希表找到文件所在的节点,取回文件根据哈希重新组合文件(同样也会验证文件)。

IPFS的特点

根据前面的原理,我们可以推倒出IPFS的几个特点:

  1. 当我们知道一个文件的哈希值之后,可以确保文件不被修改, 即可以确保访问的文件是没有被篡改的。因为根据哈希的特点,哪怕源文件有一丁点的更改,对应的哈希值也会完全不同。

  2. (理论上) 如果IPFS得以普及,节点数达到一定规模,内容将永久保存,就算部分节点离线,也不会影响文件的读取,不像现在的收藏会失效。

  3. 由于IPFS是一个统一的网络,只要文件在网络中被存储过,除了必要的冗余备份,文件不会被重复存储,对比现有互联网,信息孤岛,各中心间不共享数据,数据不的不重复存储,IPFS一定意义上节约了空间,使得整个网络带宽消耗更低,网络更加高效。

  4. 相对于中心化存储的容易遭受DDOS攻击,IPFS采用分布式存储网络,文件被存储在不同的网络节点,天然避免了DDOS攻击,同时一个文件可以同时从多个节点同时下载,通信的效率也会更高。

IPNS

在IPFS中,一个文件的哈希值完全取决于其内容,修改它的内容,其相应的Hash值也会发生改变。这样有一个优点是保证文件的不可篡改,提高数据的安全性。
但同时我们在开发应用(如网站)时,经常需要更新内容发布新版本,如果每次都让用户每次在浏览器中输入不同的IPFS地址来访问更新后内容的网页,这个体验肯定是无法接受的。

IPFS提供了一个解决方案IPNS(Inter-Planetary Naming System),他提供了一个被私钥限定的IPNS哈希ID(通常是PeerID),其用来指向具体IPFS文件哈希,当有新的内容更新时,就可以更新IPNS哈希ID的指向。

为了方便大家理解,做一个类比,和DNS类似, DNS记录了域名指向的IP地址, 如果服务器更改,我们可以更改DNS域名指向,保证域名指向最新的服务器。
IPNS则是用一个哈希ID指向一个真实内容文件的Hash,文件更新这更改哈希ID的指向,当然更新指向需要有哈希ID对应的私钥。

通过IPNS访问文件的方式如下:

利用插件访问:ipns://QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva
利用网关访问: http://127.0.0.1:8080/ipns/QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva

IPNS同样兼容DNS,使用DNS TXT记录域名对应的IPNS哈希ID,就可以域名来替换IPNS哈希ID来进行访问。从而实现更容易读写和记忆。

例如使用以下方式简化访问:
ipns://ipfs.io
https://ipfs.io/ipns/ipfs.io/

IPFS/IPNS 如果使用,将在后面的文章进一步介绍。

小结

IPFS是一项非常激动人心的技术,尽管它仍在发展的早期(区块链也是),还有很多问题需要我们一起解决,如NAT穿透问题,浏览器支持问题,内容存储激励问题,存储数据安全与隐私保护问题。
但是通过 IPFS + 区块链将真正创建Web3.0时代的应用,这是一个完全可信的、自运转(不停机)的应用,它可以做什么我不知道,我对未来充满期待。

欢迎来知识星球提问,星球内已经聚集了300多位区块链技术爱好者。
深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容