ERC-7604:ERC-1155 也能签名授权,免 Gas 审批要看清哪几行 图 1
ERC-7604:ERC-1155 也能签名授权,免 Gas 审批要看清哪几行 · 图 1

ERC-7604:ERC-1155 也能签名授权,免 Gas 审批要小心什么

ERC-20 的 permit 让”先签个名、别人帮你发交易”成了熟悉操作,ERC-721 也有了对应的 ERC-4494。轮到 ERC-1155 时问题变复杂了:一枚代币编号下可以同时躺着很多个库存单位,“授权”除了对象和编号,还必须回答”授权多少个”。ERC-7604 就是为 ERC-1155 设计的签名授权标准。2026 年 9 月 9 日在 ethereum/ERCs 仓库核对,该提案处于 Draft 状态,2024 年 1 月创建,依赖 ERC-165、ERC-712、ERC-1155、ERC-1271、ERC-2098 和 ERC-5216。

三个函数与一个前提

符合规范的合约要在 ERC-1155 之上提供三个函数:permit(owner, operator, tokenId, value, deadline, sig) 用一段 EIP-712 签名直接把 operator 对指定 tokenId 的额度设为 valuenonces(owner, tokenId) 返回当前防重放计数;DOMAIN_SEPARATOR() 返回域分隔符。成功路径要求同时满足:当前时间不晚于 deadlineowner 非零地址、传入 nonce 与链上记录一致、签名恢复出的地址正是 owner 本人,条件齐备才写入额度并把该编号的 nonce 加一、发出批准事件。ERC-165 接口号为 0x7409106d

规范特意把 ERC-5216 列为前置依赖,原因很实际:原生 ERC-1155 的授权只有”某人能否动我某个编号的全部”,没有按数量授权的原生语义。没有 ERC-5216 打底,permit 里那个 value 就名存实亡——签名等于把整个编号的库存全部放行。读一份 ERC-1155 合约时先确认它同时支持 ERC-5216,这条 permit 才有”按数量限权”的意义。

与 ERC-4494 的一个关键差异

ERC-4494 的 nonce 挂在代币上、随每次转账递增,签名随资产易手自然作废;ERC-7604 的 nonce 挂在”持有人加代币编号”的组合上,随授权使用时递增。两种设计各防各的重放场景,但对用户的直观含义是一样的:一份 permit 签名是一次性、有时限的授权凭证,过期或换手就失效。

也正因为签名消息本身不上链,它存在天然的可审查性——中继方拿到签名可以不提交。deadline 字段就是为此准备的自救开关:最坏情况下签名过期作废,额度从未生效。持有人也可以自己花钱提交这份 permit 抢先生效,让旧签名作废。

一次授权的生命周期

把一份 ERC-7604 授权从生到死走完一遍,能看清每个环节的防御点。起点是用户在合规界面发起交互,钱包弹出一份 EIP-712 结构化消息,五个字段一目了然:给谁的额度、哪个代币编号、多少个、几点过期。签名之后这份消息本身躺在用户或应用的本地,谁中继谁受益,中继方通常按省事或出价排序批量提交。链上验证通过的那一刻,额度写入 ERC-5216 语义的 allowance 账本,事件随交易可见——虽然签名者自己的地址上可能一分钱 Gas 都没花、一笔交易都没发。额度用毕或想提前止损,走常规 setApprovalForAll 撤权或等下一个编号级 nonce 把它作废;也可以在同一个 tokenId 上再签一份小额 permit,用新的 nonce 顶掉旧的。

这个生命周期里最值得记的一条是”授权发生在别人的交易里”。传统 approve 模式下,你的地址有交易记录,翻历史就能盘点;permit 模式下授权静默发生,资产仪表盘若只扫描你发起的交易,就会系统性漏掉这类额度。定期用授权扫描工具按”你的地址加代币编号”反查活跃 allowance,是免 Gas 时代补上盲区的基本动作。

签之前看四行字

从安全角度,ERC-7604 的弹窗读法与普通签名不同,值得固化为习惯。第一看 spender:额度给了哪个合约地址,与项目官网公示的合约是否一致;第二看 tokenId 与 value:数量授权是这套标准的卖点,也是最大的刀口——本来只想授权 3 个,签成 3000 个就是事故,务必逐项核对展示值;第三看 deadline:宁可短不要长,无限期 permit 等于把钥匙留在门上;第四看链:EIP-712 域中包含 chainId,但展示界面未必提醒你在哪条链签名,仿冒链上签同款消息的钓鱼已有先例。

对不常交互 ERC-1155 混合库存的用户,还要分清两个世界:不签 permit 时走传统 approve 交易,授权变化全部上链可查;走 permit 时授权发生在别人的交易里,自己的交易历史可能干干净净却已经给某合约开了额度。定期在授权管理工具里按”地址加编号”检查活跃额度,是这类免 Gas 机制下的必修课。本文含安全提示,仅提供防御性建议,不构成投资建议;提案状态以 ethereum/ERCs 仓库为准(核验时间 2026 年 9 月 9 日)。