The issue lies in the lack of checking round during a purchase.
Assume asset A is listed to Bob at round 1. Now at round 3, bob can purchase the same asset by using the following steps:
Bob calls the oraclePurchaseRequest
function, and the oracle responds with the asset listed at round 1
Now bob calls the purchase
function to purchase the asset. Note the round
is not checked anywher to ensure that an old asset is not being bought(Only the phase is being checked):
Note that using this method, Bob could frontrun the relisting of an asset, thus blocking the seller from relisting.
Manual
Make sure that the asset is listed in the same round as the buyer currently is in.
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.