A simple syncing and proposal

This is a simple suggestion to improve syncing in IOTA 2.0.

  1. We divide the tangle up to epochs.
  2. The epoch i commit is a some sort of cryptographic commitment to all the messages in epoch i
  3. The history i commit is the merkle root of all the epoch j commits with j\leq i
  4. Every message in epoch i contains the epoch and history i-2 commit.
  5. Assume now that the length of each epoch is longer than the partition tolerance allowed by the timestamps. Under this assumption all nodes should have consensus on the same messages on two epochs ago.
  6. Any message with the incorrect commits is rejected. We can do this because of our partition tolerance.
  7. When syncing, we can request epoch commits and sync based on those.

This is basically Hans idea assuming no sort of partition tolerance. I think to improve this idea, we need to have a better idea of our partition tolerance requirements.

If the assumption in point 5 that all nodes should have reached consensus is violated then there is a fork. As these committs are about every message this is not Sybil protected. Every confirmed message might be better. But still that a different perception of one single message can fork the whole protocol seems too fragile to me

You are completely right about the confirmed messages. I edited above.

Well then lets take this as an exercise. What are the exact requirements we have on our partition tolerance? At some point in time the history should be decided upon, so lets try to leverage that!