The cancelSellOrder function allows the original seller to cancel an active order and reclaim their locked collateral.
However, this function is restricted exclusively to the order.seller. If an order expires and the seller's account becomes permanently inaccessible (e.g., due to lost private keys or a bug in a contract-based seller), there is no alternative mechanism for anyone to cancel the order. This results in the underlying collateral being permanently locked within the contract.
Likelihood:
This occurs if the seller's account becomes permanently inaccessible due to events like private key loss or a bug in a contract-based seller.
Impact:
The seller's collateral for the expired order will be permanently and irrecoverably lost.
The protocol accumulates unresolvable "zombie" orders on-chain, which can lead to state bloat.
Add a separate, public-facing function that can only be called after a significant grace period has passed since the order's expiry. This ensures funds can be recovered without introducing new risks.
By design only `seller` can call `cancelSellOrder()` on their `order`. But when an `order` expires, and the `seller` doesn't have access to the protocol, the expired `order `should be be able to be cancelled by an `admin`.
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.