ENS 注册表迁移:修复漏洞,增加新功能

今天(1月30日)我们对外声明:我们与 ENS 根域的密钥持有者们一起努力,重新部署了 ENS 注册表合约。这次部署的合约修复了一个未被利用的漏洞,并添加了一些新功能。

对于大多数用户来说,不需马上做什么。所有的名称都是安全的,如果你是一个普通用户,可以像平时一样继续正常使用 ENS 。

钱包、DApp、子名称注册器、库和任何其他使用 ENS 的服务都需要升级到新的注册表合约。同时,使用旧注册表合约的服务仍将正常工作,但它们很快就会开始提供过时的信息。我们建议所有的服务马上进行升级。如果您完成了升级,请通过 brantly@ens.domains 通知我们,以便于我们确定所有的服务都进行了升级。

这里有一个指南,详细说明了如何对服务进行升级:DApp 开发者迁移指南

漏洞

Sam Sun 的发现让我们意识到当前的 ENS 注册表合约存在一些异常行为。将来我们会发布完整的漏洞分析。

简单来说,如果一个人以一种特殊的方式转让了一个 ENS 名称,那他们以后还可以从接收者那里收回这个名称。但如果是以正常的方式转让名称,就不存在这个问题。换种方式说,要利用这个漏洞,进行名称转让的人必须在转让之前就专门进行某种设置,以便以后收回这个名称。

据我们所知,这个漏洞还没有被利用过。新部署的注册表合约修复了这个漏洞。

新的注册表合约已经经过 Sam Sun 的审查,并经过了ConsenSys 的严格评估,双方都没有发现问题。

新功能

我们利用这次升级引入了一些便于 ENS 使用的新功能。新功能包括:

  • 通过一笔交易设置名称的所有者和解析器
  • 通过一笔交易创建子名称并为其设置解析器
  • 授权合约或其他帐户代表其对名称进行设置(设置名称的所有者和解析器),类似于 ERC721 的 “授权” 功能

时间表

新版 ENS 注册表已经部署完毕,使用 ENS 的服务应该尽快在其代码中更新注册表。它具备针对旧注册表的回退机制,因此新注册表可以立即运行。

我们计划在 2 月 3 日到 5 日之间将 .eth 的名称从旧注册表迁移到新注册表。此后,如果你的服务仍然使用旧的注册表,它将开始返回过时的信息。