区块浏览器里的内部交易怎么查?ETH 转账和代币转账的区别 图 1
区块浏览器里的内部交易怎么查?ETH 转账和代币转账的区别 · 图 1

一笔转账为什么会出现多条记录

你在交易所或钱包里发起一次代币转账,区块浏览器里却可能看到好几条相互关联的记录:一条主交易,下面挂着”内部交易”(Internal Transaction)。很多人以为多出来的是重复扣款或额外转账,其实它们描述的是同一笔交易在不同层面的动作。要读懂这些记录,先要分清以太坊上”转账”的两种形态。

第一种是原生币转账:直接把 ETH 从你的地址转给对方,转账动作由协议本身完成,主交易详情页的转币列表里就能直接看到。第二种是代币转账:ERC-20 之类的代币本质是一张记账合约里的余额表,所谓转账其实是调用合约的 transfer 函数改了表里的数字,链上并没有原生资产在移动,只有账户余额字段被改写。浏览器把这类合约内部的记账变化解析出来,单独列成内部交易,方便你按转账的直觉去理解合约调用。两种形态没有新旧之分,也没有哪种更”真实”,只是同一笔链上动作在不同层面的投影。

内部交易页能看到什么

点开主交易的内部交易标签,通常列出:调用发生的序号(对应主交易内部执行的先后次序)、发起方与接收方地址、涉及的代币合约、数量、以及调用类型。有几点值得注意:

  • 一笔 swap 可能拆出多条内部记录:你的代币转入池子、池子吐出另一种代币给你、协议费转走,各自对应记账变化。逐条看下来,资金路径一目了然。
  • 内部交易不单独收手续费,所有 gas 都记在主交易上;看到多条记录不必担心多次扣费。
  • 部分浏览器通过事后解析交易日志还原内部转账,个别非标准实现的代币可能显示不全。对不上账时,以代币合约事件日志为准。
  • 主交易的 ETH 值与内部交易里的 ETH 流转是两套口径:合约把你锁定的 ETH 转付给他人时,链上实际发生了 ETH 移动,但主交易页面的金额字段可能显示为零,需要到内部交易标签查看。

核对一笔到账时该看哪里

日常最常用的动作是确认”对方到底转没转给我”。正确姿势:拿交易哈希打开主交易页,看内部交易里有没有一条”接收方等于你的地址”的记录;再进一步,可以在区块浏览器的代币持有者页面或直接查询你的地址余额变化。只看主交易的 ETH 金额会误判——代币转账的主交易 ETH 金额常常是零,一切信息都在内部交易和事件日志里。

与事件日志的关系

内部交易是浏览器帮你”翻译”后的视图,原始依据是合约发出的事件(例如 ERC-20 的 Transfer 事件)。当浏览器显示与钱包显示冲突时,可以回到事件日志(Logs)核对:事件的 Transfer 主题、from 与 to 参数解码后即为真实转账双方。事件日志是链上原生数据,内部交易是二次加工,判断争议时优先相信前者。

三个高频误区

第一,“内部交易多等于被多扣钱”。所有手续费只在主交易的 gas 字段里体现,内部交易条目再多,扣费也只有一次。第二,“内部交易里看到自己的地址进账,就一定到账了”。若后续执行中发生回滚,主交易状态为 Failed 时内部记录同样作废,先看主交易状态再看明细。第三,“主交易 ETH 金额为零就是没转成功”。代币转账的主交易 ETH 金额通常就是零,这属于正常形态。

风险提示

本文是区块浏览器使用方法说明,不构成投资建议。不同浏览器的字段命名与解析完整度存在差异,涉及大额核对时建议交叉使用多家浏览器,并以代币合约事件日志为最终依据。