在去中心化的互联网世界中,以太坊域名服务(ENS)扮演着至关重要的角色,它将复杂难记的以太坊地址(如0x742d35Cc6634C0532925a3b844Bc9e7595f8dDee)转化为易于人类理解和记忆的域名(如 alice.eth),而ENS实现这一核心功能的基础,便是其注册表(Registry)的巧妙设计,本文将深入探讨ENS注册表的存储机制,揭示它是如何成为域名世界坚实基石的。

ENS注册表:什么?为什么?

我们需要明确ENS注册表是什么,ENS注册表是一个部署在以太坊区块链上的智能合约,它维护了一个全局的中央数据库,记录了哪些域名是可用的,以及每个已注册域名的关键信息,最重要的是其所有者和解析器。

  • 所有者(Owner):域名的当前所有者,拥有对该域名进行转让、续费、设置子域名等控制权。
  • 解析器(Resolver):负责将域名解析为其对应的各种记录(如以太坊地址、IPFS哈希、文本记录等)的智能合约,没有解析器,域名只是一个空壳。

ENS注册表之所以重要,是因为它提供了域名的权威性来源,当您查询一个ENS域名时,首先就会查询注册表,以确认该域名的所有者是谁,以及应该向哪个解析器请求具体的记录信息。

核心存储:数据结构的设计哲学

ENS注册表的核心在于其数据结构的设计,它需要在保证高效查询的同时,最小化链上存储成本,因为以太坊区块链的存储是相对昂贵的。

ENS注册表主要使用了两种核心的数据结构来存储信息:

  1. 名称哈希(Namehash):

    • 问题:域名是可读的字符串(如 "alice.eth" 或 "bob.alice.eth"),而区块链更适合处理固定长度的字节串。
    • 解决方案:ENS引入了namehash算法,该算法递归地将域名字符串转换为一个固定长度(32字节)的哈希值。
      • 空字符串的namehash为0x0000000000000000000000000000000000000000000000000000000000000000。
      • "eth"的namehash是特定值。
      • "alice.eth"的namehash是基于"eth"的namehash和"alice"的哈希计算得出的。
    • 优势:名称哈希使得域名的存储和查询非常高效,且避免了字符串匹配的开销,它也构建了一种层次化的命名空间,使得子域名的管理可以独立于父域名(在某种程度上)。
  2. 映射(Mapping):

    • ENS注册表内部使用了一个关键的随机配图