The AuctionFactory contract creates instances of the FjordAuction contract. When an auction is ended with zero bids, the auction tokens are transferred back to the owner of the auction contract. However, the AuctionFactory contract itself becomes the owner of each new FjordAuction instance, and it does not have any functions to handle or retrieve these tokens. As a result, any auction tokens transferred back when there are no bids get permanently stuck in the AuctionFactory contract.
The AuctionFactory contract is responsible for creating new instances of the FjordAuction contract. When a new auction is created, the AuctionFactory contract sets itself as the owner of the FjordAuction instance. Here’s the relevant section of the factory contract:
In the FjordAuction contract, the owner is set during initialization to the address that created the auction, i.e., the AuctionFactory:
When an auction ends with zero bids, the auction tokens are supposed to be returned to the owner, which is the AuctionFactory contract:
However, the AuctionFactory contract lacks any methods to manage or withdraw these tokens once they are transferred back to it. Consequently, the auction tokens are locked within the AuctionFactory, leading to a scenario where these tokens become irretrievable and effectively lost.
Tokens transferred back to the AuctionFactory address in zero-bid auctions remain stuck and unrecoverable.
Foundry
AuctionFactory: Add functions for the owner to retrieve tokens from the AuctionFactory contract. This would allow the recovery of any tokens that were returned due to zero bids.
An auction with 0 bids will get the `totalTokens` stuck inside the contract. Impact: High - Tokens are forever lost Likelihood - Low - Super small chances of happening, but not impossible
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.