I am using a digital currency exchange platform to swap between cryptos (Bitfinex, although the specific Exchange shouldn't matter I guess) and noticed something that I wanted to confirm. I started by transferring some Zcash from my desktop wallet to my "Exchange Wallet" on Bitfinex (the t-addr was generated using Bitfinex's "Deposit" functionality). When the transfer was confirmed and my Total Balance showed the correct amount, I placed an order to swap all of the Zcash for Bitcoins; the order is still active (not executed nor canceled). I then incidentally checked my balance on explorer.zcha.in and noticed it was zero, even though the order has not yet being executed. Indeed, by exploring the chain itself I found an actual transfer of my Zcash to another t-addr, with the corresponding transaction being inserted on a block and mined. The questions/comments are:
1) Does the Exchange (to avoid double spending?) temporarily transfer the money to an escrow t-addr until the order is executed? (And when that happens it both clears my Zcash Balance and increments my Bitcoins balance I assume).
2) If the order is indeed executed, I am assuming the Exchange does a second transfer, this time sending the Zcash from the escrow t-addr to the buyer's t-addr. This means two transactions on the chain for a successful trade.
3) On the other hand, if I cancel the order I assume the Exchange transfers the Zcash back to my t-addr, creating another transaction on the chain that needs to be mined. Similarly, if I instead modify the order (price or amount) does the Exchange need to refund my Zcash first, and then do another "escrow transfer" with the updated order parameters? (meaning additional transactions on the chain).
4) Item "3" above implies that several modifications in a given order will create many transactions back-and-forth the chain which need to get mined. Do these "pseudo-transactions" require a fee as well? Also, if I end up canceling the order after several order modifications, will I have generated some "useless" work on the chain for the sole purpose of speculative trading?
Is this the way Exchanges actually work? If so, is there a (safe) way this type of control can be done without creating various transactions which are not "real transactions" in a sense?
Hope the question is not confusing, thank you for any help.