Buffy's IOTA Facts

Logo

Hi I am buffy. I do premium IOTA tech consulting.

All articles · FAQ

Sharding

TL;DR: Sharding is necessary for scaling a permissionless DLT. IOTA has not produced a design so far. Below are my notes & thoughts on Hans’ design, on why I believe it won’t work, and on why IOTA should be prioritizing a solid sharding design over a Coordicide design & implementation.

Edit 2020-08-29: Hans has said that he is working on an extended, more formal write-up of his design. The below represents a summary of what is publicly known as of 2020-08-27, to the best of my knowledge/skills. Will update this article when that lands.

Dynamic/Fluid Sharding (Hans’ design)

/sharding.png

I should note that there are hints that the IF is aware about some of the problems (there is a reference to a discussion here, but the discussion itself is unfortunately locked down). I have not heard that any further sharding documentation is upcoming.

Hans did say that he is going to post a video series soon. I fundamentally disagree that this is a good approach here, as a discussion on this would benefit greatly from precise statements, algorithms and formulas. With IOTA specifically, there is often the problem that it is unclear which stage (chrysalis, coordicide, sharding, future…) a given statement refers to. While I appreciate videos as an additional illustration method for complicated concepts, the medium is also not precise and prone to handwaving.

Problems with this approach

[Note: this is to the best of my abilities. Again, there is no proper design, so it’s plenty guesswork]

[I’m also simplifying the shard selection to be non-fluid for now. The arguments below are obviously equivalent (e.g. assume smallest-possible fixed-sized shards with each actor occupying multiple shards → fluid sharding with a (temporarily) static configuration)]

Now i’m not saying that there aren’t approaches to deal with this - like adding validators, adding randomized shard selection etc., but these are core elements of the sharding design. These are, in my opinion and experience, not add-ons that you can slap on later.

General thoughts

But….

“So what? It’s not finished then / It’s called innovation”

The problem with this argument is that people are already investing under the assumption that sharding will exist:

But we could also do other scaling solutions, like Layer 2

Maybe? I’m not familiar enough with layer 2 solutions (lightning network et al). Hans did propose a ‘private subtangle’ concept in the past, but I am not actually sure whether this is something that is being given any serious thought. Also, a private subtangle (or, most L2 scaling solutions really) look a lot like a cloud-based solutions - you lose the permissionless-aspect, you lose visibility into transactions etc.. And a cloud based solution is of course (and especially at high TPS) a fraction of the opex cost.