ENS 中的反向解析是指从以太坊地址(比如 0x1234…)到 ENS 名称的映射,它通过一个特定的名称空间(_.addr.reverse_)来实现。这个名称空间由一个专用注册器拥有和控制,该注册器可以接受任何人的调用,并根据调用者的地址为其分配子名称。
例如,账户 0x314159265dd8dbb310642f98f50c066173c1259b 可以通过调用声明 314159265dd8dbb310642f98f50c066173c1259b.addr.reverse. ,然后为其配置一个解析器并指定元数据(比如此地址的规范 ENS 名称)。
反向注册器提供了声明反向记录的函数,同时为了提供一种给地址指定规范名称的方式,反向注册器还内置了一个便于配置最常用记录的函数。
反向注册器的详细信息请参阅 EIP181。
声明地址
function claim(address owner) public returns (bytes32); |
通过在反向注册器中声明调用者的地址,将反向记录的所有权分配给 owner
,相当于调用 claimWithResolver(owner, 0)
。
通过解析器声明地址
function claimWithResolver(address owner, address resolver) public returns (bytes32) |
通过在反向注册器中声明调用者的地址,将反向记录的所有权分配给 owner
,如果 resolver
非 0 ,则会同时更新这个反向记录的解析器。
调用该函数之后:
- 调用者的反向记录(_1234….addr.reverse_)归
owner
所有。 - 如果
resolver
非 0 ,调用者的反向记录中的解析器将被设置为resolver
;如果resolver
为 0 ,解析器将保持不变。
设置名称
function setName(string memory name) public returns (bytes32) |
将调用者的反向 ENS 记录设置为给定的 name
。
通常用户只想配置反向名称而无需配置其他内容,而这个函数通过简化设置反向记录的过程,方便了用户。它按以下步骤执行:
- 为调用者设置反向记录,这个反向记录的所有者是反向注册器。
- 将调用者反向记录中的解析器设置为
defaultResolver
。 - 将调用者反向记录中
defaultResolver
的name()
字段设置为name
。
简而言之,在调用此方法之后,用户的反向记录会有一个完整的配置,反向记录中该账户的规范名称被设置为给定的 name
。
想要进行灵活配置的用户需要使用 claim
或 claimWithResolver
,并在他们选定的解析器合约上手动配置记录。
获取反向记录节点
function node(address addr) public pure returns (bytes32) |
此函数通过接收地址并返回该地址的反向记录的节点(namehash 输出),方便了想要查询地址元数据的合约,并避免再使用那些需要处理十六进制编码和哈希以获得所需值的合约。
获取默认解析器
Resolver public defaultResolver; |
返回 反向注册器
用于 setName
的解析器合约的地址。