追踪交易中的资产流向

结合 Balance Changes、Token Flow 和 Execution Trace,用精确金额还原资产路径与最终净变化。

案例目标

回答谁的资产最终增加或减少、资产经过哪些合约,以及每次关键转移由哪次调用触发。

示例交易与背景

本例分析一笔包含闪电贷、Token 往返、WETH 解包和 ETH 分配的 Ethereum 交易:

0xbdec39a74e620fc624f90483aff067b17044f81138e6c30038daf7f873159db4

在 Skylens 中打开交易

主要地址包括执行合约 0x64dc84...5999、池 0x58e278...e163、质押合约 0x444156...1423、交易发起人 0x269ff4...f46c 和费用接收方 0x952222...afe5

预期回答的问题

  1. 池借出和收回了多少 XPEPE?
  2. WETH 在哪里被解包成 ETH?
  3. 解包后的 ETH 最终分配给了谁?

分析步骤

  1. Balance Changes 记录各地址的最终净变化,不把中间往返重复计算。
  2. Token Flow 中按 Token 和方向追踪路径;打开 Raws 核对未经聚合的原始数量。
  3. Execution Trace 中搜索 WETH、池和执行合约地址,验证 flashstakewithdrawAllswapwithdraw 的先后顺序。
  4. 对关键边逐项核对调用参数、Token decimals 和 Trace 编号。
  5. 检查所有入口、出口是否能解释 Balance Changes 的净结果。

关键证据

Trace资产路径原始数量格式化数量
39池 → 执行合约,XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
70执行合约 → 质押合约,XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
100质押合约 → 执行合约,XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
486执行合约 → 池,XPEPE199373286778715393708823565786199,373,286,778.715393708823565786 XPEPE
610–616池/WETH → 执行合约680568466516036487 wei0.680568466516036487 ETH
618执行合约 → 费用接收方1000000000000000 wei0.001 ETH
619执行合约 → 交易发起人679568466516036487 wei0.679568466516036487 ETH

最后两笔 ETH 转出之和正好等于解包金额:

0.001 + 0.679568466516036487 = 0.680568466516036487 ETH

这项守恒检查把 Token Flow 的视觉路径、Execution Trace 的执行顺序和最终余额结果连接在一起。

案例结论

执行合约先通过池获得 XPEPE,在质押合约中完成一次往返,随后向池返还更多 XPEPE。池向执行合约输出 0.680568466516036487 WETH,该资产被解包后分成 0.001 ETH 费用和 0.679568466516036487 ETH 发起人收入。两笔输出与解包金额完全相等。

注意事项

  • Event 由合约主动发出,异常 Token 的日志可能与真实余额不一致。
  • Token Flow 展示路径,不自动判断获利、损失或攻击行为。
  • 大额原始数值必须结合 Token decimals 格式化。
  • mint、burn、wrap、unwrap 和已回滚的内部转移需要单独归类。

相关文档