I want to create something like a Crypto exchange, in which I need to generate different unique deposit addresses for each user, so they can send funds to their accounts while I can keep track of how much each user deposited. This is fairly easy in other cryptos such as bitcoin. However, it seems this is impossible in Ethereum (or maybe I am wrong).
The main problem here is that if I generate multiple private keys, or use an HD wallet and drive multiple private keys from it, funds sent to eath of these wallets need to be signed with different keys in order to be spent thus I have to pay a huge amount of transaction fee (once per account) if I try to send all the funds to one big wallet for maintenance.
So I was wondering if I can generate multiple deposit addresses all corresponding to one account in Ethereum so each user can send funds to a different address therefore, I can track which user sent how much and when I want to spend these funds, I can sign the transaction with one private key and pay transaction fee only once (spend all the ethers together)? And if this is totally impossible to have multiple deposit addresses corresponding to one account, then what can I do?
PS: I have seen several questions like this one in this StackExchange but none of the answers actually answered my question. So please hesitate before marking this as a duplicate
PS2: I am not looking for a solution using smart contracts, because that would require my users to do depositing using special wallets that support web3 like metamask, I am more interested to know how other exchanges such as Binance handle this, so users can deposite from any kind of wallet!!!!