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.