摘要
ERC-1078 提出一种无需密码、助记词与私钥备份的以太坊原生登录/注册模式。对用户而言,体验近似传统“二次验证”,却脱离中心化服务器;对 DApp 开发者,则需重新思考交易的构造与执行方式。
核心关键词:ENS 子域名、身份合约、通用登录、免私钥、可执行签名消息、无密码注册、Web3 UX
场景速写:Alice 的一键登录
- Alice 打开一个 DeFi 应用,只看到一句“请输入用户名”。
- 她输入 alice.game.eth。
- 钱包弹窗提示:“添加此设备为‘操作级’密钥?”
- Alice 轻点确认,秒级完成登录并开始交互——设备上并无 ether,合约里锁定真实资产。
整个过程无密码、无私钥备份、无中心化认证,这正是 ERC-1078 勾勒的未来。
业务原理
身份合约(Identity Contract)
身份合约=用户的唯一标识,同时兼容:
- ERC-725(身份管理)
- ERC-1077(可执行签名消息)
资金与权限全锁在身份合约内,而非存在外部私钥。设备仅需一把“授权密钥”就可代用户签名,密钥丢了,资产不丢。
ENS 子域名:入口地址
用户对外提供的不是 42 位 0x 地址,而是简短易记的 用户名.app.eth ENS 子域名。
操作细节:
- APP 自主铸造子域名(如
alice.game.eth)并即时指向身份合约。 - 子域名所有权归属用户合约,APP 仅拥有父域控制权,降低锁定风险。
- 未来可完全移交,不影响 ENS 层级安全。
完整流程三步走
1 请求名称并优雅反馈
- 输入已存在的 ENS:显示 “欢迎回来,直接登录”。
- 输入不存在:弹窗 “立即创建?”——一次输入,避免重复填写。
- 输入别名:支持 ENS 的“昵称”映射,降低新手门槛。
2 创建新身份 or 连接现有身份
2.a 创建身份
| 步骤 | 说明 | 是否可链下预部署 |
|---|---|---|
| ① 设备密钥生成 | 浏览器/移动设备本地随机生成 | 否 |
| ② 部署身份合约 | 一次性交易,可携带初始空白“占位合约”节省 gas | ✅ |
| ③ 绑定子域名 | 指向此合约 | ✅ |
| ④ 关联恢复方案 | social-recovery 或多签守护者 | 可选 |
| ⑤ 用户感知 | 等待区用进度条提示,可并行浏览其他功能 | ✅ |
2.b 连接现有身份
开发者需事先声明所用权限级别:
- Manager(管理级):可增删密钥、升级合约——钱包或身份管理器场景。
- Action(操作级):可代签转账、合约调用——生态通用钱包场景。
- Encryption(加密级):只能链下签名,无链上权限——聊天、游戏、签到。
交互顺序:
- 本地生成临时密钥。
- 调用身份合约
addKey(PK, LEVEL)生成字节数组。 - 通过 Whisper / EIP-681 URI /二维码 广播给持有管理权限的老设备。
- 老设备签名=即授新设备对应权限。
3 发起交易
交易分链上、链下两条路径。
链下消息(最常用)
- 聊天/游戏动作:直接用临时密钥签名即可,接收方查身份合约验证真实性。
- 回合结算:走状态通道,仅决赛上链。
链上交易(资金安全场景)
- 收集
TOFROMVALUEDATA。 - 调用
Identity.executeSigned(...)推送签名消息。 - 单签场景:服务器可代付 gas;多签场景:消息经 Whisper 广播直至收集足够签名。
- 订阅
ExecutedSigned事件,前端自动刷新不再弹出“卡住”问题。
常见问题答疑(FAQ)
Q1:ENS 子域名会不会被 APP 收回,导致身份消失?
A:子域名一旦指向身份合约,即由合约控制。后续 APP 要收回子域名也只会断开解析,合约依旧存在,可更换到新域名继续使用。
Q2:设备密钥被盗,资产会丢吗?
A:不会。设备密钥不保管资产,资产在身份合约。只需用恢复合约移除被盗密钥即可,整个过程不再需要原始的私钥或助记词。
Q3:为什么一开始要求“加密级”而非“管理级”?
A:对大多数聊天、游戏场景,仅需链下签名即可。高权限密钥由个人主钱包保管,减少暴露面。
若应用临时需要资金,再分步向主钱包申请“Action”级签名。
Q4:如何防止 APP 滥用子域名,制造垃圾账号?
A:开发者可在注册阶段设计抗女巫机制(如验证码、设备信誉、小额手续费)。ENS 子域名也可设过期自动回收,从经济角度抑制滥用。
Q5:是否可以跨链复用 ERC-1078?
A:身份合约逻辑本身应与链无关。只要目标链支持 EVM + ENS 解析(或桥接),即可移植,实现“一次注册,多链通行”。
迈向未来的改进清单
- 去中心化部署网络:节点自愿收取少量手续费,替代传统 relayer,提高抗审查性。
- 统一消息格式:在 Whisper/ libp2p/ Waku 之上,制定“签名交易广播”的共识层,避免重复造轮子。
- 零知识辅助:让“手机=冷钱包”设备可在不暴露公钥的情况下验证链下消息。
参考文献
- 多伦多 UX Unconf 演讲《Universal Logins》
(原视频可见讲话稿精华,核心代码在历届黑客松已多次实现原型)
版权声明
本文在 CC0 许可下放弃所有版权及相邻权,可自由转载、修改、商业化使用。