Can someone explain to me what is the difference between having one address or several addresses? We are talking about central platforms which will mostly be related to KYC?
As discussed above in the thread, there may be parties interested in tracking your spending habits. By sending your bitcoins to a single receiving address on the exchange, you are creating link between your addresses on the blockchain.
Although, I share my earnings report with Income Tax Department every year but I may not be comfortable in sharing the same with my neighbor. Same applies here, by selling coins on a KYC-exchange, you maybe sharing your income details with authorities but your neighbor won't be able to ascertain your total earnings if exchange provides different deposit address for each address.
Theoretically, and if we ignore all the other factors, the platforms that create more than one address will require more fees because they will spend more fees in the process of exchanging currencies from the hot wallet to the cold storage, and therefore you will pay more money without adding anything to your privacy.
Nope, this is a wrong assumption.
Consider two exchanges - one providing only one deposit address and the other providing new address every time. Suppose, I make 5 deposits on both exchanges.
First Exchange will provide me a single bitcoin address, let say - A. Meanwhile, second Exchange will provide me new deposit addresses, let say - B, C, D, E, F.
When exchanges will move money, here's how transaction will look:
For first Exchange:
Inputs Output
address A - 0.01 address X - 0.0495
address A - 0.005
address A - 0.02
address A - 0.005
address A - 0.01
For second Exchange:
Inputs Output
address B - 0.01 address X - 0.0495
address C - 0.005
address D - 0.02
address E - 0.005
address F - 0.01
Both exchanges will have to pay exact same fees (here in case, 0.0005 BTC). What matters while determining the fees for bitcoin transaction is the number of inputs. It doesn't matter if the inputs belong to same address or different addresses. Since, both exchanges are consuming 5 UTXOs in a transaction, both will have same fees.
The only thing that would get complicated with multiple addresses is the database management. In 'one address per user' model, deposit address for each user could be store as a string variable. But when an exchange allows the creation of multiple addresses, the most suitable data type would be an array, pushing new addresses in the array. However, if user sends transaction to an old deposit address, exchange will have to loop over addresses of each user to locate who sent the transaction, making things complicated. That's why exchanges like Kraken only support 5 deposit addresses for each user. Once you have generated 5 new deposit addresses on Kraken, old addresses will be disabled.
PS: Deposit addresses that user see mostly belong to the cold storage. Exchanges have pre-loaded hot wallets for withdrawal purposes. Whenever, hot wallets get empty, exchange loads them again with deposit received on the cold storage - so it's other way around than what you are saying.