I know that the easiest way is to generate new address for every user and then withdraw token/eth from it, but this requires additional tx fee payment. Is there any way how I can determine users by eth accepting and don't spend additional fee? Mb pass some message or 3rd party service?

2 Answers 2


What do you mean by users? Are these users on central exchanges? Is it a single Ethereum address used by multiple users? Then the best way is to add some data to the message when sending ETH, but this will just distinguish the transactions, all the Ethereum/tokens will be pooled together. It is not like the bitcoin model with UTXO where you can trace different satoshis. For ETH you have different standards like NFT (ERC721 or ERC1155) that help you. What are you trying to achieve?

  • User = sender, who wants to, for example, pay receiver for something. Is it possible to check that certain sender sent eth/token amount without generating new address? Mar 20 at 11:17
  • For this you need to add message (data), which indicates who the sender is, to the transaction. You can check this article: levelup.gitconnected.com/… Mar 20 at 12:07
  • For ERC20 token transfers, you cannot add custom data to the transfer transaction. You can use smart contract proxy that sends tokens and has an option to add custom data. Also you can just ask the transaction ID from the sender when they send the tokens. Mar 20 at 12:11

this is quite challenging problem that is faced for small exchange to maintain the funds to master wallets,

the existing model of transaction:

  1. create a user account and allow user deposit tokens
  2. once the user deposit the funds , send some eth/bnb/matic based on network
  3. withdraw tokens to main wallet and then withdraw the remaining if any.

here the team need to bear a fee for 3 transactions and some times more if the transaction fee is high and changing GWEI per transaction,

the resolution is quite different and was implemented . here is the new flow that is used.

  1. generate a slave account with 0 fee and provide it to user to send funds,
  2. once the user sends funds the funds are withdrawn in a single transaction. the fee for the transaction is beared by other account which remains same for all accounts that is used for all the exchange users.

this is the next level of source for avoiding the transaction fee for small and mid level exchanges and wallet service providers.

  • Thanks. Can you please explain 2nd flow in details? Mar 22 at 3:30
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Mar 24 at 12:31
  • this is a solidity based management system using the method create2 and create the slave and access via master acount, solidity-by-example.org/app/create2 Apr 8 at 10:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.