Cloudflare通过集成ENS和IPFS推出通往分布式Web的新网关

2021-01-22 16:04:23

Cloudflare通过集成ENS和IPFS推出通往分布式Web的新网关

  近日,ENS(一个基于以太坊区块链的分布式、开放和可扩展的命名系统。)团队正式将https://eth.link切换为使用Cloudflare(内容分发网络加速服务商)提供的新服务—— 一种新的分布式Web解析器。


  该调整将为用户在浏览器中运行IPFS等分布式协议铺平道路。


  IPFS如何索引内容

  IPFS是用于在分布式文件系统上存储内容的对等网络。它由一组称为节点的计算机组成,这些计算机使用公共寻址系统存储内容。

  该寻址系统依赖于内容标识符(CID)的使用。CID是自我描述的标识符,因为标识符是从内容本身派生的。

  例如,QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco是ipfs上wikipedia主页的CID版本0(CIDv0)。

  您可能已经注意到,尽管CID描述了一条内容,但没有描述其在网络上的位置。该文件的位置将通过对IPFS节点的查询来检索。

  IPFS URL(统一资源定位符)如下所示:ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco。

  访问此URL意味着QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco使用IPFS协议(由ipfs://表示)进行检索。

  但是,键入这样的URL容易出错。而且,这些URL并不是很友好,因为没有记住这种长字符串的好方法。

  要解决此问题,可以使用DNSLink(DNSLink是一个非常简单的协议,可以直接从DNS链接内容和服务。)DNSLink是在DNS TXT记录中指定IPFS CID的一种方式。

  例如,IPFS上的Wikipedia具有以下TXT记录

  $ dig +short TXT _dnslink.en.wikipedia-on-ipfs.org

  _dnslink=/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco

  此外,其A记录指向IPFS网关。这意味着,当您访问en.wikipedia-on-ipfs.org时,您的请求将定向到IPFS HTTP网关,该网关随后将使用您的域TXT记录查找CID,并使用IPFS网络。


  在ENS上索引IPFS内容

  不过目前,有很多的DNS解析服务集中在Google、Amazon、阿里云等少数几个托管服务商手中。很多DAPP使用者为了使网站去中心化,选择IPFS+ENS的形式,通过ENS来访问IPFS的内容。

  ENS(基于以太坊区块链的分布式、开放和可扩展的命名系统。)是一个能够将人类可读的名称(称为域)转换为区块链地址的系统。例如,域privacy-pass.eth指向以太坊地址0xF10326C1c6884b094E03d616Cc8c7b920E3F73E0。

  系统由注册表和解析器两个部分组成。

  注册表是一个智能合约,它维护一个域列表以及有关每个域的一些信息:域所有者和域解析器。所有者是允许管理域的帐户。他们可以创建子域并更改其域的所有权,以及修改与其域关联的解析器。

  解析程序负责保存记录。例如,Public Resolver是一个智能合约,不仅可以将名称与区块链地址相关联,而且还可以将名称与IPFS内容标识符相关联。解析器地址存储在注册表中。然后,用户联系注册表以检索与该名称关联的解析器。


  使用Cloudflare分布式Web解析器

  不过访问ENS注册表需要访问以太坊状态,要访问IPFS,还需要访问IPFS网络。过程还是很麻烦的。

  为了解决这个问题,ENS团队决定使用Cloudflare的分布式Web网关。Cloudflare可以同时运行以太坊网关和IPFS网关,可分别从cloudflare-eth.com和cloudflare-ipfs.com获得信息。


在Cloudflare Workers之上构建eth.link


  具体操作是在Cloudflare Workers之上构建了eth.link(如上图)。

  EthDNS是一种从DNS访问以太坊名称服务(ENS)中信息的方法。EthLink是该.eth域的EthDNS 。由于.eth不是注册的DNS顶级域,因此通常无法从DNS进行访问,但是可以通过将附加.link的信息添加到域中来获取相关信息。例如,一个DNS A记录请求mydomain.eth.link将在ENS中查找ENS中的A记录mydomain.eth。

  eth.link服务的主要目的非常简单:用户可以在.ETH名称的末尾附加“ .LINK”来访问IPFS网站,其名称类似于普通网站,而无需特殊的浏览器或扩展名。例如,如果用户具有MetaMask,Opera或其他启用ENS + IPFS的浏览器,则可以访问almonit.eth /-但是,如果没有,仍然可以使用almonit.eth.link上的eth.link查看该网站。

  附加.link时,它将代理所有ENS注册的域。例如,privacy-pass.eth应该呈现“隐私通行证”主页。在网络浏览器中,https://privacy-pass.eth.link会执行此操作。

  解决方案是使用Cloudflare Worker在Cloudflare边缘完成的。Cloudflare Workers允许JavaScript代码在Cloudflare基础架构上运行,从而无需维护服务器并提高了服务的可靠性。另外,它遵循Service Workers API,因此最终用户可以根据需要检查解析器返回的结果。

  当用户Alice访问privacy-pass.eth.link时,工作人员首先获取要从以太坊中检索的CID。然后,它将与该CID匹配的内容请求到IPFS,并将其返回给Alice。

  所有工作都可以在本地运行。该工作程序可以在服务工作程序中运行,以太坊网关可以指向本地以太坊节点和IPFS Companion提供的IPFS网关。这意味着,尽管Cloudflare提供了解决方案即服务,但所有组成部分之间都必须相互信任。

  这些服务受益于Cloudflare Worker平台增加的速度和安全性,同时为在浏览器中运行IPFS等分布式协议铺平了道路。


  参考文章:

  https://app.ens.domains/

  https://eth.link/

  https://blog.cloudflare.com/cloudflare-distributed-web-resolver/


最新推荐