欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IPFS-星际命名系统(IPNS、DNSLink)

程序员文章站 2022-07-12 17:13:03
...

什么是IPNS

IPFS学习-IPNS
参考URL: https://www.cnblogs.com/cbkj-xd/p/12059887.html

IPNS全称是Inter-Planetary Naming Service,星际命名系统。这个系统可以把我们现在访问互联网使用的URL地址映射成IPFS系统中的一串哈希值。

星际名称系统(IPNS)是一个创建个更新可变的链接到IPFS内容的系统,由于对象在IPFS中是内容寻址的,他们的内容变化将导致地址随之变化。对于多变的事物是有用的。但是很难获取某些内容的最新版本。

**在IPNS中名字是被哈希的公钥。**它与一条记录相关联,该记录包含有关其链接的哈希的信息,该信息由相应的私钥签名。新的记录可以在任何时候被签名与发布。

查看IPNS地址,使用了/ipns/前缀:
/ipns/QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd

什么是DNSLink

官网 https://github.com/ipfs/go-dnslink
DNSlink
https://www.cnblogs.com/cbkj-xd/p/12059685.html

DNS链接使用DNS TXT记录映射域名(如ipfs.io)到一个IPFS地址。因为你可以编辑自己的DNS记录,可以使他们总是指向最新版本的IPFS中的对象(如果修改了IPFS中的对象则IPFS中的对象地址也会改变)。由于DNS链接使用DNS记录,所以可以设计名字/路径/(子)域/任何容易分类,阅读和记的名字。

一个DNS链接地址看起来像一个IPNS地址,但是DNS链接使用域名代替了被哈希的公钥:

/ipns/proofs.filecoin.io

如何使用DNSLink

参考官网 https://github.com/ipfs/go-dnslink

当一个IPFS客户端或者节点尝试解析一个地址,将会寻找前缀为dnslink=的TXT记录。剩下的可以是/ipfs/链接或者是/ipns/,或者是链接到其他的DNSLink。

dnslink=/ipfs/<具体内容的CID>

例如,_dnslink.docs.ipfs.io的DNS记录继续了解DNS链接实体:

$ dig +noall +answer TXT _dnslink.docs.ipfs.io
_dnslink.docs.ipfs.io.  34  IN  TXT "dnslink=/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya"

基于这个地址:

/ipns/docs.ipfs.io/introduction/

可以获取这个区块:
/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya/introduction/

go-dnslink项目

官网 https://github.com/ipfs/go-dnslink

go包dnslink 实现DNS链接解析器。DNSLink是在DNS自身中设置可遍历链路的基本标准。

dnslink是一个路径链接在DNS txt 记录中,如下所示:

DNSLink=/IPFS/QMR7TiYSN6VFHCEJBEnZYTAFAFH735PJHFEMDVYCJ9JAPY
> dig TXT ipfs.io
ipfs.io.  120   IN  TXT  dnslink=/ipfs/QmR7tiySn6vFHcEjBeZNtYGAFh735PJHfEMdVEycj9jAPy

这个项目可以用作库,也可以作为命令行工具。
安装

go get github.com/ipfs/go-dnslink
  • 作为库使用
import (
  log
  fmt

  dnslink "github.com/ipfs/go-dnslink"
)

func main() {
  link, err := dnslink.Resolve("ipfs.io")
  if err != nil {
    log.Fatal(err)
  }

  fmt.Println(link) // string path
}
  • 作为命令行使用
> dnslink ipfs.io
/ipfs/QmR7tiySn6vFHcEjBeZNtYGAFh735PJHfEMdVEycj9jAPy

总结: 可以使用 dnslink 解析dns txt记录。

参考

深入了解IPFS(3/6):什么是IPNS?
参考URL: https://www.jinse.com/blockchain/449574.html

相关标签: 分布式存储