ENS 介绍

以太坊名称服务(Ethereum Name Service,简称 ENS)是一个基于以太坊区块链的分布式、开放和可扩展的命名系统。ENS 的核心功能是将人类可读的名称(例如 “alice.eth”)解析为计算机可以识别的标识符,如以太坊地址、其他加密货币地址、内容哈希、元数据等。此外,ENS 还支持“反向解析”,使得可以将元数据(如规范化名称或接口描述)与以太坊地址相关联。

ENS 的功能与架构

ENS 的目标类似于互联网名称服务(DNS),但由于以太坊区块链的功能特点和限制,ENS 的架构与 DNS 有很大的不同。ENS 是一个层次结构的命名系统,层次之间以点作为分隔符,每个层次称为一个域。域的所有者拥有完全控制其子域的权利。

顶级域名(例如 “.eth” 和 “.test”)的所有者是智能合约,称为“注册器(registrar)”。这些合约内定义了子域名分配的规则。任何人都可以按照这些合约规定的规则,获取一个域名的所有权,并根据需要进行配置。ENS 还支持将现有的 DNS 域名接入 ENS 系统,扩展其功能。

由于 ENS 的层次结构,任何拥有某级域名的人都可以为自己或他人创建和配置子域名。例如,如果 Alice 拥有 “alice.eth”,她可以创建 “pay.alice.eth” 并根据需要进行设置。

ENS 部署与使用

ENS 部署在以太坊主网络及多个测试网络上。如果您使用 ensjs Javascript 库或终端用户应用程序,这些工具会自动检测并与相应的网络进行交互。
 

ENS 架构

ENS 有两个主要组件:注册表和解析器。
 

ENS 注册表介绍

ENS 注册表是一个智能合约,负责维护所有名称和子名称列表,并存储关于每个名称的三个关键信息:

  1. 名称的所有者

  2. 名称的解析器

  3. 名称下所有记录的缓存存活时间(TTL)

名称的所有者可以是外部账户(用户)或智能合约。注册器作为一个拥有顶级名称的智能合约,根据合约中的规则将该名称的子名称分配给用户。

ENS 注册表功能

ENS 注册表中的名称所有者具有以下权限:

  1. 设置解析器和 TTL:所有者可以为其名称指定解析器并设定 TTL。

  2. 转让所有权:所有者可以将名称的所有权转让给另一个地址。

  3. 更改子名称的所有权:所有者可以管理和修改子名称的所有权。

ENS 注册表的主要作用是将名称映射到负责解析该名称的解析器。解析器是智能合约,负责将名称转换为地址。任何符合解析器相关标准的智能合约都可以在 ENS 中作为解析器使用。对于需求简单且不经常更改地址的用户,可以使用通用解析器。

解析器功能

每种记录类型(如以太坊地址、内容哈希等)都定义了一组方法,解析器必须实现这些方法才能提供对应的记录。新的记录类型可以随时通过 EIP 标准化程序进行定义,因此无需更改 ENS 注册表或现有的解析器即可支持新记录类型。

在 ENS 中解析一个名称需要两个步骤:

  1. 查询注册表:首先,查询注册表以确定哪个解析器负责解析该名称。

  2. 查询解析器:然后,向该解析器查询解析结果。

ENS 的优势与应用

ENS 注册表和解析器的设计简化了复杂地址的管理,使用户能够轻松将人类可读的名称转换为计算机可识别的标识符。这一设计不仅增强了用户体验,还提供了极大的灵活性和扩展性,使 ENS 成为区块链命名系统的一个强大工具。
 

Namehash 机制

在智能合约中,由于资源限制,直接与可读名称进行交互效率低下。因此,ENS 采用了固定长度的256位加密哈希来处理名称。这种哈希算法称为 Namehash,旨在生成具有层次结构的唯一哈希值。例如,“alice.eth”的 Namehash 为 0x787192fc5378cc32aa956ddfdedbf26b24e8d78e40109add0eea2c1a012c3dec。在 ENS 内部,Namehash 用于表示名称。

Namehash 的递归过程

Namehash 是一个递归过程,它可以为任何有效名称生成唯一的哈希值。通过从一个名称的 Namehash 开始(如“alice.eth”),可以推导出任何子名称的 Namehash(如“iam.alice.eth”),而无需处理或知道原始的可读名称“alice.eth”。这种特性使得 ENS 能够高效地管理其层次结构,而无需内部处理可读的文本字符串。

规范化过程

在使用 Namehash 进行哈希处理之前,必须对名称进行规范化。这一过程依赖于 UTS-46 标准,确保名称中的字母大小写无关,并且禁止无效字符。任何对名称进行哈希和解析的操作都必须首先进行规范化,以确保所有用户在 ENS 系统中获得一致的结果。

Namehash 的重要性

Namehash 的设计在以下几个方面发挥了重要作用:

  1. 效率:通过将可读名称转换为固定长度的哈希值,ENS 在智能合约中实现了高效处理。

  2. 层次结构:Namehash 允许递归生成子名称的哈希,支持 ENS 的层次结构管理。

  3. 一致性:通过规范化过程,确保所有用户在 ENS 中处理名称时获得一致的结果。
    Namehash 的应用

在 ENS 系统中,Namehash 的应用极为广泛:

  1. 名称注册:用户在注册名称时,ENS 使用 Namehash 将名称转换为哈希值进行存储和管理。

  2. 名称解析:在解析名称时,ENS 根据名称的 Namehash 进行快速、高效的查找和匹配。

  3. 子名称管理:通过 Namehash 的递归特性,用户可以轻松管理其名称的子名称,而无需处理复杂的文本字符串。

#ENS #ordi​​​ #zro #mln #ZEN $ENS $ORDI $ZRO