Spot Trades

  • User deposits funds into the exchange contract

  • User places market or limit orders using the front-end UI

  • The front-end verifies user balances are sufficient for the trade

  • The order details are passed to the off-chain matching engine/orderbook

  • The matching engine runs a second verifcation of user balances

  • If a limit order is not matched it is placed into the orderbook as a maker order

  • If the order is matched, it will prompt the taker to approve the transaction using their wallet provider

  • Once approved, the order is sent to the exchange contract

  • The exchange contract reviews the order details and verifies for a third time that the user balances are sufficient for the trade

  • The exchange contract places the pending trade details into "Pending Orders"

  • The exchange contract pings the oracle for it to confirm that the trade does in fact exist in the orderbook

  • The oracle returns with verification which allows the order to move from "Pending Orders" and execute

Margin Trades

Margin trades are processed in the same manner as above, but takes into consideration different factors such as "Total Portfolio Value", "Initial Margin Requirements", and "Maintenance Margin Requirements" as outlined further in the Margin and Shorts section.

Please note that with this architecture, only takers are responsible for gas fees. Users do not need to pay gas fees for any order that goes into the book.

Last updated