Since buyer decides who is the arbiter, arbiter and buyer can always collude to grief seller. Buyer can always set himself as arbiter or address that he is colluding with and grief seller's payment even when his services were satisfactory.
Consider the scenario where buyer delays payment after an audit, and so seller calls initiateDispute()
. However, since arbiter is buyer himself or another address that is colluding with buyer, they can simply set totalFee
to be equal to originally deposited token and transfer all funds back to themselves, resulting in seller losing payment for his services.
Manual Analysis
Instead of allowing buyer to decide on arbiter, arbiter should be a fixed/whitelisted trusted address of a codeHawks staff member, who is impartial. This should be combined with the recommendation suggested in [M-01], where a fixed percentage fee should be assigned to arbiter if ever needed to resolve a dispute instead of allowing buyer to decide on value of i_arbiterFee
.
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.