The AuctionSettled event should be emitted only if the auction is settled and the NFT is unlisted, as in _executeSale()
However, the placeBid() function emits the AuctionSettled event before the bid logic, which is wrong and confusing
Indexers may see a sequence of an auction's event like: settled -> extended -> settled (shown in PoC)
Likelihood: High
It always triggers when placeBid() is called
Emission happens unconditionally before bid logic, so any bid reproduces it
Impact: Medium
Misleading state
Event sequence inconsistency: Seeing two AuctionSettled events in one auction (one false, one real) breaks downstream assumptions of monotonic auction states, making integration unreliable and debugging costly.
Automation errors: Off-chain processes triggered by AuctionSettled may run too early.
Data corruption: Trading volume, fee, and royalty analytics may double-count or mis-record transactions.
Add the following test, then run this command: forge test --match-test test_catch_AuctionSettled_event
Directly remove the AuctionSettled event emission inside the placeBid(), only emit it if the auction is settled (i.e., inside _executeSale()).
placeBid emits AuctionSettled even though the auction hasn’t ended, causing misleading event logs.
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.