The FjordAuction
contract allows users to place and withdraw bids, affecting the totalBids
variable. The multiplier, which determines the amount of auction tokens each FjordPoint
converts into, is calculated based on totalBids
:
When users place bids, totalBids
increases, causing the multiplier
to decrease. Conversely, when users withdraw bids, totalBids
decreases, potentially increasing the multiplier
. This fluctuation can be exploited in the following way:
Suppose:
totalTokens
=
totalBids
=
multiplier
=
A user bids FjordPoints, increasing totalBids
to :
multiplier
=
If the user then withdraws their bid, totalBids
goes back to , but the multiplier
remains at the old value before withdrawal.
The user could now claim tokens based on the initial calculation (which might be higher than intended if other users haven’t adjusted their bids or claims).
Initial Bid Placement:
A user places a significant bid
, which increases totalBids
and reduces the multiplier
, resulting in fewer tokens per FjordPoint
.
Token Claiming:
The user claims their tokens at a reduced rate due to the lower multiplier.
Bid Withdrawal:
The user withdraws their bid, reducing totalBids
and increasing the multiplier
. If the user re-bids or claims tokens, they might benefit from a higher multiplier than initially intended.
The relevant code for bid placement and withdrawal is:
Manipulating the totalBids
by placing and withdrawing bids can lead to users claiming more tokens than they should based on their actual contribution. This discrepancy can undermine the fairness of the auction and result in an uneven distribution of tokens.
Manual
The multiplier
should be recalculated at the time of each token claim to reflect the current totalBids
.
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.