When using Bitcoin one can generate new address per user of service and save pair (address -> userId), so it is always obvious which specific user sent coins.

Also, all these coins are stored in the wallet as UTXO, so it is easy to send them to another address paying fee once.

In Ether, on the other hand, I can create a new account per user like this personal.newAccount("abracadabra") but seems like there is no way to send ETH from 100 wallets without paying fee 100 times.

Is there a better and cheaper way to create a new account per user (so I can identify them)?

  • Another method I’ve seen used on bitcoin is using satoshis as a marker. For example, when paying for a one bitcoin item, an additional 7 satoshi could be added to the amount due to distinguish from another user asked to add 6 satoshi. Payments must be in exact amounts for this to work (but you can always refund an incorrect payment, less fees, to a sender). This does not scale all that well if your IDs must be permanent. This avoids the need for users to interact with a contract to include metadata. – lungj Oct 5 '17 at 15:28

Ethereum architecture is different from that of bitcoin. Bitcoin was made only for cryptocurrencies but Ethereum is much bigger than that. So you can not replicate the bitcoin behavior in Ethereum. In Etherum each address is a single identity in itself.

So if you are creating a new address for each user, you have to pay fees to withdraw funds from each address.There is no alternative unless you give each user a single address (or an address from a fixed pool of 10 addresses).

Talking about the giving each user a unique address. For transferring ethers the gas used by the transaction is 21,000. If you set gas price to 21GWei, the transaction will cost you 0.000441 Ether ($0.13, quoted from etherscan.io). So you have to spend $13 for every 100 users. This is not a big amount you should be worried about but again it depends on requirements of the product. I don't see this as a major concern.

Now if you by providing each user an address from a fixed pool of address, you don't have to pay huge fees but this comes at cost of losing anonymity. So this a trade-off between what you want good security and anonymity or lesser fee.

You can get a detailed explanation here.

Your Answer

