Since each double spend, from its perspective, is a valid transaction, they are equally likely to be selected as tips. How will multiple parties agree for certain which one has confirmed, in a timely and deterministic fashion?
2 Answers
In every DLT, a transaction have a probability to be valid. (In Bitcoin, a transaction is valid as long as it is written in the longest chain, so the probability for your transaction to be invalid is the probability that a longer chain exists somewhere without your transaction).
In a blockchain like Bitcoin: 2 conflicting transactions cannot be in the longest blockchain.
In the tangle it is fundamentally different: 2 conflicting transactions can be in the tangle. It is not a problem because only one of them will eventually be seen as valid.
The probability for a transaction to be valid is equals to the proportion of tips validating the transaction (directly or indirectly). I created some illustrations to explain how a double spend is detected. Let's start with a tangle without a conflict:
Now if you introduce conflicting transactions (X and Y) in this tangle we will have this :
When we add more transaction, the conflict will be detected and kind of split in the tangle will occurs:
And the split will be resolved by eventually making the red part orphan.
In this example, the tangle choose Y as valid, fundamentally this decision was random, but once this decision is taken it become practically impossible to revert it.
Regarding the time to detect, you can figure out that it depends on:
- the number of new transactions
- the average "width" of the tangle
-
Great answer. Are those diagrams self-created? – Helmar Jan 01 '18 at 12:50
-
5yes, I have some free time these days ;) – ben75 Jan 01 '18 at 13:11
-
Great work and nice diagrams. I have a question about the orphaned part. So if I am unlucky my transaction is in the orphaned part and I have to submit it again, right? Next question: If I am bad person can I slow down the tangle with doing a lot of double spends and provoking many orphaned parts? – teclis Jan 01 '18 at 21:09
-
1For both questions : yes. – ben75 Jan 01 '18 at 21:10
-
1Can I use your diagrams on https://iotaprices.com ? I'll credit you, of course. – jabman Jan 02 '18 at 17:00
-
1@jabman Thanks for asking :) and yes you can use them as long as you respect the terms of the stackexchange licence. Mainly "proper attribution is required" – ben75 Jan 02 '18 at 22:11
-
For all those transactions in the red area, are they marked as invalid somehow or do they just stay in the Tangle forever? Does the answer change if the COO is turned on or off? – Matt Feb 13 '18 at 08:54
-
All transactions in the red area will stay there. They aren't explicitly marked as invalid. They should be re-attached to get a chance to be confirmed. – ben75 Feb 13 '18 at 16:17
-
When the COO is turned off and I reattach to another part of the Tangle, then isn't the same exact thing in multiple places? What prevents the same thing from happening in the future where a new tip has that old invalid one and the new one I just added in its path? Is it just a probability thing that the tip selection algo is highly unlikely to pick the old one? If I search the Tangle for my transaction will it show up twice now? – Matt Feb 13 '18 at 18:14
-
@ben75, A question for you, what about in your example, if x is legitimate trx; and y is fake or hacking trx? it can go reclaim process or what? – Long Field Jan 04 '19 at 02:24
-
@LongField no. I think there is a big missunderstanding of what is called "the reclaim process" in the Iota community. But when private key is compromised, the only thing to do is trying to add as much weight as possible on top of the legitimate transaction. There is no "reclaim" for that situation. – ben75 Jan 04 '19 at 11:00
-
In the second diagram, how does T0 detect a conflict when it tries to approve tips b and c which are part of different conflict sets? When there are conflicts, branches are created with each branch having a branch-id. So, even if I assume that tips b and c belong to different conflict sets, how will T0 detect that they belong to two branches that are in conflict with each other. – D Mitra Sep 17 '21 at 04:55
Generally speaking, the double-spend which is directly and indirectly referenced by more transactions (i.e. has a larger cumulative weight) will most probably get confirmed. This is because more nodes will have accepted that double-spend and will thus impose their consensus on the rest of the network (eventually) by simply ignoring/orphaning the other double-spend. Note that I am talking probabilistic terms.
One could compare this to bitcoin where the longest chain will always prevail.

- 1,663
- 1
- 11
- 17
-
1Doesn't this bring up the annoyance someone can cause by simply issuing double spend transactions to delay confirmations of valid transactions? Or am I missing something here. – Scott Foster Jan 05 '18 at 16:31
-
wouldn't those double spend transactions have to each compute two other transactions? (I can't say I understand this at all, so take my comments with a grain of salt) It seems like issuing more transactions would speed up the confirmation of valid ones, right? – stephan.com Jan 06 '18 at 07:09