ENS 在 2023 年 4 月进行了大量更新,本站 “教程” 和 “文档” 中的相关内容已经过时。 如需了解最新的使用说明或技术文档,请到 ENS 官方提供的 支持文档 进行查阅。

ENS 注册表

源代码

ENS 注册表是 ENS 系统中的核心合约,所有的 ENS 查询都从注册表开始。注册表负责管理名称列表,记录每个名称的所有者、解析器和 TTL ,并允许名称的所有者对这些数据进行更改。

ENS 注册表的详细信息请参阅 EIP137

获取所有者

function owner(bytes32 node) external view returns (address);

以上函数返回 node 所标识名称的所有者。

获取解析器

function resolver(bytes32 node) external view returns (address);

以上函数返回 node 所标识名称的解析器地址。

获取 TTL

function ttl(bytes32 node) external view returns (uint64);

以上函数返回 node 所标识名称的缓存存活时间(TTL)。希望缓存名称信息(包括所有者、解析器地址和其他记录)的系统应该重视这个值。如果 TTL 为 0 ,那么每次查询都需要获取新数据。

设置所有者

function setOwner(bytes32 node, address owner) external;

node 所标识名称的所有权重新分配给 owner ,此函数只能由名称当前的所有者调用。

该操作会触发以下事件:

event Transfer(bytes32 indexed node, address owner);

设置解析器

function setResolver(bytes32 node, address resolver) external;

将与 node 所标识名称相关联的解析器更新为 resolver ,此函数只能由名称当前的所有者调用。resolver 必须是一个实现了解析器接口的合约地址。

该操作会触发以下事件:

event NewResolver(bytes32 indexed node, address resolver);

设置 TTL

function setTTL(bytes32 node, uint64 ttl) external;

更新 node 所标识名称的缓存存活时间,此函数只能由名称当前的所有者调用。

该操作会触发以下事件:

event NewTTL(bytes32 indexed node, uint64 ttl);

设置子名称所有者

function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external;

创建一个新的子名称 node ,将其所有权分配给指定的 owner 。如果该子名称已经存在,则重新分配所有权,但解析器和 TTL 保持不变。

label 是要创建的子名称标签的 keccak256 哈希。例如,如果你拥有 alice.eth 并想创建子名称 iam.alice.eth ,就需要将 namehash('alice.eth') 作为 node ,将 keccak256('iam') 作为 label

该操作会触发以下事件:

event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);

设置名称记录

function setRecord(bytes32 node, address owner, address resolver, uint64 ttl);

通过一次操作在 ENS 记录中设置名称的所有者、解析器和 TTL 。这个函数是为了方便用户操作而提供的,调用这个函数完全等同于按一定的顺序调用 setResolver setTTLsetOwner

设置子名称记录

function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl);

设置子名称的所有者、解析器和 TTL ,并在必要时创建这个子名称。这个函数是为了方便用户操作而提供的,它能够先将子名称的全部三个字段设置好之后,再在将子名称的所有权转移给调用者。

设置授权

function setApprovalForAll(address operator, bool approved);

设置或取消授权。得到授权的帐户可以代表该函数调用者执行所有关于 ENS 注册表的操作。

检查授权

function isApprovedForAll(address owner, address operator) external view returns (bool);

如果 operator 被授权代表 owner 进行 ENS 注册表的操作,则返回 true 。

检查记录是否存在

function recordExists(bytes32 node) public view returns (bool);

如果 node 存在于 ENS 注册表中,则返回 true 。对于存在于旧 ENS 注册表中且尚未迁移到新注册表的记录,将返回 false 。

转载本站内容请注明出处和链接。咨询 ENS 问题或加入 ENS 中文社区请联系 我们