本文目录与来源 6 节

文章要点

  • 签名时没有支付 gas,不能据此判断它是否涉及代币授权。
  • Permit2 的签名接受期限与 spender 额度到期时间,需要分别核对。
  • 撤销现有额度与作废尚未使用的签名,是不同的处理动作。

没有提示 gas 费用,仍要看清签名内容

钱包弹出签名窗口,没有要求支付 gas,也没有立即扣款。这时仍要读内容:ERC-2612 允许通过签名设置代币使用额度,其他地址可以把有效的 permit 提交上链。签名时不用付费,后续链上执行仍有网络成本;你签下的权限,也可能由别人接着使用。[1]

Permit2 需要分两层看

ERC-2612 的 permit 由代币合约自身支持;Permit2 则是另一个独立合约。使用 Permit2 前,需要先在代币合约上授予它额度。随后,再通过 Permit2 决定哪个 spender,也就是获准支出的地址,可以使用哪些代币、使用多少。检查权限时,这两层都要辨认。[1][2]

一次性签名与可以重复支出的额度

Permit2 的 AllowanceTransfer 会记录 spender 的额度与到期时间。在剩余额度充足、尚未到期等条件成立时,对方可以多次支出。SignatureTransfer 则用一次性签名授权转移,并通过 nonce 防止同一份签名重复使用;nonce 可以理解为这份授权的防重复编号。[5][6]

一次性不代表金额小。那一次仍可能授权动用你不愿交出去的代币数量。而且 SignatureTransfer 用完的是那份签名的支出权限;代币合约原先授予 Permit2 的底层权限,不会随之自动取消。[2][6]

签名快到期,额度可能还能使用很久

AllowanceTransfer 有两个需要分别阅读的字段:sigDeadline 限制这份签名最晚何时能被接受;expiration 限制建立后的 spender 额度何时到期。前者很短,后者仍可能很长。看到一个临近的日期,还不能判断全部权限都会在那时结束。[3][5]

ERC-2612 的 deadline 同样限制 permit 被接受的时间。标准本身没有让已建立额度随着这个 deadline 自动到期的机制。实际代币可能使用不同版本的 permit,仍要以该合约为准。[1]

确认前,先检查权限是否符合这次操作

实际核对时,可以从网络、代币合约、spender、额度和各项期限开始:它们是否都符合你原本要做的事?这是根据上述机制整理的检查建议。如果界面只有一串看不懂的数据,先拒绝签名,自行打开官方文档查清楚,再决定是否继续。[1][3][4]

如果已经签过可疑消息,断开网站连接不会撤销链上授权。接下来要确认处理的是哪一层:代币对 Permit2 的授权、Permit2 内部的 spender 额度,还是尚未使用的签名。AllowanceTransfer 将当前额度清零,并不会自动作废所有未使用的签名;它另有 nonce 作废功能,SignatureTransfer 也有自己的作废方式。应根据模块和钱包支持情况确认,不能只看到“撤销”二字就认定所有风险都已解除。链上撤销通常仍需网络费。[5][6][7]

查证范围与制作说明

本文根据官方文档与合约源代码整理,未执行实际钱包交易或合约安全审计,也未声称 Permit2 出现新漏洞。文章与示意配图由 AI 协助制作,经 BlockBlah 编辑流程查证及审阅。

资料来源与延伸阅读

(7)

核对数据时,请一并确认来源日期、统计期间与适用条件;部分链接会持续更新。

  1. ERC-2612: Permit Extension for EIP-20 Signed Approvals (在新标签页打开)
  2. Permit2 Overview (在新标签页打开)
  3. Allowance Transfer (在新标签页打开)
  4. Signature Transfer (在新标签页打开)
  5. Permit2 — AllowanceTransfer.sol (在新标签页打开)
  6. Permit2 — SignatureTransfer.sol (在新标签页打开)
  7. How to revoke smart contract allowances / token approvals (在新标签页打开)

本文为信息与教育用途,不构成投资建议。加密资产可能大幅波动,请独立核实。

作者与编辑说明 ↗本文有错误?告诉我们 ↗
继续读这个栏目 ↗