i am developing an exchanger as a hobby project in next js. I am just starting to learn about blockchain. I am generating new deposit ethereum addresses for every user. Now my main confusion is, when user send erc-20 token to that address, who will pay the gas fee to move those tokens to company’s hot wallet ? If suppose user sends several time tokens, do company will pay several time gas fees ? I am super confused, :( how to solve these all .. plz help
I've notived at least 2 different ways of doing it.
Binance will send and keep a small Eth balance in the deposit address. They will use that Eth to send the tokens from the deposit wallet to the exchange hot wallet.
Kraken uses contracts as deposits accounts instead of EOA. There is no Eth balance in those deposit contracts. Edit: The hot wallet calls a function on the deposit contract that transfers the tokens from the contract to the hot wallet.
In both cases, the exchange pays the gas fee to send the tokens to the hot wallet. That's why the exchange sets a "Minimum deposit" amount. Under that amount, it is not worth paying the gas fee to move the tokens to the hot wallet.
For withdrawals, exchanges charge a fee to the user to cover for the gas fee.
Depends. What i get from reading your question is that the tokens are supposed to go from the user wallet to its address in your exchange ( generated by your website) and then to your company wallet. If the wallet generated by your website is a smart contract that automatically forwards the transfer to your company wallet then the user will pay for gas. If the wallet generated by your website is just a standard EOA then you'll have to make a transaction manually (or offchain using js) to send the tokens to your company wallet and in that case you'll have to pay the gas by yourself.