深入了解IPFS(3/6):什么是IPNS?

[复制链接]
9789 |0
发表于 2019-8-5 15:08:14 | 显示全部楼层 |阅读模式

在这一部分中,我们将深入探讨IPFS的命名系统——星际命名系统(IPNS)。我们将探索:IPNS需要什么?它如何与今天的DNS(域名系统)相比,有何不同?(本文由IPFS中国社区编译)我们将探讨IPFS中的路由如何工作以及IPNS如何工作?最近,我们将探索IPNS。我们将使用IPFS堆栈主持和设置我的网站的路由。希望你从这个系列中学到很多关于IPFS的知识。让我们开始吧!为何选择IPNS?为了理解我们为什么需要IPNS,让我们看看我们目前如何使用IPFS访问我们的照片、视频和模因。顺便说一句,如果你想跟随我,你可以下载我的网站:wget --mirror --convert-links --adjust-extension --page-requisites --no-parenthttps://vaibhavsaini.com当我将我的网站添加到IPFS时,我得到以下输出:

将我的网站文件夹添加到IPFS现在,我可以访问我的网站了https://gateway.pinata.cloud/ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB/但是这个链接有一些问题:首先,它很难阅读,更不用说记住了。其次,这是一个不可改变的联系。我所说的不可变链接是指这个链接是永久性的(由于内容寻址的性质)。如果我在我的网站中的任何地方添加一个逗号,根文件夹的CID将会更改,从而更改指向我的网站的链接。因此,每次我在网站上更改任何内容时,我都必须为每个想要访问我最新网站的人提供新链接...不酷。这是IPNS的用武之地。通过使用IPNS,您可以生成可变链接,其中:将是人类可读的,易于记忆。指向您网站的最新版本、个人资料照片、视频等。IPNS中的名称(/ipns/链接中的哈希值)是公钥的哈希值。它与包含有关其链接的哈希的信息的记录相关联,该哈希由相应的私钥签名。可以随时签署和发布新记录。换句话说,IPNS是一个基于公钥基础结构(或PKI)的全局命名系统,它允许我们构建信任链(因此您可以跟随公共密钥到其路由对等体),为我们提供加密和身份验证,并且仍然是实际上与其他名称服务兼容。例如,我们甚至可以将DNS条目、onion或位地址等内容映射到IPNS地址。IPNS不是在IPFS上创建可变地址的唯一方法。您还可以使用DNSLink(目前比IPNS快得多,并且使用更易读的名称。我们将在下面详细了解它)。其他社区成员正在探索使用区块链存储公共名称记录的方法。以下是对分布式Web命名系统的不同项目的一个很好的比较。IPNS和DNS有一些相似之处。两者都解决了各自系统中的类似问题,前者在内容寻址系统中,后者在位置寻址系统中。在位置寻址系统(今天的老式互联网)中,我们使用IP:PORT组合来访问我们的数据。因此,在位置寻址系统中,我的网站地址将是:http://18.205.129.69:80这既不易读也不易记。但这总是指向此地址上托管的最新内容。使用DNS,我们将此IP与域名相关联,因此您可以访问vaibhavsaini.com上的网站。IPNS是如何工作的?IPNS可以通过多种方式实现,但其当前实现使用分布式哈希表(DHT)。因此,只有每个URI到其相应散列的最新映射可用于解析,忘记任何历史映射。从归档的角度来看,这并不好,因为文件的先前版本可能仍然存在于IPFS存储中,但它们相应的URI映射会丢失。让我们使用ipns节点模块来了解IPNS记录的发布方式。

