Page cover

🦄什么是 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 批量 MetaMask 弹窗

Permit2 系统非常灵活,允许对多个代币同时发放批准。由于这种灵活性,用户更难理解他们到底在批准什么。钓鱼网站可能会利用这一点,欺骗用户发出他们不想授予的批准。

除了给用户带来额外风险外,这对应用开发者来说也是额外的难题。与 Permit2 的集成比使用常规批准甚至 EIP2612 Permit 签名需要更多工作。不过这一缺点被 Permit2 对所有代币的支持所部分抵消,因此相较于 EIP2612,投入的工作可能更有意义。

撤销 Permit2 批准

在讨论 Permit2 批准时,应考虑两件事。首先,是您授予给 Permit2 合约本身的常规批准。这个批准是必要的,以便 Permit2 合约能够代表您发放 Permit2 批准 。建议在不再使用该批准时撤销它。尤其是考虑到我们上面提到的额外钓鱼风险。

其次需要考虑的是实际由 Permit2 合约代表您发放的 Permit2 批准,这些批准通常具有不应过长的有效期,因此您可以考虑让它们自动过期。如果有效期太长,您仍然可以使用 Revoke.cash 手动撤销或更新该批准。

Revoke.cash 上的 Permit2 批准

最后更新于