一群账户共用一把钥匙的验证账:ERC-7766 给 4337 加的聚合器
ERC-4337 让智能账户的操作走上一条独立内存池,但账没算细:每条 UserOperation 都要自带一份签名,EntryPoint 逐条验证,一笔 ECDSA 验证的固定开销要摊进每一笔小操作。对空投领取、批量空转、公会签到这类同一签名体系下的海量操作,验证费就是成本大头。ERC-7766 创建于 2024 年 9 月 1 日,仓库记录状态为 Withdrawn,它把密码学里成熟的聚合思想接进验证管道:允许一组合约账户在注册时约定同一把密钥,提交时共享验证输入,链上只验一次。
聚合器:一个新的必经角色
标准引入 ERC-4337 之外的新实体——聚合器,它不是链上合约就是一个约定流程里的链下角色,接口 IAggregator 有三个函数:validateUserOpSignature 给单条操作出具一份可聚合的替代签名(通常是空字节串,附带账户信息),aggregateSignatures 把一批操作折叠成一段聚合签名,validateSignatures 在链上用一个函数对整批操作加聚合签名做唯一一次验证。账户侧的配合动作是返回这个替代签名:验证阶段账户若声明走聚合路线,就把替代签名交出去, EntryPoint 在真正执行时用聚合结果替代逐条验签。EntryPoint 相应新增 handleAggregatedOps,与原来的 handleOps 并列,一批走普通通道、一批走聚合通道互不干扰。省下来的账很简单:N 条操作从 N 次椭圆曲线验证变 1 次,每条操作还能免带各自的签名字节。

聚合的信任代价
原文的安全考量部分写得很直白:聚合的前提是这批操作背后确实是同一套密钥,而验证“确实同一把钥匙”的权力落在聚合器手里。恶意聚合器可以声称一批不相干的操作属于同一个密钥体系,把不属于彼此的账户绑进同一验证,或者在批量里夹带自己的构造。标准的对策是把信任切成两截:注册时的密钥声明由账户合约自己写死,链上可查;聚合执行过程则要求任何聚合声明都能被独立复验——validateSignatures 是纯视图调用,任何人都能拿同一批操作和同一段聚合签名重跑一遍。这套安排的潜台词是:聚合器的价值在批量组织而非信任担保,用它只是省 Gas,不是委托安全。
省费账本的两种算法
给一批 N 条操作算账要分两块:验证成本和携带成本。签名聚合砍掉的是验证成本,N 次签名验证折叠成一次;携带成本省的是签名字节,每条 UserOperation 的签名段可以替换成更短的替代声明,两条收益在打包竞争里会被 bundler 折算进每条操作的净利润。但省费是有门槛的:聚合只对同一密钥体系的批量有意义,操作间密钥不同,聚合等式就不成立,强行归批就是把安全责任转给聚合器。因此读任何 4337 批量产品的费率页时,先确认它是否要求批量成员共享注册密钥:答案含糊的,省费与风险此消彼长,并不白省。
内存池与包络顺序的小账
还有一个常被忽略的边角:聚合批次的操作必须在同一批里全部成功或全部重来,签名聚合把验证原子性扩展到整包,单条失败连坐整批重提。这对打包者的批量切分策略提出了新约束——把互不相关的账户切进同包会放大失败半径。标准正文里那条“批量原子性保证”就是针对这点:验证要么整批承认,要么整批作废,不存在半批签名有效。评估聚合方案时可以把这个语义当试纸:产品说明若声称支持部分成功,它的聚合实现必然偏离了协议声明,两者必有其一是话术。
为什么撤回以及今天的替代
标准最终 Withdrawn。直接原因是账户抽象阵营的注意力转向:批量与验证优化让位给更底层的签名原语与预编译支持,聚合方案对存量合约账户的兼容性要求又使注册流程复杂化。但它标注的问题账本仍然有效:凡声称“批量省费”的产品,先问省的是签名费还是验证费、由谁验证聚合声明、账户是否把批量成员资格交给单一聚合方;三条都答不上来,省费宣称就只是营销。读 ERC-7766 的收获是理解一笔 Gas 账单的解剖结构——签名越密、账户越像流水线,聚合这类设计的价值越具体。
本文为机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。