In _beforeSwap, events use:
However, in Uniswap V4, sender is not the user.
For swaps involving native ETH (or via router):
msg.sender = router
sender (param) = router
actual user = tx.origin or msg.sender of router
Result:
Events show the router as the entity that bought/sold ReFi, not the real user.
This breaks:
analytics
aggregators
reward/points systems
anti-bot/trading rules
user-facing dashboards
User swaps through SwapRouter, but every event shows:
This is incorrect and hides real trading behavior.
Completely incorrect user trading data
Misapplied rebates or rewards
Trading volume appears massively skewed toward router
Impossible to track real traders
Attackers can exploit router abstraction to:
bypass anti-whale limits
avoid volume tracking
cheat volume-based rewards
This is a serious problem for any protocol attaching economics or analytics to events.
Result:
sender in event = router
Correct should be = user
Use the correct user address.
When using a router-based pattern:
Replace:
With:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.