The full article was originally published by Olaf van Wijk on Medium. Read the full article here.
A simple concept that got complicated
This article is, not surprisingly, about timewarps! Part of what is explained is already implemented and some parts of it are still work in progress. This article serves to document my ideas and general design but also to let the broader iota community become familiar with the concepts. And last but not least: so others can poke holes in.
One of the core concepts of my selective permanode project for IOTA are timewarps. The concept is very simple: one of the tips of a transaction points to a much older transaction, essentially ‘skipping’ large parts of the tangle. If confirmed it takes part in tip selection and therefore becomes part of the tangle.
Why do this? Optimization of storage and pathfinding. An optimization that is, unfortunately, a requirement for AION to work.
The base concept of timewarps is very simple. But it becomes tricky pretty quickly if you don’t want to flood the tangle with a large number of transactions constantly and want to reuse an existing one. If my node would be the only one issuing these timewarps and I am the only one using it then well… easy. However what if a 1000 people want to run AION nodes? Are all of them going to issue timewarp transactions? All the time? That would mean a lot of extra stress on the network and we don’t want that if it can be avoided.
However, the tangle is an open data-structure so anyone can anything. Now, what if someone wants to hijack your timewarp? What is someone stopping from issuing timewarp transactions referencing your timewarp? Which one is actually correct or honest? Both? One? And when do I even decide? Could someone do this all the time and point to a useless part of the tangle? Making AION’s timewarping essentially useless?
How do we even convey these timewarps? How are they defined and how strong can we trust this definition?