0

I am trying to make a monero payment receiving platform and I've found out that it takes about 30-40 minutes for the transaction's height to be 10, which then will the payment be released to me.

For small payments like >USD 10, I think i will accept the transaction when the height is 3 or more.

How much is the possibility for the transaction to be reversed when the height is 3 and 5?

1

It is very unlikely that a 3 or 5 block depth should be reverted. That would mean there was a chain split, and should be the result of an attack.
But after all, it's up to you to define how long you would wait to consider a transaction confirmed. For enormous payments, you may want to wait more than 10 blocks. And for small one, even 2 blocks could be considered enough.

It's all about the risks, and much more: is the transaction worth the cost (in hashpower) for the other party to try to split the chain?
Otherwise it would be a coincidence, and a fair customer will accept to send a payment again if the previous one was finally rejected because of some chain split occurring at the same time.

  • 2 is very low as natural reorgs happen. See monero.stackexchange.com/questions/2018/… – jtgrassie Aug 6 '18 at 11:07
  • What about checking the block id against several block explorer (or pools api if such data is available)? If all of them do have the block id containing the transaction at the expected height, it's unlikely that a reorg occur, isn't it? You could even compare last block id between largest pools? Or host multiple modes and avoid them to sync together? I think there is many possibilities to early check if a reorg is likely to occur. – el00ruobuob Aug 7 '18 at 6:43
1

A longer confirmation period requires an attacker to utilize more power to invalidate a transaction, but it takes more time which requires you and your customers to wait longer. It ultimately comes down to usability VS security.

For small payments like >USD 10, I think i will accept the transaction when the height is 3 or more.

This is a good use as no "attacker" would utilize enormous mining power to scam a few bucks out of you. Though you have to watch out for reorgs which happens from time to time.

I would extend your idea in this way:

  • For petty payment, wait for a small no. of blocks. 3 may be enough or it may not. You may want to look into past reorg history to determine a suitable no.
  • For significant payment, wait for more blocks to be confirmed. The no. of blocks to be confirmed should increase linearly with your payment, since the cost of 51% attack is also linear.
  • You should have estimated the cost to carry out 51% attack on Monero. Say it costs $1M per block. Enlarge/shrink this number by a to-be-determined factor. Calculate the no. of blocks needed for the payment to match the attack cost. That is the no. of blocks to confirm your payment. The factor can be larger or smaller than 1, depending on your paranoid level. Remember you are striking a balance between (1) risk of your payment being reversed; and (2) risk of your customers going away due to long confirmation period. If your customers can wait longer (e.g. online shopping of physical goods; need to wait for shipping anyway), make the factor larger.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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