ERC-1078:用 ENS 子域名打造免密码的通用 Web3 登录/注册方案

·

摘要

ERC-1078 提出一种无需密码、助记词与私钥备份的以太坊原生登录/注册模式。对用户而言,体验近似传统“二次验证”,却脱离中心化服务器;对 DApp 开发者,则需重新思考交易的构造与执行方式。

核心关键词:ENS 子域名、身份合约、通用登录、免私钥、可执行签名消息、无密码注册、Web3 UX


场景速写:Alice 的一键登录

  1. Alice 打开一个 DeFi 应用,只看到一句“请输入用户名”。
  2. 她输入 alice.game.eth
  3. 钱包弹窗提示:“添加此设备为‘操作级’密钥?”
  4. Alice 轻点确认,秒级完成登录并开始交互——设备上并无 ether,合约里锁定真实资产。

整个过程无密码、无私钥备份、无中心化认证,这正是 ERC-1078 勾勒的未来。


业务原理

身份合约(Identity Contract)

身份合约=用户的唯一标识,同时兼容:

资金与权限全锁在身份合约内,而非存在外部私钥。设备仅需一把“授权密钥”就可代用户签名,密钥丢了,资产不丢


ENS 子域名:入口地址

用户对外提供的不是 42 位 0x 地址,而是简短易记的 用户名.app.eth ENS 子域名。
操作细节:


完整流程三步走

1 请求名称并优雅反馈

👉 深入理解 ENS 子域名如何真正做到“去中心化账号”


2 创建新身份 or 连接现有身份

2.a 创建身份

步骤说明是否可链下预部署
① 设备密钥生成浏览器/移动设备本地随机生成
② 部署身份合约一次性交易,可携带初始空白“占位合约”节省 gas
③ 绑定子域名指向此合约
④ 关联恢复方案social-recovery 或多签守护者可选
⑤ 用户感知等待区用进度条提示,可并行浏览其他功能

2.b 连接现有身份

开发者需事先声明所用权限级别:

交互顺序:

  1. 本地生成临时密钥。
  2. 调用身份合约 addKey(PK, LEVEL) 生成字节数组。
  3. 通过 Whisper / EIP-681 URI /二维码 广播给持有管理权限的老设备。
  4. 老设备签名=即授新设备对应权限。

👉 一图看懂设备密钥如何获得“免 Gas”授权流程


3 发起交易

交易分链上、链下两条路径。

链下消息(最常用)

链上交易(资金安全场景)

  1. 收集 TO FROM VALUE DATA
  2. 调用 Identity.executeSigned(...) 推送签名消息。
  3. 单签场景:服务器可代付 gas;多签场景:消息经 Whisper 广播直至收集足够签名。
  4. 订阅 ExecutedSigned 事件,前端自动刷新不再弹出“卡住”问题。

常见问题答疑(FAQ)

Q1:ENS 子域名会不会被 APP 收回,导致身份消失?
A:子域名一旦指向身份合约,即由合约控制。后续 APP 要收回子域名也只会断开解析,合约依旧存在,可更换到新域名继续使用。

Q2:设备密钥被盗,资产会丢吗?
A:不会。设备密钥不保管资产,资产在身份合约。只需用恢复合约移除被盗密钥即可,整个过程不再需要原始的私钥或助记词

Q3:为什么一开始要求“加密级”而非“管理级”?
A:对大多数聊天、游戏场景,仅需链下签名即可。高权限密钥由个人主钱包保管,减少暴露面。
若应用临时需要资金,再分步向主钱包申请“Action”级签名。

Q4:如何防止 APP 滥用子域名,制造垃圾账号?
A:开发者可在注册阶段设计抗女巫机制(如验证码、设备信誉、小额手续费)。ENS 子域名也可设过期自动回收,从经济角度抑制滥用。

Q5:是否可以跨链复用 ERC-1078?
A:身份合约逻辑本身应与链无关。只要目标链支持 EVM + ENS 解析(或桥接),即可移植,实现“一次注册,多链通行”。


迈向未来的改进清单


参考文献


版权声明
本文在 CC0 许可下放弃所有版权及相邻权,可自由转载、修改、商业化使用。