ENS完美解决在IPFS中访问恒定链接地址的问题

2020-08-24 16:36:42

在IPFS中如何让用户访问恒定链接的三种方案

  现在的互联网用户,访问一个网页或者网站,都是通过固定URL的形式(比如www.baidu.com),这个地址是恒定不变的,只要服务器上存储的内容没有被删除,就一直有效,即便是网页内容发生变化,都不影响用户的正常访问。

  而IPFS中,对内容的寻址是用哈希值的方式,这是所有基于IPFS网站的核心。比如某个网站的主页它的哈希值为:QmZQV5YXKakh7aKqSk3MVARNu8eaxws9KNc6EeStQTYt5w

  如果网站主页的内容被改了,哪怕只有细微的改动,主页的哈希值就会改变,比如改动后主页的哈希值为:QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8e


IPFS恒定链接地址


  如果用户想把这个主页与他人分享,就不可能仅仅把哈希值告诉他人,因为一旦主页被改动了,哈希值就会变动。因此,用户得把一个恒定不变的链接分享给他人,这样即便主页内容发生变化,哈希值变了,但其他人访问这个链接时,仍然能访问这个主页。


  在这种情况下,我们该如何创建一个恒定的链接呢?有下面几种方法:


  1、 IPNS:恒定的哈希值

  IPNS链接使用公钥加密的方式为IPFS的哈希值产生一个哈希值。IPNS产生的哈希值和IPFS的哈希值看上去很类似。

  IPNS的哈希值实际上是一个公钥的哈希值。公钥的持有者可用该公钥给一段包含哈希值的信息签名,这个哈希值所指向的就是最新文件(如上例中最新的网站主页)。

  这意味着,如果我共享了一个IPNS哈希值,用户通过这个恒定的哈希值就能访问一个文件的哈希值,无论文件如何更新,都不会影响用户的访问。

  当然,这个方案也有缺点----IPNS哈希值也是一串字符,不方便用户记忆和阅读。因此下面一种方案出笼了。


  2 、DNSLink:链接DNS和IPFS

  DNSLink就像传统域名和IPFS生态系统之间的一座桥梁,通俗地说,它将一个IPFS哈希值和一条DNS记录挂钩。

  当IPFS直接访问IPNS哈希值发现该哈希值无效或丢失时,IPFS就会搜索DNSLink,在DNSLink中找是否存在这条记录。

  但这个方案的问题在于DNSLink是一个中心化的服务器,在去中心化的网站使用一个中心化的服务器总归不是太完美。

  于是我们有了第三种方案。


  3 、ENS:区块链解决方案

  在前面两种方案中,IPNS做到了去中心化,但不方便记忆和阅读,DNSLink方便记忆和阅读但却不是去中心化的。

  ENS完美解决了这两个问题:既去中心化又方便记忆可读。

  ENS是以太坊域名服务(Ethereum Name Service)的简称,这是以太坊中一种去中心化的域名方案。使用这个方案我们能把一个域名和哈希值关联起来。这里的域名就和我们访问传统互联网看到的域名一样,只不过它的后缀不是“.com”而是“.eth”。

  为了访问ENS域名,用户必须用Brave浏览器或包含MetaMask插件的浏览器。


  上面三种方案就是我们在IPFS中如何让用户访问恒定链接的方法。


最新推荐