区块广播:

【IPFS相关】什么是星际命名系统 (IPNS)

IPFS原力区版主发布在 技术交流
 1383  0

【IPFS相关】什么是星际命名系统 (IPNS)

本文由IPFS原力区收集译制,版权所属原作者
什么是行星间命名系统
Vaibhav Saini

https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b

为什么需要IPNS,如何使用它以及它与DNS的比较

IPNS需要什么?它如何与今天的DNS(域名系统)相比,它与它有何不同?

我们将探讨IPFS中的路由如何工作以及IPNS如何工作?

最近,我们将与IPNS一起玩。我们将使用IPFS堆栈主持和设置我的网站的路由。

希望你从这个系列中学到很多关于IPFS的知识。让我们开始吧!

为何选择IPNS?

为了理解我们为什么需要IPNS,让我们看看我们目前如何使用IPFS访问我们的照片,视频和模因。

顺便说一句,如果你想跟随我,你可以下载我的网站:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://vaibhavsaini.com

当我将我的网站添加到IPFS时,我得到以下输出:

现在,我可以访问我的网站了

https://gateway.pinata.cloud/ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB/

但是这个链接有一些问题:

首先,它很难阅读,更不用说记住了。

其次,这是一个不可改变的联系。我所说的不可变链接是指这个链接是永久性的(由于内容寻址的性质)。如果我在我的网站中的任何地方添加一个逗号,根文件夹的CID将会更改,从而更改指向我的网站的链接。因此,每次我在网站上更改任何内容时,我都必须为每个想要访问我最新网站的人提供新链接…不酷。

这是IPNS的用武之地。

通过使用IPNS,您可以生成可变链接,其中:

将是人类可读的,易于记忆。

指向您网站的最新版本,个人资料照片,视频等。

IPNS中的名称(/ipns/链接中的哈希值)是公钥的哈希值。它与包含有关其链接的哈希的信息的记录相关联,该哈希由相应的私钥签名。可以随时签署和发布新记录。

换句话说,IPNS是一个基于公钥基础结构(或PKI)的全局命名空间,它允许我们构建信任链(因此您可以跟随公共密钥到其路由对等体),为我们提供加密和身份验证,并且仍然是实际上与其他名称服务兼容。因此,例如,我们甚至可以将DNS条目,洋葱或位地址等内容映射到IPNS地址。

IPNS不是在IPFS上创建可变地址的唯一方法。您还可以使用DNSLink(目前比IPNS快得多,并且使用更易读的名称。我们将在下面详细了解它)。其他社区成员正在探索使用区块链存储公共名称记录的方法。以下是对分布式Web命名系统的不同项目的一个很好的比较。

IPNS和DNS有一些相似之处。两者都解决了各自系统中的类似问题,前者在内容寻址系统中,后者在位置寻址系统中。

在位置寻址系统(今天的旧学校互联网)中,我们使用IP:PORT组合来访问我们的数据。因此,在位置寻址系统中,我的网站地址将是:

http://18.205.129.69:80

这既不易读也不易记。

但这总是指向此地址上托管的最新内容。

网站

好的,但它是如何工作的?

IPNS可以通过多种方式实现,但其当前实现使用分布式哈希表(DHT)。因此,只有每个URI到其相应散列的最新映射可用于解析,忘记任何历史映射。从归档的角度来看,这并不好,因为文件的先前版本可能仍然存在于IPFS存储中,但它们相应的URI映射会丢失。

让我们使用ipns节点模块来了解IPNS记录的发布方式。

上面的代码被评论为足以自我描述…你也可以在这里查看完整的项目。

如果您想深入了解IPFS中的路由如何工作,您可以阅读此主题。我想在帖子中对此进行解释,但还有太多其他有趣的东西需要探索,所以我跳过了它;)

玩IPNS

让我们通过IPNS发布我们的网站。

ipfs名称发布QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

这可能需要几分钟时间。你会得到这样的输出:

发布到Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy:/ IPF问题/ QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

现在您可以在这里获得最新的网站:

https://gateway.pinata.cloud/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

注意:IPNS在大约12小时后忘记(生存时间系统)发布的名称。您可能希望在12小时内运行cron作业以重新发布。

如果我想添加更新的CID,我将使用相同的命令:

ipfs name publish <my_new_CID>

您还可以检查链接到您的peerID的当前CID:

ipfs名称解析Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

这将返回最新的CID。

为了增加灵活性,您还可以为不同的内容和/或上下文使用不同的键(如下面的键名称vasa_blog)。例如,我可以使用一个密钥发布我的网站,使用另一个密钥发布我的博客,使用另一个密钥发布我的谈话视频。

ipfs key gen --type = rsa --size = 2048 vasa_blog

ipfs name publish --key = vasa_blog <cid_to_my_blog>

