IDEX trades happen in real time and the transactions mine afterwards. It is possible and common for trades to be dependent on other trades mining first. If one trade is slow to mine it could hold up many other trades and cause a delay in transaction processing and withdrawals. To prevent this, IDEX sets the gas price to ensure trades are able to mine in a reasonable amount of time.

For example, a user deposits IDXM, sells it for ETH, and then buys IDEX with that ETH. The IDEX buy transaction can only mine after the IDXM sell has mined. At the same time the user who sold the IDEX takes the ETH they received, initiates a purchase of REP, and then proceeds to withdraw the REP to take advantage of an arbitrage opportunity. This user must now wait for all of the preceding transactions to mine before receiving the REP tokens in their wallet.

Ultimately the problem is that there are many conflicting goals with our users. Some want fast trades, some want to withdraw asap, and others want to save as much money as possible on gas. If we allow users to broadcast with a low gas price it can cause a chain reaction that holds up other dependent transactions, hurting the UX of all traders.

Our approach is to dynamically set the dispatch price using a combination of Ethgasstation's fast setting and our own internal monitoring. We also have a feature in the works that will allow users to lower the gas price of their withdrawals significantly provided they are willing to wait.

Did this answer your question?