IPNS

IPNS 是 IPFS 生态中的一个重要组件,全称是 InterPlanetary Name System,一个去中心化的类似域名的系统。

这里是 IPNS 的官方介绍:

内容寻址是 IPFS 找到内容的最基础的方式。但是会有一个问题是,内容 ID 其实是内容的 hash。因此如果内容本身如果发生了任何变化,那么 hash 也会变。所以如果是用内容 ID(CID)来绑定给 ENS 的话,每更新一次博客就去烧 gas 重新设置 ENS 的 Content Hash,在现有的 gas fee 情况下,就太贵了。

而 IPNS 可以解决这个问题。每一个 IPNS 类似加密货币的钱包,会有一对 public key 和 private key。public key 就是 IPNS 的对外的地址,而 private key 可以用来修改这个对外地址所对应的 CID。

因此,当你用 IPNS 来绑定给 ENS 作为 Content Hash 的时候,完整的链条是这样的:

ENS -> IPNS -> CID

其中 ENS 到 IPNS 这层绑定,会需要一次性的 gas 费。

IPNS 到 CID 这一层,是免费的。

这样我们就可以实现用 IPFS 更新内容之后,ENS 上的网站也就能够动态更新,同时只需要消耗一次性的 gas 费。


比如本站的 IPNS 地址是:

k51qzi5uqu5dgbfw2poynnynor8h9kqqoxmzdrxy4h4wnzx1x5p4n40ijtosxk

然后绑定到了 olivida.eth 这个 ENS 域名上。

在所有支持 IPFS + ENS 生态系统的应用中,你可以使用上面的 IPNS 地址或者 ENS 找到同样的内容。

olivida-eth.png