Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

站在 Web3.0 理解 IPFS 是什么

AASSBB
153 0 0
尽管网络上,已经有不少文章讨论 IPFS,不过真正讲明白 IPFS 想做什么的很少,文本尝试站在未来 Web3.0 的高度来看看 IPFS 究竟用来解决什么问题。
; G6 T2 _" I2 q8 N/ aDApp 的缺陷
/ t7 O$ z, `+ _' J, v$ k对区块链有所了解的同学,知道区块链维护的是一个中立的(去中心)、共同信任、难以篡改的数据库、智能合约创造的是一个完全透明(不被干扰)的运行规则,因此可以解决信任问题。8 |* |3 v5 q( P: {6 {* J! e
一切看起来很美好,我们可以开发去中心化应用 DApp 解决信任问题,由此也确实产生了很多的博彩类 DApp 游戏。
  J) g4 S6 e; A$ y# ]9 t4 o细心的同学,也许会发现一个问题,虽然 DApp 的后台逻辑(智能合约)是在无中心的节点上运行的透明的规则,但是我们看到内容却来自于一台无信任的中心化服务器。
9 ]: t0 a, D3 O9 W# Z这是由当前互联网规则 - 超文本媒体传输协议(HTTP)决定的,简单来讲,在这个协议下,当我们在浏览器输入一个网址时,总是会先找到这个网址(域名)对应的服务器 IP 地址,然后请求服务器,并把服务器的响应显示在浏览器。
2 D& P: |) y% w8 D6 C这种方式下文件能否访问,完全取决于服务器,服务器也许会关闭、内容获取被篡改或删除,对用户都无法保证。我自己看到好内容把网页收藏的习惯,经常会出现过一段时间再去访问的时候,页面已经不存在了。5 A7 J2 B# X- ^# O* S3 g
IPFS 想要做什么5 Q: ?* m6 f5 V1 J# K% r
IPFS - InterPlanetary File System 星际文件系统,多数人谈到 IPFS 都只讲到它的去中心化存储,其实 IPFS 想要做的远不只存储,其目标是取代 HTTP,成为 Web3.0 时代的基础协议。我们从其官网对 IPFS 的定义就可以看到其雄心。
4 x2 Y/ N% x3 K0 r- ?" ~) h) n: s3 @7 v4 H& I9 f' j
尽管 Web3.0 目前没有明确定义,从 2014 年以太坊联合创始人 Gavin Wood 提出分布式网络的 Web3.0 概念开始,业界普遍认为 Web3.0 特征应该是 分布式、可信任。
: V, ~, R' A3 i
, A- F0 |# G3 Q& P
在官网的有这样两个描述:: I1 }/ }% Z) K0 N% V, t: ~  l3 [* Z
IPFS is the Distributed Web+ W6 Z7 F+ G5 @& u1 h- i
A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.
1 @1 k: V3 o3 N* i3 yIPFS aims to replace HTTP and build a better web for all of us./ s  m1 }& C1 \0 u7 q- T8 W
翻译过来就是: 1. IPFS 是分布式 Web,是点对点的超媒体协议,以构建更快、更安全、更开放的网络。 2. IPFS 旨在取代 HTTP,为我们构建一个更好的 web。
) o# O5 {* g! E% d当然,要完全取代 HTTP 还有一段路要走,最大的坎是怎样让??主流的浏览器支持 IPFS 协议,??现在是通过 HTTP 网关的方式访问 IPFS 网上面存在的文件。
- A! V5 x1 Z  b$ r未来 IPFS 能取代 Http 的话?就是通过网络浏览器里直接输入 ipfs://文件hash 访问内容,??目前这种方式访问 IPFS 必须依靠浏览器插件 ipfs 伴侣, 并且这个插件的使用不广泛。
5 z4 ]* d9 V5 {% c* `5 M# ^! Y
- c- v( [" \# v* p7 R/ {注意,这里提到的浏览器,只是沿用这个名词,Web3.0 的浏览器也许不叫浏览器, 它更可能是数字钱包和浏览器的组合体,现在浏览器上发起交易也同样需要依靠钱包插件进行签名。所以这样一个形态的产品也是大家的机会,这是一个全新的超大入口级产品。* e. h& r3 D, L, A$ _' g
" J$ |" `8 x$ f! j) M
即未来期望的访问方式是这样的:
& A( W. s: m+ X8 g1 l$ ?( o- z8 S' R& R; Iipfs://Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu/ m+ a5 \% O6 \* A  c7 X, ^
而现在通过网关访问是这样的:
7 |! A/ [8 j8 P+ ohttp://127.0.0.1:8080/ipfs/Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu
3 r: e! I/ C+ }4 ]7 Z9 m8 Y: ^https://ipfs.io/ipfs/Qme2qNy61yLj9hzDm4VN6HDEkCmksycgSEM33k4eHCgaVu
. U. N0 r9 z, YIPFS 是怎么做的
  [. z8 _4 v* Y; iIPFS 是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议。+ a1 l6 A6 C% z  S/ Z
我们知道在现在的网络服务里,内容是基于位置(IP)寻址的,就是在查找内容的时候,需要先找到内容所在的服务器(根据 IP),然后再在服务器上找对应的内容。! ~7 h: |% a8 P* B( d" \7 X9 ]9 X5 i1 g# d
而在 IPFS 的网络里,是根据内容寻址,每一个??上传到 IPFS 上面去的文件、文件夹,都是以 Qm 为开头字母的哈希值,无需知道文件存储在哪里,通过哈希值就能够找到这个文件,这种方式叫内容寻址。2 X, V* {7 L$ ~& g, K
工作原理% ?% t( Y$ W7 p6 H& Z1 T- A6 O9 ?% [
在 IPFS 系统中,内容会分块存放(如果内容很小就会直接存在 DHT 中),并分散存储在 IPFS 网络中的节点上(不过目前的 IPFS 实现,一个节点会完整保存内容的所有区块)。系统会给内容的每一个块计算哈希值,然后把所有块的哈希值拼凑起来,再计算一次哈希值,从而得到最终的哈希值。同时每个节点会维护一张 DHT(分布式哈希表),包含数据块与目标节点的映射关系。, X0 X6 ?0 l% z7 s
在 IPFS 中是通过哈希去请求文件的,它就会使用这个分布式哈希表找到文件所在的节点,取回文件根据哈希重新组合文件(同样也会验证文件)。& v. p; y1 E6 a% m4 N$ }4 I$ `
IPFS 的特点8 l$ D6 Y3 F9 J: X/ A+ g7 p
根据前面的原理,我们可以推倒出 IPFS 的几个特点:/ }$ T8 @: D+ J2 I4 F* X" i' p$ d
当我们知道一个文件的哈希值之后,可以确保文件不被修改, 即可以确保访问的文件是没有被篡改的。因为根据哈希的特点,哪怕源文件有一丁点的更改,对应的哈希值也会完全不同。5 d1 Z/ J" {7 f# k6 N" q1 h/ W
(理论上) 如果 IPFS 得以普及,节点数达到一定规模,内容将永久保存,就算部分节点离线,也不会影响文件的读取,不像现在的收藏会失效。
. _! H  p; q# X- S6 j3 i* I) P由于 IPFS 是一个统一的网络,只要文件在网络中被存储过,除了必要的冗余备份,文件不会被重复存储,对比现有互联网,信息孤岛,各中心间不共享数据,数据不的不重复存储,IPFS 一定意义上节约了空间,使得整个网络带宽消耗更低,网络更加高效。
# X. H" J8 K$ s  ]+ u0 N- E% D4 ^4 s相对于中心化存储的容易遭受 DDOS 攻击,IPFS 采用分布式存储网络,文件被存储在不同的网络节点,天然避免了 DDOS 攻击,同时一个文件可以同时从多个节点同时下载,通信的效率也会更高。
/ a) ^0 X  D2 _0 t5 K, NIPNS
. K2 o% y2 h8 w" p+ T在 IPFS 中,一个文件的哈希值完全取决于其内容,修改它的内容,其相应的 Hash 值也会发生改变。这样有一个优点是保证文件的不可篡改,提高数据的安全性。9 e3 e: p% r! a6 g; B, z% w  \8 v7 K
但同时我们在开发应用(如网站)时,经常需要更新内容发布新版本,如果每次都让用户每次在浏览器中输入不同的 IPFS 地址来访问更新后内容的网页,这个体验肯定是无法接受的。! c! T' F1 h! ?) Q( o& {
IPFS 提供了一个解决方案 IPNS (Inter-Planetary Naming System),他提供了一个被私钥限定的 IPNS 哈希 ID(通常是 PeerID),其用来指向具体 IPFS 文件哈希,当有新的内容更新时,就可以更新 IPNS 哈希 ID 的指向。
9 a2 l. D: X* _1 P/ x' k6 X为了方便大家理解,做一个类比,和 DNS 类似, DNS 记录了域名指向的 IP 地址, 如果服务器更改,我们可以更改 DNS 域名指向,保证域名指向最新的服务器。
0 G6 i6 q! @8 ^$ N- cIPNS 则是用一个哈希 ID 指向一个真实内容文件的 Hash,文件更新这更改哈希 ID 的指向,当然更新指向需要有哈希 ID 对应的私钥。7 D( O) f! m" {# e, T& q" |
通过 IPNS 访问文件的方式如下:
, r; c, s  J; O  l利用插件访问:ipns://QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva* \1 w  N7 B2 c
利用网关访问: http://127.0.0.1:8080/ipns/QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva
- C, E' i5 z4 B; F' ^$ @1 \3 e* HIPNS 同样兼容 DNS,使用 DNS TXT 记录域名对应的 IPNS 哈希 ID,就可以域名来替换 IPNS 哈希 ID 来进行访问。从而实现更容易读写和记忆。6 H! e9 n0 {7 y0 d$ H3 P
例如使用以下方式简化访问:5 ]2 r) n: Z# b# k
ipns://ipfs.io
7 a# b7 i  m7 ~: ~https://ipfs.io/ipns/ipfs.io/
* O7 s; N, ]5 h3 OIPFS/IPNS 如果使用,将在后面的文章进一步介绍。
# B% v. r* F0 x( t6 n小结
) }8 P9 |8 m' u' b8 Y$ X* |+ |7 XIPFS 是一项非常激动人心的技术,尽管它仍在发展的早期(区块链也是),还有很多问题需要我们一起解决,如 NAT 穿透问题,浏览器支持问题,内容存储激励问题,存储数据安全与隐私保护问题。
8 U  U/ X; ~& E5 P+ [8 S/ M/ l1 [$ b/ U但是通过 IPFS + 区块链将真正创建 Web3.0 时代的应用,这是一个完全可信的、自运转(不停机)的应用,它可以做什么我不知道,我对未来充满期待。
0 R7 E1 j0 Y9 t" \4 E' E( T转自深入浅出区块链
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

AASSBB 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    1