Engine Services

In this section, we are going to expand on Engine Services and the micro-services involved. The following schematic illustrates the micro-services and their mutual relations.

Micro-services providing the Engine's off-chain web services

Micro-services providing the Engine's off-chain web services

Note that all gray components are considered external to the Engine Services and will be expanded and explained in the following sections. The following subcomponents can be seen in the illustration above: Engine Web Services: It exposes the Agora Engine Services over RESTful API and through websocket sessions to deliver real-time data to clients. Using these services, one broker or administrative user can query market data or create/cancel different orders. Engine Web Services consult the A3 Provider component to ensure the broker session is valid and can be served.

Market Data Indexers: As the name implies, these processes constantly read blockchain data (including orders and trades fetched from on-chain engine contracts) and index them inside the Market Data Store. These indexed sorted data can be later queried and used in various parts of the system and serve incoming broker's requests to fetch different market data. Apache Cassandra is going to be used as the main technology driving this component that offers fast writes and queries while maintaining a highly available fault-tolerant distributed architecture.

Blockchain Transactors: These processes are the gateways to interact with the Operating EVM Blockchain. They receive unsigned blockchain transactions, consult the Broker Manager to securely sign the transaction using the broker's private key, and publish it to the target network. Every broker receives a dedicated random private key as part of its boarding phase.