
🦄什么是 Permit2?
Permit2 是由 Uniswap 团队开发的一个系统
Permit2 是如何工作的?
Permit2 是一个智能合约,用户需要向其授予无限制的许可(unlimited approval)。在对 Permit2 合约进行批准后,可以使用它来向其他智能合约发放子许可(sub-approvals)。这可以通过函数 Permit2.approve()来完成,该函数的工作方式与 approve() 在 ERC20 代币中的作用相同。但也可以通过函数 Permit2.permit()来实现,该函数的工作方式类似于 permit() EIP2612 中的函数。
除了为不支持 Permit 签名的代币提供支持之外,Permit2 还增加了其他功能。最重要的是,它为使用 Permit2 所做的所有批准添加了有效期。因此,您无需无限期地批准合约,而可以设置批准在到期后自动失效。
Permit2 的优点
Permit2 具有与原始 EIP2612 Permit 签名相同的优点:用户的操作更少,因为他们不需要单独发送批准交易, 并且 潜在的风险更小,因为应用在使用 Permit 或 Permit2 签名时无需请求无限制的权限(unlimited approvals)。
此外,Permit2 解决了 EIP2612 Permit 签名的一个主要缺点——大多数代币不支持它们。Permit2 通过允许对每个代币使用无需支付燃气的 Permit 签名来解决这一问题。
Permit2 的另一个额外好处是它还为批准添加了有效期。这减少了用户需要处理的问题,因为他们不必手动撤销所有权限。此外,安全风险也降低了,因为未使用的批准数量减少,黑客利用这些批准的机会也随之减少。
Permit2 的缺点和风险
尽管 Permit2 有重要的优势,但需要注意的是,与常规批准或 EIP2612 Permit 签名相比,它也带来了一些新的安全风险。

Permit2 系统非常灵活,允许对多个代币同时发放批准。由于这种灵活性,用户更难理解他们到底在批准什么。钓鱼网站可能会利用这一点,欺骗用户发出他们不想授予的批准。
除了给用户带来额外风险外,这对应用开发者来说也是额外的难题。与 Permit2 的集成比使用常规批准甚至 EIP2612 Permit 签名需要更多工作。不过这一缺点被 Permit2 对所有代币的支持所部分抵消,因此相较于 EIP2612,投入的工作可能更有意义。
撤销 Permit2 批准
在讨论 Permit2 批准时,应考虑两件事。首先,是您授予给 Permit2 合约本身的常规批准。这个批准是必要的,以便 Permit2 合约能够代表您发放 Permit2 批准 。建议在不再使用该批准时撤销它。尤其是考虑到我们上面提到的额外钓鱼风险。
其次需要考虑的是实际由 Permit2 合约代表您发放的 Permit2 批准,这些批准通常具有不应过长的有效期,因此您可以考虑让它们自动过期。如果有效期太长,您仍然可以使用 Revoke.cash 手动撤销或更新该批准。

最后更新于

