Coming Soon: IRI 1.5.2
The full article was originally published by Dominik Schiener on Medium. Read the full article here.
IRI 1.5.2 will include a couple of important bug fixes that will alleviate the long confirmation time and node responsiveness issues we have seen in recent weeks on mainnet.
Lewis Freiberg touched on the concept of a “side tangle” issue in his blog post (https://medium.com/@lewisfreiberg/whats-up-with-the-tangle-d825c692e7a8), but what exactly is happening with the recent side tangle that causes IRI to “lock up” and become unresponsive?
In the diagram, we see the main tangle on the left (blue) with milestones (green) issued periodically. The side tangle on the right (orange) is constructed by referencing an old milestone, and then building a very long chain of transactions which do not reference back to the main tangle until much later on.
Since each IOTA transaction must reference two previous transactions, the IOTA Reference Implementation (IRI) provides a method called `getTransactionsToApprove` which does just that — it finds two valid tips which a new transaction can use to attach to the tangle. In the current IRI code, each time this method is called, the random walker will validate all transactions from the most recent milestone up to the selected transaction. As you can see in the illustration, if the walker ends up in the side tangle, it will attempt to validate a potentially very large number of transactions, all at once. With a sufficiently large side tangle, the sheer volume of validations quickly causes IRI to become unresponsive.
You may recall from the Tangle whitepaper that we want to prevent “lazy tips” from becoming approved, and since all of these side tangle transactions go back to a very old milestone, we should really consider them all lazy and avoid doing the validation altogether.
IRI 1.5.2 will do exactly this. Under the hood, while doing validation, IRI will now remember the most recent milestone referenced by each transaction. This piece of information allows the walker to know right away when a transaction references the main tangle too far back in history to be acceptable. In other words, the walker can more easily detect lazy tips and skip them without further consideration, while additionally marking every tip it visits so that it won’t try to validate them again next time.
The IRI team will have a fix out tomorrow (7/23) on a branch for node operators to test, and we expect the release of 1.5.2 in the day or two following after the solution has been thoroughly tested.