IDEX consists of a smart contract, a trading engine, and a transaction processing arbiter. The smart contract is responsible for trustlessly storing all assets and executing trade settlement, and all trades must be authorized by the user’s private keys.
However, unlike other decentralized exchanges, the IDEX smart contract is designed such that only the exchange is authorized to submit signed trades to Ethereum. This enables IDEX to control the order in which transactions are processed, separating the act of trading from final settlement. As users trade their exchange balances are updated in real-time, while simultaneously their private keys are used to authorize the trade in the contract. This authorization prevents users from rescinding any completed trades, and prevents IDEX from initiating any unauthorized trades.
Authorized transactions are passed to the arbiter which manages the queue of pending transactions, dispatching them in sequence to ensure that each trade is mined in the correct order and that the smart contract balances stay in synch with the exchange balances. By controlling the transaction sequence, IDEX provides the speed and user experience of centralized exchanges combined with the security and auditability of decentralized exchanges.
More detailed information on how IDEX works can be found in our whitepaper.