Prompted by this question Clarify inner workings of the snapshot, I was wondering how exactly it is ensured that a snapshot (no matter which node performs it) produces the same results?

In blockchain, one could prune/snapshot at some specific block number x. But given the DAG-nature of IOTA, how does one pick a unique point in time? Equally, what if some node's view on the Tangle is ever so slightly different to another node's view? What enforces that nodes sync the exact same transactions at the exact same time?


When the IOTA foundation performs a network-wide snapshot, they define a milestone index (i.e. the index of a transaction issued by the Coordinator). Nodes who have not seen that milestone (because they are not synced) will not be able to verify the snapshot. All other nodes that have this milestone can verify it, since it confirms the same transactions for everybody.

There might be unconfirmed transactions on different nodes, but as they do not contribute to address balances, that does not matter.

As the Coordinator is turned off (not issuing any more recent milestones) while the snapshot validation happens, it cannot happen either that previously confirmed transactions get unconfirmed again during the snapshot.

| improve this answer | |
  • Great answer. Immediately leads to the question: How will this be handled post-COO? Will the network pick the snapshot index with some sort of consensus algorithm? – ralf Jan 29 '18 at 23:57
  • I'm not from IOTA Foundation and have no idea about their intents towards post-COO milestones, but I believe after the COO is switched off every node in the network will have their own milestones and it will individually decide when to emit these milestones and when to do a snapshot. – alexpods Jan 30 '18 at 10:04

Your Answer

