OPS-262 · imToken QA fixture

Permit / Permit2 风险提示测试 DApp

默认用例只发起 typed-data 签名请求,不广播、不改变授权。标记“链上交易”的按钮会在浏览器二次确认后才交给钱包。

1. 连接与测试参数

请使用专用测试钱包,并切换到 Ethereum Mainnet。

当前账户
未连接
当前网络
未知
USDC
DAI
Permit2
  1. 在 imToken staging build 的 DApp 浏览器打开本页并连接专用测试钱包。
  2. 确认网络显示 eip155:1 Ethereum Mainnet。
  3. 普通用例保持“正常 EOA”;黑名单用例填入 fixture 后切换为“黑名单 spender”。
  4. 点击单个用例;在钱包 Preview 检查地址、金额、风险文案和阻断行为,然后取消或签名。
  5. 返回页面复制 JSON 证据,并记录 App build、平台、截图/录屏和实际结果。

2. ERC-2612 Permit(USDC)

Permit typed data · 3 cases
仅签名

P01 · 授权 1 USDC

value=1,000,000。EOA 应出现 risk_info_approve_address_eoa warning;黑名单还应出现 address_is_block 并阻断。

仅签名

P02 · 无限授权

value=uint256.max。检查无限授权展示、spender 和风险提示。

仅签名

P03 · 撤销授权

value=0。应显示撤销语义,不误报“新增 EOA 授权”风险。

3. DAI-style Permit

DAI Permit typed data · 2 cases
仅签名

P04 · allowed=true

DAI Permit 授权。正常 EOA 应提示 warning;黑名单应附加阻断风险。

仅签名

P05 · allowed=false

DAI Permit 撤销。应显示撤销语义,不误报授权风险。

4. Permit2

PermitSingle · 3 cases
仅签名

P06 · Single 1 USDC

amount=1,000,000。检查 token、spender、expiration、warning/阻断。

仅签名

P07 · Single uint160.max

Permit2 最大授权,Preview 应明确无限/超大金额和风险。

仅签名

P08 · Single amount=0

撤销语义,不应误报新增授权风险。

PermitBatch · 2 cases
仅签名

P09 · Batch 混合金额

第一项 USDC=0,第二项 DAI=1。风险必须绑定第二项和同一 spender,不能因首项为 0 漏判。

仅签名

P10 · Batch 全部为 0

USDC=0、DAI=0。整体应按撤销处理,不误报新增授权风险。

5. 反向与解析对照

不应进入 Approve 风险链路 · 2 cases
仅签名

N01 · 非 Permit typed data

primaryType=Mail,包含普通文本。不得识别为授权或展示 EOA Approve 风险。

只读

N02 · 检查 spender code

读取当前 spender 的 bytecode。正常地址应为 0x;若不是,不能用于 EOA 用例。

6. 普通 Approve 链上对照

以下会生成真实 Ethereum Mainnet 交易并消耗 gas。无需验证时不要执行;浏览器会先二次确认。

链上操作 · 3 cases
链上交易

T01 · USDC approve 1

普通 Approve 正向对照,spender 风险提示不得回退。

链上交易

T02 · USDC approve 0

撤销普通 Approve,对应 allowance 归零。

只读

T03 · 查询 allowance

查询当前账户对所选 spender 的 USDC allowance,不产生交易。

7. QA 证据

尚未执行用例