Bid Beasts

First Flight #49
Beginner FriendlyFoundrySolidityNFT
100 EXP
View results
Submission Details
Severity: low
Valid

Misleading event when placing bid

Misleading event when placing bid

Description

The protocol emits AuctionSettled every time a bid is placed which is a misleading event for 3rd parties listening to.

Risk

Likelihood: High

Every time a bid is placed the event is emitted

Impact: Low

It can mess up the data of 3rd party integrations

Proof of Concept

The following test case demonstrates the event emission

function test_anyone_can_bid_for_listed_item() public {
vm.prank(PROTOCOL_OWNER);
nft.mint(SELLER);
vm.startPrank(SELLER);
nft.approve(address(market), 0);
vm.expectEmit(true, true, true, true);
emit NftListed(0, SELLER, MIN_PRICE + 1, 0);
market.listNFT(0, MIN_PRICE + 1, 0);
vm.stopPrank();
assertEq(nft.ownerOf(0), address(market));
BidBeastsNFTMarket.Listing memory listing = market.getListing(0);
assertEq(listing.listed, true);
assertEq(listing.seller, SELLER);
assertEq(listing.minPrice, MIN_PRICE + 1);
assertEq(listing.buyNowPrice, 0);
assertEq(listing.auctionEnd, 0);
vm.warp(1 days);
vm.startPrank(BIDDER_1);
vm.expectEmit(true, true, true, true);
@> emit AuctionSettled(0, BIDDER_1, SELLER, MIN_PRICE + 2);
vm.expectEmit(true, true, false, false);
emit AuctionExtended(0, 1 days + 15 minutes);
vm.expectEmit(true, true, true, false);
emit BidPlaced(0, BIDDER_1, MIN_PRICE + 2);
market.placeBid{value: MIN_PRICE + 2}(0);
vm.stopPrank();
listing = market.getListing(0);
assertEq(listing.listed, true);
assertEq(listing.seller, SELLER);
assertEq(listing.minPrice, MIN_PRICE + 1);
assertEq(listing.buyNowPrice, 0);
assertEq(listing.auctionEnd, 1 days + 15 minutes);
BidBeastsNFTMarket.Bid memory bid = market.getHighestBid(0);
assertEq(bid.bidder, BIDDER_1);
assertEq(bid.amount, MIN_PRICE + 2);
}

Recommended Mitigation

The event is redudant in the bidding flow, so it can be removed

...
require(msg.sender != previousBidder, "Already highest bidder");
-emit AuctionSettled(tokenId, msg.sender, listing.seller, msg.value);
...
Updates

Lead Judging Commences

cryptoghost Lead Judge about 1 month ago
Submission Judgement Published
Validated
Assigned finding tags:

BidBeasts Marketplace: Incorrect Event Emission

placeBid emits AuctionSettled even though the auction hasn’t ended, causing misleading event logs.

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.