EIP-7702 让一个普通外部账户(EOA)声明我的交易请按照这段合约代码来执行,账户就此披上智能账户的外衣:批量操作、社交恢复、支出限额都能有。但熟悉它的人都知道一个别扭的尾巴——委托是由原私钥签的授权写入的,此后这把私钥依然保留两样权力:继续直接发起交易,以及再签一份新授权把委托指向别处。钱包代码运行得再久,这把钥匙理论上永远能掀桌。EIP-7851 提出的 SETSELFDELEGATE 就是把掀桌权烧掉的尝试。
两种委托前缀
提案给委托指示符分了两个档。以 ef0100 开头的委托是标准形态,对应 EIP-7702 现行为:ECDSA 私钥仍可授权普通交易,也仍可改委托。以 ef0101 开头的委托则宣告 ECDSA 权力已关闭:原私钥既不能直接发交易,也不能再签署委托变更。执行代码时两种前缀完全等价,账户照常跑委托目标里的逻辑;差别只体现在授权入口上。
触发切换的指令是 SETSELFDELEGATE,只对自己账户生效——合约替别人调用它无效。它从栈上取一个目标地址,把自身账户的委托写成 ef0101 前缀加该地址,成功返回一。静态上下文里调用它会直接触发异常停机,符合以太坊对状态变更指令的一贯约束。提案给出的成本是每次执行固定九千五百 Gas(参数为草案值,指令操作码尚未定号)。
不可逆的确切含义
这句要逐字读:一旦被禁用,ECDSA 权力永远无法恢复——这是提案声明的唯一硬不变量。它不等于目标合约从此锁死。ef0101 状态下,钱包代码自己仍然可以通过普通委托更新逻辑把委托指向新地址,只是变更必须由委托代码内的策略(多签、时间锁、治理)完成,而不是链下的某把私钥。换句话说,账户的信任锚从一串可能泄露、可能被胁迫交出的数字,迁移到链上可审计的代码。
动机段对此说得很直白:钱包接管账户后,用户实际通过钱包操作一切,原私钥却还留着,它躺在冷存储里也终究是一个单点——丢了没人能替你找回,泄露了别人能悄悄改写你钱包的未来。与其留着一条几乎从不用但致命的路,不如主动封死。
现状与使用该想清楚的事
按官方页,EIP-7851 创建于 2024 年 12 月 27 日,状态 Draft,远未到实现阶段;主网上 EOFCREATE 也好 SETSELFDELEGATE 也好都还不存在,现行 7702 委托随时可被原私钥改写。因此现在任何账户安全方案都建立在这条残留权力之上,钱包产品对 7702 的常见建议——把它当作有回退窗口的升级而非终点——仍然成立。
真正值得提前想清楚的是切换后的取舍:烧掉私钥意味着客服与社交恢复体系必须百分之百覆盖委托逻辑,因为协议层不再提供任何钥匙兜底;同时也意味着被钓鱼授权恶意委托的风险从改回去变成改不回去的边界情形(好在恶意委托前 ef0100 阶段总还能纠正,ef0101 之前账户所有权已经在钱包代码手里,策略设计才是一切)。
一场搬家的类比
把 7702 委托想成搬家:老宅钥匙(私钥)理论上仍能开门进旧居(直接转账、改委托),但你已住在智能合约新居,日常门锁全部由新居规则接管。搬家后老钥匙的合理归宿有两种,一种是把它藏进协议看不见的保险柜——行为上等效,但每次协议核验钥匙资格时都要问一遍新居管理员,麻烦且留下可被社工撬动的缝隙。7851 的 ef0101 相当于去房管局把老钥匙正式注销:从此门铃里根本不存在这把钥匙的登记信息。注销动作本身要在新居里完成,且不可撤销。这个顺序提醒所有智能账户设计者——钥匙注销是一次性、高门槛、写进链上历史的决定,应当排在多签与恢复机制全部演练通过之后,而不是注册第一天。
快速问答
问:ef0101 和删除私钥有什么区别? 答:私钥本身删不掉(椭圆曲线密钥对天然存在),烧的是协议承认它作授权凭证的资格。
问:这会影响7702现有用法吗? 答:提案是扩展不是替换,ef0100 行为不变,切换是可选动作。
问:什么时候能用到? 答:草案阶段,操作码都未分配;按以太坊节奏,从Draft到落地通常需数年甚至更久,且可能被并入其他提案。
风险提示:本文讨论未落地提案,不构成投资建议;账户委托与授权操作不可逆风险高,操作前请确认当前网络实际支持的规则。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。