Inconsistent states when transactions fail since the state is already updated before the transaction failure. The transaction will not revert in some situations.
The contract only has three states, which doesn't account for:
Transaction processing states
Error states
Dispute resolution
Temporary holds
Cancellations
Current possible transitions are limited to:
[Non-existent] -> Listed -> Sold
This creates several problems:
No way to pause a listing
No way to handle failed transactions
No way to dispute a sale
No way to cancel a listing
No way to handle partial payments
Status is updated before transfers complete. There is No way to revert status if transfers fail. This could leave asset in inconsistent state. When the transfer fails the buyer will receive the asset but the seller will not receive their money which is a loss for the seller.
Inconsistent states due to lack of atomicity
Manual Review
Create atomic operations so that when transfers or transactions fail, status would revert. Also it would be good to Enhance the Status Enum with other states as listed above.
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.