用一个 ENS 名字登录:ERC-2525 的钱包发现机制和它没说完的信任问题 图 1
用一个 ENS 名字登录:ERC-2525 的钱包发现机制和它没说完的信任问题 · 图 1

用一个 ENS 名字登录:ERC-2525 的钱包发现机制和它没说完的信任问题

第一次用去中心化应用的人常常被问住:你用什么钱包登录?浏览器插件、手机应用、硬件设备,各家都往页面里注入一个标准对象,用户要在十几个图标里选对自己那家。ERC-2525 想把这道选择题删掉:登录入口不是钱包图标,而是你自己的 ENS 域名。应用解析这个名字,顺着你挂在名字上的说明找到你的钱包代码,自动完成接入。标准创建于 2020 年 2 月 19 日,仓库记录状态为 Stagnant,作者是后来长期维护 OpenZeppelin Contracts 的 Hadrien Croubois。

登录被定义成什么

这份提案对登录的定义很工程化:当你手里有了一个能替你签名交易和消息的 EIP-1193 提供者,就算登录成功了。整个流程分五步——向用户要一个 ENS 域名;解析它拿到地址和文本记录;解释文本记录并下载它指向的文件;求值这个文件的内容;把生成的对象交回应用。此后应用按普通钱包接入对待即可,需要时再走各家自己的凭据确认。

关键在文本记录这一步。提案规定用 ERC-634 的文本记录机制,键名是 enslogin(原文明确标注 subject to change,即尚未定稿)。如果目标域名上没有这个键,回退到父域名节点上的 enslogin-default。对 username.domain.eth 这样的名字,先查子域名自己的 enslogin,查不到再看 domain.eth 上有没有 enslogin-default——钱包厂商可以先替用户在父域统一挂好入口,用户想定制再覆盖。

用一个 ENS 名字登录:ERC-2525 的钱包发现机制和它没说完的信任问题 图 2
用一个 ENS 名字登录:ERC-2525 的钱包发现机制和它没说完的信任问题 · 图 2

指向钱包代码的地址长什么样

指向实例化代码的路径写成 scheme://path 形式,例如 ipfs:// 加一段内容哈希,或者一个 https 地址,再按 SLIP 44 的链类型编号和语言加后缀:一个用以太坊的网页应用对应 ipfs://Qm…/60/js。这个后缀机制对 http 和 IPFS 都成立,但它对存储层提出了要求——不是所有存储都能做这种路径解析。代码侧的约定是:外部文件要注入一个 global.provider 函数,接收配置对象、返回符合 EIP-1193 的提供者对象。配置对象里除网络与 ENS 入口等公共字段外,单下划线开头的字段留给钱包厂商,双下划线开头的留给 SDK。

去中心化的卖点与没说透的信任

提案最引以为傲的是不需要中心审批:SDK 只包含链上和存储的查找机制,任何按规范打包、又能被支持协议取到的钱包,天然兼容所有接入的应用,部署好的 SDK 也不用升级。但把这条链路完整读一遍就会发现,信任没有消失,只是换了位置。你登录时实际发生的事是:一个域名的文本记录被用来指挥浏览器去某个地址下载代码并执行。谁能改这条记录,谁就能让你在那个页面运行任意脚本——域名被转入垃圾地址、记录被过期引用、IPFS 网关被劫持,都会把供应链风险直接送到你眼前。

为什么它停在原地

提案还设想过激励机制:Dapp 开发者一次集成就能自动兼容所有未来钱包,钱包厂商也不用挨家求合作,双方的利益被同一套规则对齐——这正是作者认为标准能自传播的底气。部署好的 SDK 无需升级就能用上新钱包,这个卖点在当时的插件混战里很对症。把它放回 2020 年的语境再看停滞的原因也更清楚:钱包厂商更愿意经营自家的连接按钮与 SDK 生态,把入口让给用户的 ENS 域名等于让渡品牌与风控触点;而对普通用户,先拥有一个会过期的 ENS 域名才能登录,这个前置门槛本身就劝退了它想服务的最大人群。协议的优雅和市场的采纳从来是两件事。

状态是 Stagnant:讨论沉寂,提案没有推进到落地。现实里各钱包继续用注入对象和连接器的市场格局解决同样的问题,ENS 的记录位也更多被头像、别名之类用途占满。读这份标准今天的用处,是理解 ENS 文本记录到底能承载多大的权力:text 记录不只是给你朋友看的别名,它理论上可以指挥钱包和浏览器行为。你在意这个域名的安全,程度应当接近你在意一把私钥。本文为机制说明,不构成任何投资建议。