上面的代码被评论为足以自我描述......你也可以在这里查看完整的项目。
探索IPNS让我们通过IPNS发布我们的网站。ipfs名称发布QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB这可能需要几分钟时间。你会得到这样的输出:发布到Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy:/ ipfs / QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB现在您可以在这里获得最新的网站:https://gateway.pinata.cloud/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy注意:IPNS在大约12小时后忘记(系统生存时间)已发布的名称。您可能需要运行cron作业以在12小时内重新发布。如果我想添加更新的CID,我将使用相同的命令:ipfs name publish 您还可以检查链接到您的peerID的当前CID:ipfs名称解析Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy这将返回最新的CID。为了增加灵活性,您还可以为不同的内容和/或上下文使用不同的键(如下面的键名称vasa_blog)。例如,我可以使用一个密钥发布我的网站,使用另一个密钥发布我的博客,使用另一个密钥发布我的谈话视频。ipfs key gen --type = rsa --size = 2048 vasa_blog ipfs name publish --key = vasa_blog 这解决了我们上面提到的问题之一(不可变链接的问题)。但链接仍然很难看。要建立链接,我们仍然需要使用DNS。还有其他系统更适合内容寻址系统,如CCN/NDN,XIA。但这些都需要升级互联网本身,如果没有大量需求,这真的很难保证。即使需求量很大,IPv6还没有完全部署:( - 如果没有FIRST建立内容寻址网络的使用,这并没有让我看到NDN / CCN大规模部署在核心中的希望。这意味着终端开发人员(web开发人员)必须能够使用内容寻址网络,在改善底层网络的实质性需求实现之前,非常有效地移动大量数据(视频等)。正如我们所看到的,通过使IPFS可用于终端开发人员,我们可以创造对这些架构的需求。无论如何,现在,让我们使用DNS来创建可读链接。DNSLinkDNSLink使用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条目:
dig +noall +answer TXT vaibhavsaini.comvaibhavsaini.com。1 IN TXT“dnslink=/ipns/ qmb1vvr5xjpxhctm3kf3i88glfxsetjcxl7pqjrvixsy”基于此,这个地址:/ipns/vaibhavsaini.com/assets/images会得到你这个块:/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy/assets/images超酷!直到现在我们将地址从复杂哈希减少为可读名称。但是,我们可以做得更好。这个(上面的链接)仍然非常混乱,坦率地说,如果我们希望今天的普通Web2用户以最小的努力访问我的分散Web3内容,如果不必要的话我们不希望他们必须处理网关和ipns / ipfs前缀。分散的网络社区的重要感受是,用户体验不应该发生太大的变化,转换应该是透明的,这很容易,这就是分散的网络将如何获胜的原因。理想情况下,我们希望得到这样的结果:https://profile.vaibhavsaini.com......
通过子域发布因此,为了使我们的地址更具可读性,我们可以创建一条A记录,将我们的子域指向IPFS对等点的IP地址,侦听端口80以获取HTTP请求(例如任何公共IPFS网关,或者您自己的IPFS网关)。但是等等,我们可以比这更好!因为我们不希望依赖IP地址是静态的,所以我们可以使用CNAME记录指向网关的DNS记录。这样,如果IP地址发生变化,我们仍然会指向正确的位置。遗憾的是,CNAME记录不允许其他记录(如TXT),但IPFS的优秀人员允许我们为IPFS创建DNS TXT记录_dnslink.your.domain。当您希望提高自动设置的安全性或将对DNSLink记录的控制委派给第三方而不放弃对原始DNS区域的完全控制时,这也很有用。我正在使用AWS Route53进行DNS设置,你可以使用任何提供商。设置CNAME记录

设置_dnslinkTXT记录:

以下是它最终的样子:

还有!我们使用IPFS堆栈托管和解析我们的内容,其地址可供任何Web2用户轻松使用。
您可能会注意到地址栏上的“不安全”警告,这是因为我没有安装通配符证书;)您可能会注意到网站需要一些时间来解决。这是因为您网站的内容仅在一个节点上。如果您将网站固定在多个节点或其他节点上,尝试访问您的网站(这意味着您的内容很受欢迎),它将更快解决:这部分就讲到这里。在下一部分中,我们将探索多格式。作者:Vaibhav Saini本文由IPFS中国社区编译,原文链接:https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b?source=post_page

zlkp4tvknrd.png

zlkp4tvknrd.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块
快速回复 返回顶部 返回列表