.eth 永久注册器

永久注册器是负责顶级域名 .eth 的分配和更新的智能合约。目前使用旧版的维克里拍卖的方式进行域名分配和注册。新版注册器旨在简化这一过程,同时为未来的改进提供一个稳定的平台,这里的稳定指的是使 API 的变化最小化。(译注:ENS团队已经在 2019 年 5 月 4 日部署了新版永久注册器)

永久注册器的计划部署日期是 2019 年 5 月 4 日。这里只是提供初步的文档,目的是为一些开发者提供一个起点,这些开发者希望在他们的平台或工具中集成 .eth 域名注册和续费功能。

系统架构

永久注册器的代码可以在 ethregistrar 仓库中找到。

注册器本身称为基本注册器(BaseRegistrar)。该合约实现了以下几个关键功能:

  • 注册器的所有者可增减 “控制器(controller)”。
  • 控制器可以注册新域名和延长现有域名的有效期,但不能更改现有域名的所有权或缩短其过期时间。
  • 域名所有者可以将所有权转移到另一个地址。
  • 如果域名所有者丢失了所有权,他们可以在 ENS 注册表中收回所有权。
  • 在 1 年过渡期内,原注册器的域名所有者可将其迁移至新版注册器。迁移域名时,他们的押金将全部退还给他们。

此外,注册器是一个符合 ERC721 标准的非同质化代币(NFT)合约,也就是说 .eth 的域名可以像其他 NFT 一样被转移。

用户在转移域名所有权,或在 ENS 域名注册表恢复所有权时(例如,一个域名的所有权以前被转移到一个合约中),将直接与此合约进行交互。用户还可以通过域名查询来查看其注册状态和到期日期。对于初始注册和续费,用户需要与控制器合约进行交互。

这种关注点分离的方式减少了注册器受到的攻击,并在注册器存在的情况下为用户的域名所有权提供了保证。另外,它还规定了注册和续费机制的改进和创新。将来的更新中可能会将根域名和 .eth 顶级域名的所有权转移到一个受限权限的合约中,从而防止根密钥持有者干预 .eth 的注册,同时不影响控制器的持续更新。

最初部署的控制器叫 ETHRegistrarController ,该控制器给长度为7个及更多字符的域名提供了一个简单的注册和续费机制,实现了以下功能:

  • 控制器的所有者可以设定价格预言机合约,该合约根据域名及其注册或续费的时长来确定注册和续费的价格。
  • 控制器的所有者可将已收取的全部款项取回到他的账户。
  • 用户可以通过 “承诺-揭示” 的过程注册新域名,并支付适当的注册费。
  • 用户可以通过支付适当的资金来续费域名,而且对于某个域名,除了域名所有者,其他用户也可以为这个域名续费。另外,续费的时长也没有限制。

由于任何人都可以为某个域名续费,如果一个用户非常关注某个与其交互的域名的有效期,那他可以在必要时通过自己付费来确保该域名保持注册状态。

由于可以进行任意时长的续费,用户可以 “锁定” 理想的注册费(译注:这里的理想主要是针对以太币来说的,因为续费价格只是相对美元稳定,而相对以太币则不确定)。通过长时间的续费,可以实现域名的 “长期有效”,保证了由智能合约所保障的域名稳定性。

用户在注册 7 个字符以上的域名,以及续费任意域名时,都需要与此控制器进行交互。等到域名长度限制放宽以及短域名初次分配的拍卖流程完成后,本控制器会发布一个修订版本,让短域名也可以注册。

起初,将部署一个独立的定价预言机合约,即 StablePriceOracle 。该合约的所有者能够以美元为单位分别给不同长度的域名设定价格,并使用 USD:ETH 价格预言机按照当前汇率将该价格转换成以太币(Ether)。用户注册某个域名时不必直接与这个预言机交互,因为确定该域名注册或续费价格的功能已经内置在了控制器合约里。

发现

找到新版注册器的地址很容易:在 ENS 注册表中通过调用 owner(namehash('eth')) 来查询 “eth” 域名的所有者。

为了支持发现控制器的地址,ENS 通过 EIP1844 支持接口发现。该机制允许通过以下过程来查询实现了所需接口的合约地址:

  1. 设置 node = namehash('eth')
  2. 通过调用 ENS 注册表上的 resolver(node) 来查找 ENS 解析器。
  3. 调用该解析器上的 interfaceImplementer(node, interfaceId) 方法,其中 interfaceId 是你所需接口的 EIP165 接口 ID 。

以下是目前为 .eth 永久注册器定义的接口 ID :

  • 0x6ccb2df4ERC721(NFT)的接口 ID ,它返回注册器本身的地址(也可以通过地址查找或查找 “.eth” 的所有者来获取)。
  • 0x018fac06 ,控制器的接口 ID ,返回控制器的地址。
  • 0x7ba18ba1 ,旧版注册器的迁移功能的接口 ID ,返回旧版注册器地址。
转载本站内容请注明出处和链接。咨询 ENS 问题请前往 问答区,其他问题请联系 团队成员