Freeze the users' balances and assets when they place an order.
Credit half of the bid-ask spread to the users when the trade happens, credit the bid or the asset if an order is cancelled.