Just-in-Time (JIT) Auctions FAQ
- Tutorial on how to run JIT trading bot
- Drift Developer Docs (opens in a new tab)
- Dune Dashboard (opens in a new tab)
- Typescript (opens in a new tab)
- Python (opens in a new tab)
For Takers, the main benefit of the JIT auction is that liquidity can be much deeper compared to an AMM. Liquidity on the JIT isn't constrained by how much virtual liquidity is available for a user; it is determined by the liquidity provided by external Makers in each auction. Users have the opportunity for much better price improvement compared to a liquidity-constrained AMM.
For Makers, the JIT auction provides an easy way to access on-chain taker flow for market making operations. Unlike an on-chain CLOB where the set-up cost, ongoing infrastructural costs, and the possibility for latency arbitrage are high, market making on the JIT is a simple, competitive auction fill mechanism, reducing the barrier for entry for making on-chain.
Makers will also earn a rebate for filling taker orders.
The auction mechanism is highly parallelized for maximum exchange throughput.
Takers can initiate multiple auctions, up to the number of order slots (currently 32).
Makers can participate in as many auctions as they like (since their order is completed atomically).
Additionally, on a per-exchange level, there is no limit to the total amount of ongoing auctions happening at once.
Yes, auctions can be partially filled up to a user's slippage tolerance. There are no Fill-or-Kill (FOK) auctions.
Yes, users can cancel the unfilled portion of their order in the auction once they've been initiated. Users will need to pay a network fee in SOL to cancel their ongoing auction, as well as a nominal fee to keepers of $0.01 USDC.
Once an order is partially filled, Makers are unable able to pull out of an auction. Fills are confirmed when the Maker submits a fill on a first-come-first-serve basis.
No, there is no limit. Makers can enter multiple auctions at once to cancel out their exposure.
Not at the moment. Market orders all go through the JIT auction. Users can opt to place a limit order instead if the user wishes to be matched with another order via the DLOB.
No, limit orders are not filled via the JIT auction. Limit orders specify a single price point and will be matched against other limit orders or the AMM on the decentralised limit orderbook (DLOB).
Yes. Each user will have a different account and each taker order placed will go through its own JIT auction.
Exclusive of slippage and fees, the UI will display the price that the Taker will be filled at if they were to be filled against the AMM. This is the worst possible price the Taker can receive. Any Maker that steps in via the JIT auction can only provide the Taker with a better price.
You can read docs here (Just-In-Time (JIT) Auctions) as well as read through an example trading bot ().
Yes, it is the same model. Liquidations will be market orders that will also route through the JIT auction mechanism.
Yes. We've developed an open-source maker bot that can be accessed here.
We built an event emitter on Solana. Makers can listen to the event emitter for whenever there's a taker order. Makers can then bid to fill the order.
Each new Taker order commences a new dutch auction. Dutch auctions are on a first-come-first-serve basis.
Yes. Makers can fill a subset of Taker orders. The remainder will either be filled by other Makers or be filled by the AMM.
DLOB liquidity and JIT liquidity aren't mutually exclusive. The DLOB setup is designed with two separate actors: fillers and makers. Makers post orders and fillers will match orders.
JIT mechanism enables the Maker to be their own filler. The Maker will submit the match with someone going through an auction (e.g. user who submitted a market order).