钱包显示一个ENS名字,为什么还要反查地址?

 / 
4

钱包显示一个 ENS 名字,不代表这个地址就属于那个名字。反查地址是唯一能确认"名字确实指向这个地址"的动作。 正向解析是"名字 → 地址",反向解析(也就是钱包显示名字的来源)是"地址 → 名字"。钱包看到的只是一个方向的结果,而 ENS 的安全前提要求两个方向必须互相匹配。只看其中一个方向,就等于相信了一个未经核对的声明。

欧易OKX交易所
全球领先的加密货币平台,适合新手与进阶交易者
新手福利:注册即享20% 交易手续费减免!

钱包显示的名字,可能来自一个单向记录

ENS 的"主名字"(Primary Name)技术上是一对互相指向的记录:

正向解析:alice.eth 的名字记录里,ETH 地址字段写着 0x1234...。这是名字在说"我属于这个地址"。

反向解析:0x1234... 这个地址的反向记录里,写着 alice.eth。这是地址在说"我的名字是 alice.eth"。

ENS 官方文档明确指出,反向查询之后必须再做一次正向查询来验证返回的名字是否仍然指向原始地址。如果不匹配,应该显示地址而不是名字。钱包帮你做了反向查询,但并不是所有钱包都会完整执行这个双向校验。有些钱包只读取反向记录就显示名字,这意味着地址的主人可以单方面设置一个反向记录指向某个它并不拥有的名字。

假设一个攻击者拥有地址 0xBAD...,他可以在自己的地址上设置反向记录为 vitalik.eth。如果钱包只读反向记录,就会显示 vitalik.eth,但 vitalik.eth 的正向解析根本不指向 0xBAD...。你看到的"名字"和实际控制的地址之间,没有经过验证的对应关系。反查地址就是手动补上这个验证步骤。

同形字攻击让"看起来一样"变得不可靠

即使名字本身是真实的,屏幕上的显示也可能骗人。ENS 支持 Unicode 字符,这意味着两个在屏幕上渲染得几乎一模一样的名字,可以是完全不同的注册项,属于不同的人,指向不同的钱包。

最典型的例子是拉丁字母 e 和西里尔字母 е。它们看起来一样,但 Unicode 码点不同。ens.eth 和 еns.eth(第一个字符是西里尔字母)是两个独立的名字,各自有自己的所有者和地址记录。ENS 的注册系统不会把它们当作同一个名字,但人的眼睛很难分辨。

还有不可见的字符,比如零宽连接符(ZWJ)。攻击者可以在 vitalik.eth 的字母之间插入一个不可见字符,注册出一个渲染效果完全相同、但实际上是另一个名字的 ENS 域名。官方 ENS App 会剥离大部分这类技巧,但攻击者可以通过智能合约或第三方工具绕过限制来注册。

反查地址的意义在于:无论名字长什么样,你最终要看的是它指向的那个 0x 地址。地址是确定的、可核对的。名字可以被伪造得看起来一样,但地址不会。

反查的具体做法

不需要手动去读智能合约。ENS 官方提供了一个直接的查询入口。

在 app.ens.domains 搜索名字,然后手动输入。 ENS 官方支持文档特别强调要打字输入,而不是粘贴。粘贴会带入你复制来源中的所有隐藏字符,你可能粘贴的是一个同形字版本,自己却不知道。输入你看到的那个名字,打开名字页面,查看它显示的"ETH Address"是什么。把这个地址和你准备转账的地址对比。

或者反过来查地址。 在 ENS Explorer 中搜索地址,查看"Reverse Re sol ution"标签页。这里会显示该地址声称的名字,以及一个关键字段:Forward match。如果显示 True,说明这个名字的正向解析确实指回这个地址,两个方向匹配。如果显示 False 或者没有反向记录,地址页面上显示的名字就不可信。

对于普通转账场景,更直接的习惯是:不要从交易历史或聊天记录里复制 ENS 名字。ENS 官方安全指南建议发送到 ENS 名字而不是从历史记录复制的地址,但前提是你输入的名字是正确的。如果你从别人发来的消息里看到一个名字,先到 app.ens.domains 手动输入并核对它指向的地址,再决定是否转账。一笔发往错误地址的交易无法撤销,ENS 支持也无法逆转。

常见问题

Q:钱包里显示的名字旁边有头像,头像也能伪造吗?

A:头像本身是名字记录的一部分,可以设置。头像不能作为验证依据。一个攻击者可以给自己的地址设置反向记录指向 vitalik.eth,同时在自己的名字记录里设置一个看起来像官方风格的头像。但 vitalik.eth 的正向解析不指向攻击者的地址,双向校验会失败。头像和名字一起显示,只是让伪造看起来更"完整",不改变验证逻辑。

Q:我在 Etherscan 上看到某个地址显示了一个 ENS 名字,这可信吗?

A:Etherscan 显示的名字通常经过了双向校验,但你的判断不应只依赖浏览器标签。区块浏览器在显示 ENS 名字时一般会执行正向验证,如果名字不匹配地址,会显示地址而非名字。但这不意味着你不需要核对。如果你准备向那个地址转账,仍然应该在 ENS App 中手动输入名字,确认它指向的地址与你准备发送的地址一致。浏览器标签是辅助信息,转账前的核对是你自己的责任。

Q:反向解析和正向解析,哪个才是"真的"?

A:两个都是真的,但只有同时成立才有意义。正向解析证明"这个名字声明拥有这个地址",反向解析证明"这个地址声明自己叫这个名字"。ENS 的设计让应用在显示名字之前要求两者匹配。你反查地址,就是在确认这两个声明是否一致。不一致的时候,以地址为准,不以名字为准。

欧易OKX交易所
全球领先的加密货币平台,适合新手与进阶交易者
新手福利:注册即享20% 交易手续费减免!

参考资料

  1. ENS Domains·Primary name,日期:2026-11-12
  2. ENS Documentation·Primary Names,日期:2026-11-12
  3. ENS Domains·What are homoglyphs and lookalike ENS names?,日期:2026-11-12
  4. ens.dev·What are homoglyphs and lookalike ENS names?,日期:2026-11-12
  5. ens.dev·What's on the address page in ENS Explorer?,日期:2026-11-12
  6. ens.dev·Avoid common ENS scams,日期:2026-11-12
  7. ENS Documentation·Resolution,日期:2026-11-12