ENS 简介
ENS(Name)是以太坊域名服务,是一个基于以太坊区块链的分布式、开放且可扩展的命名系统。
ENS 的工作是将可读域名(例如“alice.eth”)解析为计算机可读标识符,例如以太坊地址、内容哈希值、元数据等。ENS 还支持“反向解析”,这使得将元数据(例如规范化的域名或接口描述)与以太坊地址相关联成为可能。
ENS 的目标与 DNS(互联网域名服务)类似,但由于以太坊区块链的功能特点和限制,两者的架构有很大不同。与 DNS 一样,ENS 是一个分层域名系统,不同层级的域名之间以点作为分隔符。我们将各层级的名称称为域,域的所有者对其子域拥有完全的控制权。
顶级域名(例如“.eth”、“.test”)的所有者拥有一个名为“()”的智能合约,该合约规定了控制子域名分配的规则。任何人都可以根据这些合约规定的规则,获得某个域名的所有权并为自己使用。
由于 ENS 的层级特性,无论一个人拥有哪一层域名,都可以根据需要为自己或他人配置子域名。例如,如果 Alice 拥有“alice.eth”,她可以创建“pay.alice.eth”并根据需要进行设置。
ENS 部署在以太坊主网和多个测试网上。如果您使用 -ens 库或最终用户应用程序,它将自动检测您正在交互的网络并在该网络上部署 ENS。
您现在可以通过 ENS 管理器或 ENS 官方主页上的 ENS 应用程序尝试 ENS。
ENS 架构
ENS 有两个主要组件:注册表和解析器。
ENS 注册表是一个智能合约,它维护所有域和子域的列表,并存储有关每个域的三个关键信息:
域名的拥有者可以是外部账户(用户),也可以是智能合约。注册中心是一个智能合约,它拥有顶级域名,并根据合约中的规则将域名的子域名分配给用户。
ENS 注册中心中的域名所有者可以:
ENS 注册表非常简单,仅用于将域名映射到负责解析该域名的解析器。
解析器负责将域名转换为地址,任何符合解析器相关标准的智能合约都可以作为ENS中的解析器程序,通用解析器服务于需求简单的用户,比如不经常更换地址的用户。
每种记录类型(以太坊地址、内容哈希等)都定义了解析器必须实现的一种或多种方法,以便提供该类型的记录。可以通过 EIP 标准化流程随时定义新的记录类型,因此无需对 ENS 注册表或现有解析器进行任何更改即可支持它们。
在 ENS 中解析域名需要两个步骤:首先,询问注册中心哪个解析器负责解析该域名,然后向解析器查询解析结果。
在上面的例子中,我们想要找到“foo.eth”指向的以太坊地址。首先,我们询问注册表哪个解析器负责解析“foo.eth”;然后,我们向该解析器查询“foo.eth”的地址。
智能合约中的资源限制使得直接与人类可读的域名交互效率低下,因此 ENS 仅使用固定长度的 256 位加密哈希。为了从域名生成哈希并同时保留其层次结构,ENS 使用了一种称为 的算法。例如,“alice.eth”域名仅用于在 ENS 内部表示域名。
它是一个递归过程,可以为任何有效域名生成唯一的哈希值。从任意域名(如“alice.eth”)开始,可以派生出任意子域名(如“iam.alice.eth”),并且派生过程不需要知道或处理可读的原始域名“alice.eth”。正是这个特性让ENS成为一个分层系统,而无需在内部处理可读的文本字符串。
在用于哈希之前,域名必须先使用UTS-46标准进行规范化,确保域名中的字母不区分大小写,禁止使用无效字符。任何对域名进行哈希和解析的操作都必须先对其进行规范化,以确保所有用户获得ENS的一致性。
有关规范化工作原理的更多信息,请参阅域名处理文档。
开始使用
ENS 为各种人群提供参考文档,包括 DApp 开发人员和合约开发人员。
我是一名 DApp 开发者,我想为我的 DApp 添加 ENS 支持
要开始在 DApp 中启用 ENS,请查看开发应用程序开发者指南。您可以从众多可用的 ENS 库中选择一个来开始使用 ENS。
我是一名合约开发者,希望在我的智能合约中与 ENS 进行交互
从链上域名解析开始,参见合约开发者指南。你也可以编写自己的解析器(自定义查询域名的流程)或自己的注册中心(自定义注册新域名的流程)。
我想查看 ENS 智能合约的参考文档
查看 ENS 智能合约的 API 参考文档,其中涵盖 ENS 核心合约、注册表、解析器以及常用注册表,例如测试注册表、反向注册表和 .eth 注册表。
本文档由刘本本翻译,并由 整理。原文位于 。文中标有“LBB 译注”的地方是译者为方便读者阅读而提供的注释。
扫一扫在手机端查看
-
Tags : ENS 反向解析 以太坊地址 元数据
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。