Finex trading engine
Finex is the high performance trading engine of the OpenDAX crypto exchange software stack. It's written in go language to reach a very high throughput of orders and trades.
The Finex API is a REST and websocket server written in go language to get high performance at a very low memory footprint. The Finex API server is fully scalable to handle as much connections and request as needed by the platform.
The Finex engine is the core component of the trading platform. It accepts or rejects orders, adding them to markets orderbook, it processes trades when orders match and finally store the results to the database. It's responsible of preventing users to spend more fund than their available balance.
Bulk order and bulk cancel orders
This feature can be enabled for specific user role, for example it can be accessible to market makers only. It allows those users to create or cancel multiple orders at once. This gives the ability to market makers to renew their offer more quickly and not be limited by the regular rate limiter.
Post-Only order is a specific limit order that ensure the order won't be added to the orderbook, the order will be fully matched or fully canceled.
Api Rate limit
Finex contains a customizable rate limiter, different rate limits can be applied for orders creation depending on users role. A rate limit can be configured on every API server to protect against DDOS and an other limit can be configured on the trading engine level.
When a rate limit is reached on a HTTP server, it returns the response code "429 Too Many Requests".
Bi-directional websocket API
Finex API provides a bi-directional websocket API server, allowing the users and bots to create and cancel orders through this channel and be notified about trades in real time.