如何在IPFS中使用恒定的链接地址?

2021-11-26 区块链达人

在IPFS中,对内容的寻址是用哈希值的方式,这是所有基于IPFS网站的核心。

比如某个网站的主页它的哈希值为:QmZQV5YXKakh7aKqSk3MVARNu8eaxws9KNc6EeStQTYt5w

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

比如改动后主页的哈希值为:QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8e

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

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

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插件的浏览器。

作者 : FIL社区