1

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". – Come-from-Beyond Jul 25 '18 at 7:10
  • @Come-from-Beyond you are talking about 999999999999999999999999999999999999999999999999999999999999999999999999999999999 aka "Genesis Transaction", right? – Zauz Jul 27 '18 at 14:02
  • 1
    Yes, about all-9s tx. – Come-from-Beyond Jul 28 '18 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 Jul 29 '18 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 Jul 29 '18 at 12:11
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 Jul 25 '18 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 Jul 25 '18 at 15:24
  • 1
    Yes, and my response is "the second transaction will be ignored by the IRI : look at the code" – ben75 Jul 25 '18 at 15:29

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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