I guess I failed to explain you. Yes, we are centralized exchange just like Binance. So every user will have a unique Ethereum address for all his ETH and ERC20 transactions. We generate this address offline using ECKeypair and store address an PK safely.
Let’s say you register on our exchange, click deposit, and then transfer 100USDT from Binance to our exchange. you use this 100USDT to buy Bitcoin. We updated our local DB with USDT=0 and BTC=0.0001
I am the one you bought BTC from, as exchange my DB balance will be 100USDT and BTC=0. I click on Withdraw and enter 100USDT withdrawal amount. After fees, my withdrawal will be let’s say 99USDT.
On the back-end, exchange doesn’t have any USDT balance in it’s main wallet. It is still in your wallet on the blockchain (NOT DB). Repeat this scenario for thousands of users doing multiple withdrawal.
For ethereum, we have a logic implemented that transfers ETH from user’s wallet to our master wallet after X confirmation. So ETH withdrawals are processed from our master Wallet only. But that’s not possible with ERC20. Because if we want to transfer ERC20 from your wallet after X confirmation to our exchange master wallet, your wallet should have some ETH to cover the gas fees, which you don’t have.
When I say your wallet, it is basically exchange wallet created unique for each user.
Am I making sense ?