Goerli测试网ethers.js调用lookupAddress查询ENS返回null问题
问题根因
代码逻辑本身没有问题,resolveName调用成功说明rikikudo6.test的正向解析记录已经配置生效,lookupAddress返回null的核心原因是对应链上地址没有配置合法的ENS反向解析记录。
需要注意ethers的lookupAddress内置了双向校验逻辑,不是单方向查到反向记录就直接返回:
- 首先查询目标地址对应的反向解析节点下存储的名称值
- 拿到名称后会再发起一次正向解析,校验这个名称解析出的地址是否和查询的原始地址完全一致,只有双向匹配时才会返回名称,任意一步失败都会返回null。
ENS的正向解析和反向解析是完全独立的两套链上记录:正向解析由域名所有者配置,决定「域名指向哪个地址」;反向解析由地址所有者配置,决定「这个地址对应哪个域名」,不会因为域名设了正向指向某地址,就自动为该地址生成反向记录。
缺失的配置步骤
使用地址0x8A2D9D8e54FF47d28Cc35Aa2ba244d49F14944cA对应的控制钱包,完成反向记录配置即可:
- 打开ENS管理界面,切换网络到Goerli测试网
- 找到反向记录(Reverse Record)设置入口
- 将该地址的反向记录值设置为
rikikudo6.test - 等待链上交易确认后,重新运行脚本就能得到正常返回结果
注意事项
- 配置反向记录后,要确保
rikikudo6.test的正向解析始终指向当前地址,否则会因为双向校验不通过导致lookupAddress返回null,这个校验逻辑是为了防止恶意地址把反向记录设为知名域名实施仿冒 - 确认脚本里使用的RPC端点确实连接Goerli测试网,主网和测试网的ENS记录互不连通,网络配错也会查询失败
- 反向记录必须由地址对应的私钥签名发起配置交易,仅持有域名的控制权、没有对应地址的控制权时,无法给该地址设置反向记录
内容的提问来源于stack exchange,提问作者Rikikudo
相关产品推荐
相关产品推荐

