Order types
In one paragraph: Every Trion order is a limit order with a price you sign. What varies is how long it may wait (time-in-force), whether it may take liquidity (post-only), whether it may grow your position (reduce-only), and how you take it back (cancel versus hard revocation). There are no market orders; an IOC order with a wide limit is the closest equivalent, and it still respects the price band.
Time-in-force
| TIF | Behaviour | Typical use |
|---|---|---|
| GTC (Good-Till-Cancelled) | Fills what it can, rests the remainder on the book until filled, cancelled, expired or revoked | Providing liquidity, patient entries |
| IOC (Immediate-Or-Cancel) | Fills what it can right now against resting orders; the rest is terminated on chain, including a zero-fill attempt | Taking liquidity, closing quickly |
| FOK (Fill-Or-Kill) | Fills the entire signed quantity inside one settlement transaction or fills nothing and pays no fee | All-or-nothing sizing |
An FOK that would need more than 100 fills is rejected, not split. Every signed order also has an expiry; the web app defaults to 24 hours, which is a frontend choice, not a contract limit.
Flags
Post-only. The order may only rest. If it would cross the spread and take, it is rejected. The contract proves this by requiring the order to have rested (restedSeq > 0) before any taker that hits it was accepted. Use it when you want the maker rebate and never the taker fee.
Reduce-only. The order may only shrink your position. If your position is smaller than the order at settlement time, the excess is clipped and terminated; it can never flip you from long to short. Reduce-only orders need no additional margin. Use it for exits and stop-losses so a stale order cannot open a new position.
Only these two flag bits exist; any other bit is rejected.
Self-trade protection
If your own order would match against your own resting order, the resting one is expired instead, with no fee and no trade printed.
Price bands
Every fill must be within ±3% of the index I. An order with a limit outside the band can rest but will not execute until I moves. This applies to advanced-order children too.
Cancelling versus revoking
| Action | What it does | Where |
|---|---|---|
| Cancel (soft) | Asks the matcher to drop the order; you sign a short cancel message and the matcher removes the order from its book only. Shows CANCEL_PENDING until acknowledged. It does not revoke your signature on chain. The on-chain alternative is OrdersV2.cancel, which authenticates you as the order's trader and works even before the matcher has seen the order. | Matcher (local) or chain |
| Advance strategy epoch | Invalidates every signed order under one strategy ID at once | On chain |
| Advance account epoch (hard revocation) | Invalidates every order and strategy you have ever signed with the old epoch. Cannot be undone; you sign new orders with the new epoch. | On chain |
Hard revocation is your protection if the matcher is down, censoring you, or holding orders you no longer want. It does not need the matcher's cooperation and works during a halt. The web app shows PENDING REVOCATION until the transaction is mined, then REVOKED.
Worked example (hypothetical)
You are long 10 CT CMPT at $2.60. You place a reduce-only GTC sell for 10 CT at $2.70. Later you also sell 4 CT at market via IOC. When the resting sell finally matches, only 6 CT remain to close; the other 4 CT are clipped and terminated rather than opening a 4 CT short.
Risk caveat
A resting order is a standing authorization. If you close your browser, the order stays live until its expiry, cancellation or revocation. Matching in the engine is not final; only the confirmed batch is. See Perpetuals.
Source trail: docs/spec/V2_ARCHITECTURE.md §3.2 (enums: tif, flags, terminal reasons), §3.5 steps 4–6; overdrive/perps/src/v2/OrdersV2.sol (cancel, advanceStrategyEpoch, advanceAccountEpoch, post-only check); overdrive/perps/src/v2/BatchDecoderV2.sol (MAX_FILLS).
Repository-owned documentation · September 2026 · Educational material, not investment advice and not an audit.
Documentation
V2 · Live on Robinhood Chain