这解决了我们上面提到的问题之一(不可变链接的问题)。但链接仍然很难看。要建立链接,我们仍然需要使用DNS。还有其他系统更适合内容寻址系统,如CCN / NDN,XIA。但这些都需要升级互联网本身,如果没有大量需求,这真的很难保证。即使需求量很大,IPv6还没有完全部署:( - 如果没有FIRST建立内容寻址网络的使用,这并没有让我看到NDN / CCN大规模部署在核心中的希望。这意味着终端开发人员(web)开发人员必须能够使用内容寻址网络,在改善底层网络的实质性需求实现之前,非常有效地移动大量数据(视频等)。正如我们所看到的,通过使IPFS可用于终端开发人员,我们可以创造对这些架构的需求。

无论如何,现在,让我们使用DNS来创建可读链接。

DNSLink

DNSLink使用DNS TXT记录将域名(如vaibhavsaini.com)映射到IPFS地址。因为您可以编辑DNS记录,所以可以使用它们始终指向IPFS中对象的最新版本(请记住,如果修改对象,IPFS对象的地址会更改)。但我们不希望每次更新我们的网站时都更改TXT记录。所以我们将添加ipns链接而不是ipfs链接。此外,由于DNSLink使用DNS记录,因此它生成的名称通常也很容易键入和读取。

DNSLink地址看起来像IPNS地址,但它使用域名代替散列公钥:

/ipns/vaibhavsaini.com

就像普通的IPFS地址一样,它们可以包含指向其他文件的链接:

/ipns/vaibhavsaini.com/assets/images

当IPFS客户端或节点尝试解析该地址时,它会查找包含以下内容的TXT记录vaibhavsaini.com:

dnslink=/ipfs/ORdnslink=/ipns/

例如,如果您查找vaibhavsaini.comDNS记录,您将看到其DNSLink条目:

$ 挖掘+ noall +回答TXT vaibhavsaini.comvaibhavsaini.com。1 IN TXT“dnslink = / ipns / Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy”

基于此,这个地址:

/ipns/vaibhavsaini.com/assets/images

会得到你这个块:

/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy/assets/images

超酷!

直到现在我们将地址从复杂哈希减少为可读名称。

但是,我们可以做得更好。

这个(上面的链接)仍然非常混乱,坦率地说,如果我们希望今天的普通Web2用户以最小的努力访问我的分散Web3内容,我们不希望他们必须处理网关和ipns / ipfs前缀如果他们不必。分散的网络社区的一个主要感觉是用户体验不应该改变那么多 - 过渡应该透明但容易 - 这就是分散的网络将如何获胜。理想情况下,我们希望得到这样的结果:https://profile.vaibhavsaini.com…

通过子域发布

因此,为了使我们的地址更具可读性,我们可以创建一条A记录,将我们的子域指向IPFS对等体的IP地址,监听端口80以获取HTTP请求(例如任何公共IPFS网关,如果您是想)。

但是等等,我们可以比这更好!

因为我们不希望依赖IP地址是静态的,所以我们可以使用CNAME记录指向网关的DNS记录。这样,如果IP地址发生变化,我们仍然会指向正确的位置。遗憾的是,CNAME记录不允许其他记录(如TXT),但IPFS的优秀人员允许我们为IPFS创建DNS TXT记录_dnslink.your.domain。

当您希望提高自动设置的安全性或将对DNSLink记录的控制委派给第三方而不放弃对原始DNS区域的完全控制时,这也很有用。

我正在使用AWS Route53进行DNS设置; 你可以使用任何提供商。

设置CNAME记录

设置_dnslinkTXT记录:

以下是它最终的样子:

?

还有瞧!我们使用IPFS堆栈托管和解析我们的内容,其地址可供任何Web2用户轻松使用。

您可能会注意到地址栏上的“不安全”警告,这是因为我没有安装通配符证书;)

您可能会注意到网站需要一些时间来解决。这是因为您网站的内容仅在一个节点上。如果您将网站固定在多个节点或其他节点上,尝试访问您的网站(这意味着您的内容很受欢迎),它将更快解决:)

本文由IPFS原力区编译,原文链接:
https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b

【IPFS原力区】

价值观:价值 共建 共享 荣耀

总部位于上海,聚集基于分布式网络&存储的众多技术大咖和爱好者,深耕基于 IPFS 的商业生态建设和社区发展。

每周二举办“分布式存储网络”主题沙龙,聚集了众多技术大咖和 IPFS 爱好者,通过持续输出全面、精细、优质的IPFS咨询和技术支持,将生态中的爱好者转化为IPFS支持者和参与者,共建IPFS生态的健康发展。

  • 正序
  • 最新
沙发,很寂寞......
登录 账号发表你的看法,还没有账号?立即免费 注册
帖子数 294 获赞数 3
总部位于上海,深耕 IPFS / Filecoin 社区发展与商业生态建设。秉持价值、共建、共享、荣耀的文化理念,以分布式存储服务成为行业的基石为使命,构建和成为Web 3.0 的基础设施。
推荐节点
热帖榜
热门跟帖