Broker Manager
The main purpose of this component is to maintain a broker database. This component will be the single source of truth managing the listed brokers and their respective settings. The following diagram shows various subcomponents delivering the desired functionalities.
Dominion Services (HSM-backed PrivKey store)
For every broker, there is a list of associated Ethereum accounts created on various WaaS providers. Broker Manager uses Dominion Services (another component in Agora Backend) to register required Ethereum accounts (minimum one) for trading operations. Dominion Services will keep the private keys associated with those accounts in a secure fashion, being encrypted by a master key stored in an HSM device. Dominion Services is used to generate transaction signatures fast enough to address the timely constraints imposed by trading system dynamics.
For some operations such as moving funds to and from liquidity pools or accounts holding a considerable amount of cash tokens, there will be more accounts created on other Wallet-as-a-Service (Waas) providers such as Fireblocks employing the MPC signature generation technique; fairly slower but more secure in terms of private key protection.
The Broker Manager will consult the A3 Provider to authorize and audit incoming requests from various clients. Those clients must create a session with the A3 Provider directly before sending a request to the Broker Manager.
Broker Manager stores broker data in a durable replicated and highly available relation database (PostgreSQL). There is an admin UI providing various functions such as broker listing, enabling/disabling a specific broker, etc.