The contract uses block.timestamp to determine whether an order has expired. While this is a common pattern, the value of block.timestamp can be manipulated slightly by miners (usually by ±15 seconds). This small window can impact precision-critical expiry logic—such as order fills or amendments close to the deadline.
Affected Functions:
Likelihood:
Miner manipulation of block.timestamp
is real but constrained:
Miners can only set it within a small window (~±15 seconds).
Requires block production control — unlikely for most users, but possible for MEV-aware miners or bots.
If expiry windows are very tight, this issue becomes more likely to affect behavior.
Impact:
A malicious or incentivized miner could manipulate timestamp to:
Force early order expiration.
Delay expiry to allow unauthorized or delayed purchases.
Causes fragility around expiration boundaries.
Unreliable in environments where seconds matter (e.g., auctions, arbitrage, high-frequency DEXs).
Add a grace buffer (e.g., allow deadline + 15s margin).
Optionally use block.number with estimated time for greater consistency.
If strict expiry is acceptable, document this edge behavior clearly for users.
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.