The multiplier can be zero, which will result in no one being able to withdraw the auction token.
If tokens with low decimals, such as USDC/USDT (6 decimals) or Gemini USD (https://etherscan.io/token/0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd, which has 2 decimals, are used in the auction, it is possible for the multiplier to be zero. It's important to note that these tokens are fully compatible with ERC20 and are popular in use. On line https://github.com/Cyfrin/2024-08-fjord/blob/main/src/FjordAuction.sol#L197, the code multiplier = totalTokens.mul(PRECISION_18).div(totalBids); is found.
Let's say the auction token is GeminiUSD, and the totalBids (representing the number of points users used in the auction) is greater than the token amount by 10**2 + 1 wei, then the multiplier will be equal to zero. This situation is quite possible because the supply of points is large and can be increased by the owner. If the multiplier is zero, then on line https://github.com/Cyfrin/2024-08-fjord/blob/main/src/FjordAuction.sol#L217, claimable will always be zero.
Below is a test confirming the calculations. Add it to the units folder if you want to run it.
Auction tokens are locked forever. FjordPoints lost.
Manual review.
Remove the multiplier from the FjordAuction contract and calculate claimable on line https://github.com/Cyfrin/2024-08-fjord/blob/main/src/FjordAuction.sol#L217 using the formula:
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.