.eth永久注册中心

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

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

系统架构

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

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

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

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

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

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

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

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

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

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

用户在注册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,返回旧版注册中心地址。
Last Updated: 11/8/2019, 11:08:48 AM