Financial flow

Deposit

  1. User sends funds to a deposit wallet.

  2. Exchange scanning blockchain for new deposits.

  3. If the deposit lower than 'Min deposit amount' the system doesn't recognise that deposit and don't update user balance.

  4. If the deposit equal or higher than 'Min deposit amount' the system do the 'Min collection amount' check.

  5. If the deposit lower than 'Min collection amount' the system doesn't initialise a deposit collecting process but updates user balance.

  6. If the deposit equal or higher than 'Min collection amount' the system initialise a deposit collecting process to move funds from the deposit wallet to exchange wallet/wallets ('Hot', 'Warm' or 'Cold'). That process requires a few checks:

  • If a sum of the deposit + 'Hot wallet' balance lower than 'Max balance' of 'Hot wallet' then the system moves the deposit to 'Hot wallet'
  • If a sum of the deposit + 'Hot wallet' balance is higher than 'Max balance' of 'Hot wallet' then the system checks next conditions.
  • If a sum of the deposit + 'Hot wallet' balance + 'Warm wallet' balance lower than a sum of "hot" and "warm" wallets max balances then the system checks next conditions.
    • If 'Hot wallet' reached max balance the system moves deposit to 'Warm wallet'
    • If 'Hot wallet' hasn't reached max balance the system divides the deposit between 'Hot wallet' and 'Warm wallet'.
  • If a sum of the deposit + 'Hot wallet' balance + 'Warm wallet' balance higher than a sum of "hot" and "warm" wallets max balances then the system does next checks:
    • If 'Warm wallet' reached max balance the system moves deposit to 'Cold wallet'
    • If 'Warm wallet' hasn't reached max balance the system divides the deposit between 'Warm wallet' and 'Cold wallet'.

Withdrawal

  1. User creates a withdrawal request.
  2. System checks if the user has enough funds to proceed withdrawal transaction. If the user doesn't have enough funds, the system reject to create withdrawal request. If the user has enough funds, the system accepts that request and do the next checks.
  3. If the user hasn't reached any withdrawal limits, the system process the withdrawal request automatically from 'Hot wallet'. If 'Hot wallet' doesn't have enough funds to process the withdrawal request the system throw error. In this situation, the admin needs to replenish 'Hot wallet'.
  4. If the user reached at least one of withdrawal limits (24h or 72h) the system accepting that request but doesn't process it automatically. Admin can manually reject or process that withdrawal request from 'Hot wallet'.
  5. Withdrawal request for a big amount can be processed manually by the admin. Big withdrawals should be processed outside the system, from 'Warm wallet'. When the admin have generated and signed withdrawal transaction he has to propagate that transaction to the network. After transaction propagation admin has to upload TxId into the admin panel. If there are not enough funds in 'Warm wallet' to process the withdrawal request the admin needs to replenish 'Warm wallet' from 'Cold wallet' (transaction signing should be done offline).

diagram-funds_flow