ENS(Ethereum Name Service)将不易记忆的十六进制地址“翻译”成人类可读的域名,极大地降低了区块链应用的交互门槛。本篇文章围绕 ENS域名解析 这一核心关键词,系统梳理正向解析、多币地址解析及反向解析在不同开发语言中的实战代码,并穿插易踩的坑和沟通常见疑问的 FAQ,力求让你在 5 分钟内构建可落地的 ENS 解析方案。
ENS 域名正向解析:一行代码拿到以太坊地址
无论使用哪种语言包,ENS 的目标都是“把 alice.eth 变成 0x 开头的以太坊地址”。主流库的调用方式如下,建议先挑你最熟悉的 IDE 按需复制粘贴。
JavaScript/TypeScript 生态
// 1) web3.js(简洁)
const address = web3.eth.ens.getAddress('alice.eth');
// 2) ethers.js(推荐)
const address = await provider.resolveName('alice.eth');
// 3) ethjs-ens(轻量)
const address = await ens.lookup('alice.eth');服务端语言示例
// go-ens
address, err := ens.Resolve(client, "alice.eth")// web3j(Java/Android)
String address = ens.resolve("alice.eth");# web3.py
address = ns.address('alice.eth')ethers.js、web3j 进一步支持“隐式解析”——任何需要输入地址的位置都可以直接写 alice.eth,让编译器帮我们完成正向查询。多币地址解析:让 alice.eth 也能指向比特币
ENS 提供 链 ID + Namehash 的双因子机制,稳稳支持比特币、莱特币等多链收款。只需要在解析器中调用重载后的 addr() 函数即可:
- 请求比特币地址:
addr(hash, 0)(链 ID 0,对应 SLIP44) - 返回值为二进制,需要按规范转成文本格式,详情可参考 EIP-2304
⚠️ 注意:如果解析器返回 0x0000000000000000000000000000000000000000,必须视为 记录未设置,盲目转账可能导致资金损失。
不走库的解析三步骤(高可用、零依赖)
- 域名规范化和 Namehash
先将alice.eth➜namehash('alice.eth'),这一步必须严谨,参考 ENS 官方 域名处理。 - 拿到解析器地址
在 ENS 注册表中调用resolver(namehash),它会告诉你哪家“翻译官”负责解析。 解析器调用
从第 2 步获取的解析器地址处,执行所需函数:- 获取以太坊地址:
addr(namehash) - 获取比特币地址:
addr(namehash, 0) - 获取文本记录:
text(namehash, 'email')
- 获取以太坊地址:
这三步不依赖任何第三方包,最闹腾的节点也能跑通。
反向解析:用地址拿回人类可读的域名
正向解析解决“域名→地址”,而 反向解析 回答“谁管理了 0x1234…?”——这对前端展示尤其关键,谁能拒绝在钱包页看到 vitalik.eth 而非冗长十六进制串?
实现秘诀
- 主题命名空间:
0x1234...→1234....addr.reverse - 查询主题所在解析器的
name() - 拿到域名后 务必回退正向解析 验证,否则同名后可被冒用。
// ethers.js 示例:一步搞定验证
const name = await provider.lookupAddress(address);FAQ:高频疑问一次答完
Q1:同一 ENS 域名能否同时绑定多个链地址?
A:可以。通过传递不同链 ID,ENS 解析器可分别返回 ETH 地址(60)、BTC 地址(0)、BSC 地址(714)等。
Q2:gas 费用高会影响解析吗?
A:查询阶段链上只读,不会触发转账;注册/更新记录才会产生 gas,二者分离不冲突。
Q3:我换了钱包,需要重新注册反向解析吗?
A:是的。任何地址所有者可以更新 addr.reverse 子域,需要钱包签一次名即可生效。
Q4:低权子域(如 bob.alice.eth)如何解析?
A:与普通第二层 DNS 类似,只需规范化为完整层级 namehash,然后执行三步骤流程即可。
Q5:Java 能不能直接用 ENS 域名部署合约?
A:可以。web3j 在 load() 时自动做正向解析,"contract.alice.eth" 会被替换成 0x 地址,代码量减少 90%。
👉 0 成本实验:在线 ENS 解析案例见证解析全过程!
还没重构完钱包账户名?实战 Demo 之后,我们再回顾
总结一下:正向解析教会我们如何“把域名变成地址”,反向解析让应用呈现更友好,而多币地址解析打通了跨链支付的最后一公里。牢记“正向-反向-三步骤”的切镜思路,你就能在 ENS 的 域名解析 大道上疾驰无阻。