Trace Asset Flows Through a Transaction

Combine Balance Changes, Token Flow, and Execution Trace to reconstruct asset paths and final net changes with exact amounts.

Case objective

Identify whose assets increased or decreased, which contracts the assets passed through, and which calls triggered the critical transfers.

Example transaction and context

This Ethereum transaction combines a flash loan, token round trips, WETH unwrapping, and ETH distribution:

0xbdec39a74e620fc624f90483aff067b17044f81138e6c30038daf7f873159db4

Open the transaction in Skylens

Key participants include executor 0x64dc84...5999, pool 0x58e278...e163, staker 0x444156...1423, sender 0x269ff4...f46c, and fee recipient 0x952222...afe5.

Questions to answer

  1. How much XPEPE did the pool send and receive?
  2. Where was WETH unwrapped into ETH?
  3. Who received the unwrapped ETH?

Investigation steps

  1. Start in Balance Changes and record each address's final net change without double-counting intermediate round trips.
  2. In Token Flow, follow each token and direction. Open Raws to verify unaggregated amounts.
  3. In Execution Trace, search the WETH, pool, and executor addresses to establish the order of flash, stake, withdrawAll, swap, and withdraw.
  4. For every critical edge, verify call parameters, token decimals, and the trace index.
  5. Confirm that all inputs and outputs explain the net Balance Changes.

Key evidence

TraceAsset pathRaw amountFormatted amount
39Pool → executor, XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
70Executor → staker, XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
100Staker → executor, XPEPE4949828677916744850334411363149,498,286,779.167448503344113631 XPEPE
486Executor → pool, XPEPE199373286778715393708823565786199,373,286,778.715393708823565786 XPEPE
610–616Pool/WETH → executor680568466516036487 wei0.680568466516036487 ETH
618Executor → fee recipient1000000000000000 wei0.001 ETH
619Executor → sender679568466516036487 wei0.679568466516036487 ETH

The final two ETH transfers add up exactly to the unwrapped amount:

0.001 + 0.679568466516036487 = 0.680568466516036487 ETH

This conservation check connects the visual Token Flow, the execution order in Execution Trace, and the final balance result.

Conclusion

The executor borrowed XPEPE from the pool, completed a round trip through the staking contract, and returned more XPEPE to the pool. The pool delivered 0.680568466516036487 WETH, which was unwrapped and split into a 0.001 ETH fee and 0.679568466516036487 ETH for the sender. The two outputs exactly equal the unwrapped amount.

Caveats

  • Contracts emit events themselves; a nonstandard token can log values that disagree with actual balances.
  • Token Flow shows movement, but does not label profit, loss, or malicious behavior.
  • Always apply token decimals to large raw values.
  • Classify mints, burns, wraps, unwraps, and reverted internal transfers separately.