A user suggested using a transaction hash as a way to track user deposits (especially for ECR20 tokens):

The major issue arises when you start accepting erc-20 tokens as payment, in that case when you wish to transfer tokens from each user's address to your main account, each user account must have ethers (to pay for transaction fee), but users have only transferred tokens. This is the thing you should be worried about. One possible way is you ask users for tokens as well as few ethers (for transaction fee).

The other possible solution could be having a pool of fixed addresses and providing users with repeated addresses. In that case, you have to either ask the user for transaction hash or account from which they are willing to pay to identify user's payment.

What I don't understand is this: Isn't the transaction hash publicly visible on the blockchain? If so, how can this be used as proof the the person who has the hash is the true sender of the payment if anyone can look up the recent transaction hashes to a specific address? And if it is not publicly visible how would I use the transaction hash as proof that this person sent the payment he is claiming to have sent if I myself cannot verify it?

1 Answer 1


Transaction hashes are public, however there can be millions of transaction hashes moving at the same time. You are not sure in this type of system who is who. For that reason you need to identify them somehow so you can connect the actual user of your application with their submitted transaction hash.

  • Thanks for your reply. However, what I don't understand is that if every user of my application is depositing funds to the same ETH address what stops a malicious user from monitoring all deposits to that address and when he sees a new deposit being made (by observing/monitoring that one address on blockchain) he can quickly get the transaction hash (as it is public) and claim he made the deposit and ask me to credit him for the deposit? If the transaction hash is publicly visible, it can't be used to prove who sent a particular transaction. Am I wrong?
    – S.O.S
    Jan 27, 2021 at 17:21
  • For this use case you should create a session within your web app. In that session you provide the user each time with a crypto wallet (for like lets say 20 minutes) where they should deposit their funds. When that particular wallet receives the funds you confirm his subscription or whatever they are paying for. You should check ERC-20 payment gateways. reddit.com/r/ethdev/comments/8lsfeh/… Jan 27, 2021 at 22:22
  • Problem is that a user should be able to deposit funds into his address at any time. So it is not possible to implement the session concept. Ultimately, am I correct that transaction hash cannot be used as proof of payment since it is available to one and all to view?
    – S.O.S
    Jan 28, 2021 at 0:22

Your Answer

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

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