
先明确授权的适用范围
讨论数字钱包的授权需要注意哪些问题,首先要区分权限类型。本文主要解释以太坊及兼容网络中的 ERC-20 代币使用权限,不将这些规则直接套用于所有钱包、资产或支付系统。
Ethereum.org 的授权撤销指南强调,断开网站连接不会清除已有代币权限。OpenZeppelin 的 ERC-20 文档则说明,授权额度记录的是指定地址能够代持有人支出的代币数量。理解授权,需要同时核对代币、被授权地址和额度。

确认对象与额度,理解无限授权
授权通常针对某一种代币和某个被授权地址,并不自动覆盖钱包中的全部资产。确认请求时,应看清具体权限范围,不能只凭网站名称判断授权对象。

无限授权减少了重复批准的需要,也扩大了相关代币的风险敞口。在 OpenZeppelin 所述实现中,最大整数额度不会随代扣而减少。因此,完成一次交互或把代币提回钱包,都不能证明旧权限已经失效;只批准必要额度有助于限制暴露范围。
不要把免手续费签名理解为没有权限变化
授权不一定表现为用户亲自发送的链上批准交易。ERC20Permit 支持通过签名表达授权,因此钱包没有要求立即支付网络费用,并不足以说明请求没有资产权限含义。判断时应关注签名表达的授权内容,而非仅看是否收费。
普通 ERC-20 授权没有统一的自动到期机制,但扩展标准可能提供临时权限。具体有效期应结合授权机制确认,不能把所有授权都理解为永久有效或自动过期。
撤销要核对网络和链上结果
授权记录与所在网络相关。在一个网络中检查到的权限,不能代表其他网络的情况;多网络使用者需要分别核对。
普通链上撤销需要提交交易并支付网络费用,点击撤销按钮只是发起请求。确认交易成功、相关额度已经清除,才能判断该项权限是否解除。撤销也不能追回此前已经转走的代币。
常见问题:退出应用和调整额度意味着什么
撤销代币权限通常不会自动退出既有质押、借贷或资金池头寸。它改变的是后续代扣能力,已有头寸仍需按应用自身规则处理;以后再次需要代扣时,可能要重新授权。
把非零额度直接改成另一个非零额度存在交易排序风险,旧额度可能在修改生效前被使用。OpenZeppelin 文档提到,先将额度清零,再设置新额度,是缓解这一问题的方法,但清零交易生效前,旧权限仍可能被使用。