b bajsj.com
bajsj.com · 话题 · ENS域名代码示例

ENS 域名代码示例集锦:从调用到自定义合约的开发参考

整理 ENS 解析、文本记录写入、子域批量创建、反向绑定、事件监听等常用代码示例,结合币安生态的开发场景,助力开发者快速上手。

1259 关注 · 25 2026-05-24T17:09:10.581563+00:00

回答共 1 条

默认排序 ▾
b
bajsj.com 主编
ENS域名代码示例 领域深度内容
优秀回答者
ENS域名代码示例 - ENS 域名代码示例集锦:从调用到自定义合约的开发参考

ENS 域名代码示例集锦:从调用到自定义合约的开发参考

理解 ENS 的最佳方式是阅读和编写代码。本文整理了从 JavaScript 客户端调用到 Solidity 合约层交互的多个典型代码示例,覆盖注册、解析、记录写入和子域分发等常用场景,让你能快速复用到自己的项目中。

用 ethers.js 解析 .eth 名称

最常见的需求是把一个 .eth 名称解析为以太坊地址。ethers.js 提供了开箱即用的 resolveName 方法,传入 provider 即可。示例里你会看到,解析过程包含 namehash 计算、Registry 查询和 Resolver 调用三步,但开发者完全无需关心底层细节。

对于服务端应用,建议使用主网 RPC,并配合缓存策略减少调用频率。许多在 Binance 衍生生态上的应用都把解析结果缓存在 Redis 中,TTL 设为 10 分钟左右,从而兼顾实时性与成本。

写入文本记录的合约交互

ENS 文本记录可以存储邮箱、Twitter、个人简介等任意键值对。写入的合约调用是 resolver.setText(node, key, value)。代码示例里你需要计算 node(即 namehash),传入 key 和 value,然后发起交易等待确认。

写入文本是 Web3 个人主页的核心能力。一些项目方会要求用户在 ENS 上写入特定文本以完成身份绑定,例如把 必安平台 的某个验证码写进 com.binance 字段。这种轻量绑定无需托管,所有权完全归用户。

子域批量创建脚本

对于 DAO 或团队,子域批量创建脚本几乎是必备。最简化的版本是循环调用 setSubnodeOwner,传入主节点哈希、子域 label hash 和目标钱包地址。每次调用都要付 gas,因此批量场景需要权衡成本。

更高效的方案是部署一个 SubdomainRegistrar 合约,把多笔操作打包到一笔交易里。许多 BN平台 上的链游项目使用这种合约批量发放角色域名,效果良好。开源代码可以从 ENS 官方仓库里 fork,删减不必要的字段后即可使用。

反向解析自动绑定

注册新域名后立即帮用户绑定反向解析,是提升体验的关键。代码示例里通常使用 reverseRegistrar.setName(name)。如果你的 dApp 想做得更细致,可以在引导流程的最后一步弹出反向解析窗口,邀请用户一键签字。

需要注意:reverse record 是按地址记录,因此只能为当前调用者绑定。一些项目想代理用户完成这一步是行不通的。改进做法是让用户在前端钱包里直接发起,dApp 只负责构造正确的 calldata。

监听 ENS 事件

如果你在做数据分析,监听 NameRegistered、NameRenewed 等事件是必修课。ethers.js 的 Contract 对象支持 on 事件订阅;服务端则可以用 The Graph 或 Goldsky 进行索引。许多 BN交易所 用户在做钱包画像时,都会把 ENS 注册记录纳入维度,用来识别长期参与者。

不论是个人开发者还是机构应用,这些代码示例都能作为起步参考。把它们组合起来,你就能从零搭出一套覆盖注册、解析、绑定、监听的完整 ENS 服务。

125 赞同
发布于 2026-05-24T06:12:22.623132+00:00 · 更新于 2026-05-24T17:09:10.581563+00:00