ERC-4337 智能账户的批量签名:先看谁在付 Gas,再看这一批里混进了什么 图 1
ERC-4337 智能账户的批量签名:先看谁在付 Gas,再看这一批里混进了什么 · 图 1

智能账户提交的不是交易,是 UserOperation

ERC-4337 描述的以太坊账户抽象里,用户合约账户不直接发交易,而是提交一种叫 UserOperation 的打包对象,由名为 Bundler 的特殊节点把若干用户的操作汇总后交给链上的 EntryPoint 合约执行。钱包界面里你点一次「确认」,背后可能包含了:一段账户初始化数据、多次合约调用、以及由 Paymaster 代付手续费的安排。理解这一点是安全判断的前提——你签的对象比传统交易更「厚」,一个签名对应一组动作。

ERC-4337 智能账户的批量签名:先看谁在付 Gas,再看这一批里混进了什么 图 2
ERC-4337 智能账户的批量签名:先看谁在付 Gas,再看这一批里混进了什么 · 图 2

签名前值得盯住的四个字段

一是 sender:这次操作以哪个账户的名义执行,别小看它,批量或代理场景下最容易把「别人的意图」错挂到你的账户上。二是 callData:真正的动作清单,里面按顺序排列目标合约与调用参数,一笔恶意授权混在四笔正常操作里时,它就藏在这里。三是 Paymaster 相关字段:Gas 由谁付。天下没有免费的 Gas,代付方要么绑定某种营销授权,要么在别处收钱,看到「本次免费」应当主动去钱包或钱包设置里查代付条款。四是授权与期限字段:批量结构里如果包含 setApprovalForAll 这类高权限调用,或者带时间窗口的会话密钥,签名界面是否如实显示。不同版本规范(规范仍在演进,不同版本字段命名有差异)中字段位置不同,以 EIP 官方规范与你的钱包实现说明为准。

批量结构带来的三类具体风险

第一,藏针:攻击者把授权调用拼进领取、质押等正常流程,界面若只显示聚合描述就极易漏看。第二,会话密钥过长:为了「免签」体验签发的会话密钥若权限宽、有效期长,被盗后可在窗口内持续操作。第三,Paymaster 的隐性对价:营销页用代付 Gas 引导你批量签下一串授权。防御的共同思路是拒绝「看不懂但很划算」的签名。

核对方法

用钱包的批量明细视图逐项展开 callData,展开不到明细的钱包配置建议更换;对不认识的协议地址先查证再签;重要操作先用小额或测试流程走一遍;定期用授权查询工具审查你的智能账户名下仍然有效的授权与会话密钥,过期的立刻撤销。规范原文以 eips.ethereum.org 的 ERC-4337 与 EntryPoint 部署文档为准,本文描述反映的是通用机制,不替代版本细节。

与传统多签和交易批处理的区别

ERC-4337 常被和「一次签多笔」的旧做法混为一谈,值得分辨。传统上钱包的批量发送靠合约里预写的多call 方法完成,Gas 仍由你自己付,账户形态还是普通外部账户;ERC-4337 的批量发生在协议层,账户本身是合约,验证逻辑可以自定义,手续费可以由别人垫。区别的安全含义在于:旧批量结构相对固定、每笔明细分明,而账户抽象把「什么算合法签名」也变成可编程的部分——验证合约可以要求签名之外附加条件,比如指定时段、指定调用者、或者一个授权服务方的背书。功能更灵活的另一面,是你在签名界面看到的一次「是」,背后承接的逻辑链条更长、更像一份你未曾逐条读过的授权协议。

给普通用户的最小操作包

不必跟踪规范演进的细节,日常只需要固定一套动作:签名界面必须能展开目标合约地址与调用内容,展开不了就不签;「免 Gas」「本次由协议付费」出现的页面,先去协议文档确认代付条款再操作;同一协议要求同时签「委托」「授权」两类请求的,分开评估、分开签;每月一次用授权管理工具清点账户名下仍然有效的授权与密钥,对过期协议、活动遗留的会话密钥全部撤销。规则版本会更新,但这套核对动作在任一版本下都成立。

本文为机制科普与防御指引,不构成投资建议,也不构成对任何具体实现的安全背书。