I only have a very basic understanding of iota transactions, but after reading

I have the following question: Doesn't reattaching transactions allow double-spend transactions?

How does the tangle or nodes processing transactions determine the difference between an initial transaction that transfers value and a transaction that was just reattached?

Let's assume I have account A with 10 Mi balance, and I send 1 Mi to B: How is reattaching this transaction preventing other nodes to believe I am not sending the transaction again?

3 Answers 3


You have a balance not in an account, but on an address. Due to the fact that IOTA uses one-time signatures, you are advised to create transactions that empty an address fully.

So, if you have 10 Mi on address X, you(r wallet) will actually create a transaction that takes 10 Mi from address X, sends 1 Mi to address Y and sends the remaining 9 Mi to a new change address Z.

When you reattach, once one of the copies has confirmed, the other one will not confirm as there are no funds left on address X.

If somebody would send another 10 Mi to address X (and assuming nobody was able to reverse the key so far and steals them), other copies of that transaction (if they are still approved by other transactions) could confirm and send another 1 Mi to address Y and 9 Mi to Z.

Which is yet another argument to never send money to an address that has already been spent.


The process of reattaching a transaction means doing the proof of work and tip selection process to reattach the transaction to a different part of the Tangle. So once one of your txs is confirmed, your other tx will be pending forever. So with at least 67% of the network being „good users“ selecting only valid transactions to reference and/or the coordinator running properly, there is no way to double-spend.


I'd say reattaching is precisely broadcasting a double-spend transaction from the same origin to the same destination, and hoping this time it will be picked up by the coordinator. You basically spam the same transaction over and over until it gets confirmed.

It is the same procedure a malicious user would do if trying to validate a double spend, only the transaction would have different outputs if the hacker was trying to scam someone.

How the network determine which one will be confirmed, the original or the reattached? Chance. The one that first gets indirectly referenced by the coordinator wins. When it happens, all the other reattachments becomes double-spends, and are impossible to confirm.

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.