钱包弹出一个批量交易签名请求,里面塞了三个调用,但你只看到一行汇总数字。如果你直接点了确认,你是在拿钱包里所有资产的权限,赌这堆代码里没藏东西。
实际上,MetaMask 的批量交易(EIP-5792)会把多个独立交易打包成一个"原子操作"——要么全成,要么全失败。用户只需要确认一次。这一"确认",等于同时批准了多个独立的链上操作,每一个都可能涉及不同的合约和不同的资产授权。
最小可行步骤
[做什么]:在确认签名之前,把批量交易里的每一个调用(call)逐个拆开看清楚。
[怎么做],按顺序操作:
第一步:展开"调用列表"
当你看到批量交易请求时,不要直接点"确认"。在 MetaMask 或其他支持 EIP-5792 的钱包签名界面里,找到并点击 "查看详情"、"查看交易数据" 或 "Hex Data" 旁边的下拉箭头。
完成标准:签名请求从一行汇总信息展开成一个列表,里面列出了"Call 1"、"Call 2"、"Call 3"……或者显示多个"地址"和"方法"(Method)字段。
第二步:逐个核对"地址"和"方法"
在展开的调用列表里,你不需要看懂每一串 calldata,但至少要点开看这两个字段:
"方法"(Method):这个调用的目标是什么。如果是
approve,说明这个调用是在授权 DApp 用你的代币;如果是transfer,说明是在转账;如果是claim,可能是领奖;如果是multicall,说明里面可能还嵌套了更多操作。"目标地址"(To):这个调用指向哪个合约。如果地址是你正在交互的官方协议地址,风险相对可控;如果是一串完全不认识的地址,需要高度警惕。
第三步:确认批量交易的"原子性"
在签名前,确认这笔批量交易是否"原子执行"。原子执行意味着如果其中任意一个调用失败,整个批次都会回滚,不会出现"只执行了其中几个"的情况。如果有某个调用卡住,整笔交易都会报错,不会让资金卡在中间状态。
完成标准:你能说出这笔批量交易包含 N 个调用,并且确认它是全量执行的(要么全成功,要么全失败)。
失败排查
情况 A:签名界面里没有"展开"按钮
部分老旧版本的钱包不支持 EIP-5792 的详细调用解析。这种钱包还在用"一笔交易一个签名"的老逻辑,如果遇到需要多次确认的场景,它是拆成多个弹窗的,反而能给你逐一审核的机会。如果是在手机端遇到无法展开的情况,考虑切换到桌面端钱包操作,或者升级到最新版。
情况 B:方法显示为 0x、transfer 或 claim 但不明确
如果方法字段显示的是 transfer 或者看不懂的哈希,可以复制"目标地址"(To)到 Etherscan 搜索,看这个合约的公开标签是什么。如果是公认的 DeFi 协议地址,通常会有标记;如果显示"未验证",说明该合约代码未公开,风险较高。
情况 C:包含 approve + swap 的组合
如果批量交易里有 approve 又有 swap,这是常见的"授权+兑换"两步操作。关键看 approve 的授权额度是"无限"(type(uint256).max)还是具体数值。如果是"无限",意味着该合约可以无限制动用你的代币,需要特别小心。
验证收尾
完成核对后,如果所有调用的目标地址都是你信任的协议,且没有异常的"无限授权",你可以放心点"确认"签名。之后这笔交易会作为一笔链上交易被打包,在区块浏览器上你能看到它占用了你钱包的 1 个 nonce,而不是多个。
操作完成的校验方式: 签名并广播后,在区块浏览器输入你钱包地址,找到这笔交易的详情,在"Internal Transactions"或"Calls"列表中,能看到多个调用被合并在同一笔交易哈希下执行。如果查看链上状态,这笔批量交易仅扣除了 1 次 Gas 费,并作为一个原子操作完成。



