If someone were to find a Transaction Proof of Work collision, would it be possible to pin the tail of the tangle to the head and create an infinite loop?

IE. Create a self-referential tangle segment that would cause a permanent network failure?

This question assumes that a version of the IRI checks both the Hash and equality of all transactions. IE. Doesn't consider them duplicate unless they actually are.

This is a fairly theoretical question. Admittedly, it is unlikely. However, there is a non zero chance of a hash collision. Another issue might be, what would happen if one node received the one Tx1 at the same time as another node received Tx2 with the hash collision?

To stimulate the reader's imagination, here are some links that I find interesting:

  • Fun fact: The tangle already contains a transaction that references itself, this makes it incorrect to call IOTA "a DAG". Commented Jul 25, 2018 at 7:10
  • @Come-from-Beyond you are talking about 999999999999999999999999999999999999999999999999999999999999999999999999999999999 aka "Genesis Transaction", right?
    – Zauz
    Commented Jul 27, 2018 at 14:02
  • 1
    Yes, about all-9s tx. Commented Jul 28, 2018 at 5:49
  • @AustinPowers No offence, but I rollbacked your edit because it drastically change the context of the question. Changing drastically the question after someone already wrote an answer is IMO not very respectful. It's better to ask a new one.
    – ben75
    Commented Jul 29, 2018 at 11:16
  • Wouldn't "a version of the IRI" that does something significant different than the actual IRI not conform to the IOTA Protocol. This is a little bit like saying: "What if there was a version of the IRI, that does not check if the PoW was done?". Of course IOTA doesn't work if you remove core characteristics of the protocol. IOTA relies on the fact, that it's hard to find hash collisions AND the exists(tangle, hash) line.
    – Zauz
    Commented Jul 29, 2018 at 12:11

1 Answer 1


If the transaction hash is already in the local tangle, any new transaction with same hash will be ignored (immediately dropped by the IRI).

So, no : you can't transform the acyclic graph in a graph with this strategy. (or transform the "almost acyclic graph" -according cfb comment- into a graph)

Here is the relevant code

public boolean store(Tangle tangle) throws Exception {
    if (hash.equals(Hash.NULL_HASH) || exists(tangle, hash)) {
        return false;  //IRI don't save a tx with 999..9 hash
                       ///nor a tx already in the DB
  • Not sure that your previous comment is serious... :/ ?
    – ben75
    Commented Jul 25, 2018 at 15:12
  • @SaintHill see my edit. The transaction hash is like the ID of the transaction and is supposed to be unique. If it is not unique as suggested in your question, the second transaction will be ignored. problem solved.
    – ben75
    Commented Jul 25, 2018 at 15:24
  • 1
    Yes, and my response is "the second transaction will be ignored by the IRI : look at the code"
    – ben75
    Commented Jul 25, 2018 at 15:29

Your Answer

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