The issue of double precision loss occurs when calculating the protocol. This could result in letting some ether dust accumulate over time in the contract. Whereas there isn't a withdrawal mechanism to get the leftover calculation dust.
The vulnerability code:
For a price of 0.8 ETH (0.8 * 1e18 wei):
fee = (0.823 * 1e18) / 100 = 0.008 * 1e18 wei
sellerFee = (0.008* 1e18) / 2 = 0.004 * 1e18 wei
Each division lose precision in wei values
To fix this:
Calculate fees using multiplication first:
Add a withdrawal mechanism to clear dust for the contract.
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.