IPNS 断开链接

IPNS breaking links

我一直在努力了解 IPNS 的工作原理。

据我所知,它允许您在 peer_id.

的命名空间下存储 ipfs 哈希

这是否意味着每个ipfs节点只能维护一个ipns hash?

此外,在 ipfs.io 解释 ipns 工作原理的文档中,它包含以下行:

Note that updating an ipns entry can "break links" because anything referencing an ipns
 entry might no longer point to the content it expected. There is no way around this
 ( you know, mutability ), therefore, ipns links should be used carefully
if you want to ensure permanence.

这里的'break links'是什么意思?

每个 ipfs 节点可以有任意数量的 IPNS 密钥对。

您有一个默认密钥对,它是在创建节点时生成的。如果您这样做 ipfs name publish <somehash>.

,您将发布到此
$ ipfs name publish /ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
Published to QmPgJooiXNDGWE6QGWhks935n8DiTP7ysH8wezAbkCrND7: /ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

此密钥对也是用于节点 ID 的密钥对。

$ ipfs id --format='<id>'
QmPgJooiXNDGWE6QGWhks935n8DiTP7ysH8wezAbkCrND7

但您可以生成任意数量的附加密钥,如下所示:

$ ipfs key gen -t rsa -s 2048 test
QmfMtYnxBH46HKE89NKTfffSckiSw3c9UD1n3rdyC5zphM

然后发布到那些命名键

$ ipfs name publish --key=test 
/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
Published to QmfMtYnxBH46HKE89NKTfffSckiSw3c9UD1n3rdyC5zphM: /ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

可能值得注意的是,这些密钥对可以复制到其他节点。拥有密钥对(包括私钥)的任何节点都可以发布到该名称。

现在,关于 link 的中断。 IPNS 名称的值可能会随时间变化。这就是它的全部意义所在。因此,只要内容仍在网络上,像 /ipfs/Qm1234/foo/bar/index.html 这样的 ipfs link 就永远不会过时,而像 /ipns/Qm5678/foo/bar/index.html 这样的 link 可以在某个时间存在,然后一旦以该名称发布了新的、不同的目录结构,它就会停止存在。