Bright Felt Bird
Medium
The NounsAuctionHouse
contracts calculate auction duration from creation time rather than first bid time, potentially reducing the effective auction period and impacting price discovery.
code Snippet :
https://github.com/sherlock-audit/2024-11-nounsdao/blob/main/nouns-monorepo/packages/nouns-contracts/contracts/NounsAuctionHouseV3.sol#L299
When an auction is created, the end time is immediately set based on current timestamp plus duration, regardless of when the first bid occurs. This means if the first bid comes significantly after auction creation, the remaining time for competitive bidding is reduced from the intended duration.
function _createAuction() internal {
try nouns.mint() returns (uint256 nounId) {
uint40 startTime = uint40(block.timestamp);
uint40 endTime = startTime + uint40(duration);
auctionStorage = AuctionV2({
nounId: uint96(nounId),
clientId: 0,
amount: 0,
startTime: startTime,
endTime: endTime,
bidder: payable(0),
settled: false
});
}
}
However, when an auction is created in _createAuction()
, the auction's startTime
is incorrectly initialized as uint40(block.timestamp)
instead of firstBidTime
.
No response
No response
No response
- Reduced time for competitive bidding
- Less price discovery
- Potentially lower final auction prices
- Reduced market efficiency
- Lower treasury revenue
No response
Modify auction timing to start from first bid