风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

Permit2 介绍及风险分析

本文将对 Permit2 授权标准进行介绍,并分析其中可能存在的安全风险。

Eocene Research_ZH
Eocene Research_ZH
热度 ...

原文作者:Eocene Research_ZH

原文来源:medium

概述

Uniswap 在去年推出了 Permit2 授权标准,用于改善传统的 ERC20 代币的授权体验,其更加节省 gas,比传统的 ERC20 授权更安全,也更加方便管理。本文将对 Permit2 授权标准进行介绍,并分析其中可能存在的安全风险。

Permit 介绍

在分析 Permit2 授权标准之前我们先了解 Permit 授权。

Permit 是在 ERC-2612 中提出的,用户可以提前在链下对授权的地址、数量等信息进行签名,无需上链,然后授权地址获得签名后即可调用代币合约的Permit函数获取授权,从而可以进行代币的转移。

USDC 中Permit函数实现:

分析Permit首先会校验签名是否过期,然后将参数打包,校验签名合法性,校验通过则调用_approve函数进行授权。

Permit 授权方式需要代币合约实现Permit函数,而之前标准的 ERC20 代币则没有该方法,因此无法通过 Permit 的方式进行链下签名授权。

Permit2 介绍

Permit2 需要用户首先对 Permit2 合约进行传统的授权,授权后即可使用链下签名,将签署的 Permit2 签名传入智能合约的函数中,然后智能合约再调用 Permit2 合约,Permit2 合约验证了签名后调用代币合约的transferFrom函数进行转账。

用户只需要对 Permit2 合约授权一次,后续和其他智能合约交互时如果需要使用到授权过的代币,即可通过链下签名并传入相应的函数中进行交互,而无需每次都对不同的智能合约进行授权,当然这里的前提是交互的智能合约集成了 Permit2 合约。

Permit2 合约由两个合约组成,分别是 SignatureTransfer 合约以及 AllowanceTransfer 合约。SignatureTransfer 合约处理所有基于签名的转账。 AllowanceTransfer 合约处理代币的额度设置,允许支出者在指定的时间段内使用指定的金额。

在 SignatureTransfer 合约中主要的函数是permitTransferFrom函数,该函数使用签名消息转移代币,实现如下:

分析其中结构体 PermitTransferFrom 中存放着转移的代币地址,可转移的最大数量,nonce 以及最后期限:

分析而 SignatureTransferDetails 结构体中则存放着接受者的地址以及转移的数量:

分析然后调用内部函数_permitTransferFrom,先后进行期限校验、数量校验、nonce 校验、签名校验,都通过后将代币转移给指定的地址:

分析同时还支持一次性转移多种代币,只需要修改传入的两种结构体:

关于【Permit2 介绍及风险分析】的延伸阅读

  • 本周链上数据:市场波动、没有赢家

    市场缺乏赢家,波动大,另类投资长期无变化。建议反思仓位,确保能承受横盘走势和亏损。ETH ETF推出前,市场仍有重要事件。Solana和Base吸引资金,以太坊仍是DEX交易量最高。GME再次引起关注,PEW升级领先,BRETT成为首个市值突破10亿美元的Meme币。NFT交易量低迷,JASMY、THETA和TAO流入最多。DMT持续积累,GMX钱包购买370万美元。HFT和GMX有解锁计划。TAO和FLOKI是强大的BNB代表,PEW是最新的链上赛跑者,DEGEN和Normie正在积累,KLIMA和SPEC表现优异。DMT在Arbitrum上持续积累,GMX最近有大量购买,但解锁的代币可能导致抛售。保护资本很重要,夏天可能有机会,但要小心。

  • Pump.fun 协议洞察:从 Bonding Curve 计算到盈利策略构建

    PUMP.FUN是一个去中心化的Memecoin发行和交易平台,用户可以以极低成本发布和交易代币。平台收入主要来自交易手续费,每日收入持续增长。PUMP.FUN与@bubblemaps合作,通过直播展示新兴代币的发行和运营情况。平台具有强大的产品和生态背景,吸引了大量用户和资金。对于投资者来说,PUMP.FUN是一个值得深入研究和参与的平台。作者建议在考虑热点周期的同时,采取合适的参与策略。PUMP.FUN被认为是加密领域的独角兽项目,可以通过参与活动和赛道来获得空投。

分析分析调用的内部函数则变成了存在 for 循环的_permitTransferFrom:

分析而 AllowanceTransfer 合约中主要实现代币授权管理、转移等功能。

AllowanceTransfer 合约中的 mapping allowance 是一个由所有者指向代币地址指向支出者再指向 PackedAllowance 结构体,而结构体中存放数量、期限时间、nonce:

分析在 AllowanceTransfer 合约中用户可以通过调用approve函数直接修改授权信息以及通过调用permit函数使用签名的方式进行修改(permitSingle 用于单个授权,permitBatch 用于批量授权):

分析在 permitSingle 和 permitBatch 中存放着支出者的地址、签名的有效期以及 PermitDetails 结构体,而 PermitDetails 结构体则存放着代币地址、数量、授权有效期限以及 nonce :

分析在经过授权后,则可以调用transferFrom函数进行代币的转移,其会调用内部函数_transfer:

分析_transfer函数首先获取对应的 allowance 中的信息,然后校验授权是否过期,校验数量是否超出授权的最大数量,然后修改授权的数量,最后调用代币合约的transferFrom函数将代币进行转移。

以上是对 Permit2 的两个组成合约 SignatureTransfer 和 AllowanceTransfer 的简单介绍。

Permit2 风险分析

在介绍了 Permit2 的实现以后,我们再来分析其存在的风险。

传统的 ERC20 代币的授权是需要确认交易的,而使用了 Permit2 后则是在授权给 Permit2 合约后,后续的授权则可以通过签名的方式实现,用户对于签名的警惕性明显要小于发送交易,且很少会去确认签名的信息,这样会导致钓鱼的风险大大增加。如果使用的钱包没有

同时之前的没有实现 Permit 的代币现在通过 Permit2 也能通过签名进行授权,这在方便的同时也增加了用户资产被钓鱼的风险。

传统的 ERC20 代币的授权是没有到期时间的,在 Permit2 协议中存在授权的有效时间,但是授权时间可以自行设置,因此这取决于使用 Permit2 标准的各类 Dapp。

总结

Uniswap 推出的 Permit2 协议确实在一定程度上让用户授权这个行为更加方便,节约 Gas,可以在 Permit2 合约中集中管理授权,但它也增加了用户被钓鱼攻击的风险。

免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:Eocene Research_ZH,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1691122584.html

下一篇:

长推:十天狂吸8w+粉丝,OrdiSat发生了什么?

项目方使用捐赠的名义方式发售。

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5