The BidBeastsNFTMarket contract emits an AuctionSettled event inside the placeBid() function, even though the auction has not ended and the NFT has not been transferred to the winner.
Likelihood: High
Every time placeBid() is called, the contract always emits AuctionSettled prematurely.
No conditions or access control prevent this — any bidder can trigger it.
Easy to reproduce on any listed NFT, making it highly likely to occur in practice.
Impact: Medium
Misleads off-chain services, UIs, and analytics about the auction state.
Could cause confusion for users about winners and final prices.
Does not directly allow theft of funds (the NFT and payout logic in _executeSale() remain intact), but damages trust and can lead to incorrect front-end behavior.
The test fails on the current contract because AuctionSettled is emitted during placeBid(), proving the bug exists.
Remove the emit AuctionSettled line from placeBid().
Only emit AuctionSettled inside _executeSale(), after the NFT transfer and payout logic completes.
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.