Normal Behavior:
The amendSellOrder() function allows sellers to update their order’s amount, price, and deadline. Each amendment resets the deadline to a new timestamp (block.timestamp + duration) provided it’s within the MAX_DEADLINE_DURATION of 3 days.
Specific Issue:
There is no restriction on total lifetime of an order. Sellers can continually call amendSellOrder() just before the order expires to extend the deadline indefinitely, keeping stale orders on-chain forever. This creates a denial-of-cleanup problem and allows the on-chain order book to be filled with near-permanent spam.
Likelihood:
This behavior occurs every time a seller chooses to keep extending their order, which is common in slow markets.
There is no built-in limit, cooldown, or lifetime cap, so repeated amendments are trivial and expected over long durations.
Impact:
Stale or low-quality orders can linger forever in the order book, impacting UX and indexing tools.
Attackers can spam orders that never expire, bloating the contract state and potentially increasing storage/gas costs over time.
This creates a pseudo-permanent order that never expires, defeating the purpose of a deadline system.
Additional changes
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.