The contract is intended to have a maximum auction duration of 3 days, as mentioned in the contest details:
The contract also supports:
Auction deadline of exactly 3 days.
(Rest of the details...)
Weirdly enough, there's no such logic in the contract that enforces this 3-day auction deadline. The only time-related logic present is the auction extension duration of 15 minutes (checkout BidBeastsNFTMarketPlace::S_AUCTION_EXTENSION_DURATION).
Subsequent bids placed within the final 15 minutes of the auction extend the duration by an additional 15 minutes, potentially allowing the auction to continue indefinitely as long as new bids are placed within this window and the seller does not invoke takeHighestBid to settle early.
This deviation from the specified 3-day duration creates an issue where auctions may end prematurely after just 15 minutes if no further bids are placed, allowing a bidder to settle the auction via settleAuction at a potentially low price. This scenario undermines price discovery and user trust in the platform.
Likelihood: Medium
Every auction starts with a 15-minute duration and may end prematurely if bidding is sparse, deviating from the 3-day requirement.
Impact: High/Medium
Economic Loss: Sellers get significantly less price discovery (15 minutes vs 3 days)
Market Failure: Auctions can't serve their purpose of finding a fair market value
Specification Violation: Contract doesn't meet its own stated requirements, a complete deviation from documented behaviour
User Trust: Undermines confidence in the platform
Add the following test test_PrematureAuctionSettlement in the test file:
Run the above test using the command:
There are two ways to mitigate this issue. The protocol can choose any one of them, as it's a matter of preference how they want their auctions to be run:
Enforce the 3-day auction deadline, while preventing sniping (Recommended): It's better to implement a hybrid model, set a fixed 3-day deadline on the first bid, then allow 15-minute extensions only for bids placed in the final 15 minutes of the current deadline. This ensures auctions last at least 3 days (preventing premature settlement) and extends only as needed for fairness, potentially going beyond 3 days in competitive cases, and thus preventing sniping.
Update the documentation to reflect the actual behaviour: If the protocol prefers to keep the auction duration as it is, they should update their documentation and contest details to accurately represent the 15-minute auction extension logic. This ensures that users are well-informed about the auction mechanics and can adjust their bidding strategies accordingly.
Documentation for BidBeasts Marketplace is incomplete or inaccurate, potentially leading to misconfigurations or security misunderstandings.
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.