Description: The EggVault::withdrawEgg
function emits an event after making an external call, which could lead to off-chain desynchronization. If the call fails but the event still gets emitted (e.g., due to low-level call not reverting properly or fallback behaviors), indexers like The Graph or any backend that listens to events might assume the transaction succeeded, while it didn’t.
Impact: Incorrect off-chain state or user balance tracking, UI bugs, or even false confirmations to users.
Proof of Concept:
Recommended Mitigation:
emit the event before external call:
use nonReentrant
modifier from ReentrancyGuard.sol
from "Openzeppelin".
Standard practice for clarifying important contract behaviors
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.