Thoughts on Economic Clustering
The full article was originally published by Daniel De Michele on Medium. Read the full article here.
A little introduction
Since Come-From-Beyond’s post on Economic Clustering, a lot of people started trying to understand what was this about: it seems to be related to IOTA’s future as it is the way in which scalability could be achieved.
The thing is that the article does not explain a lot and vaguely refers to economic clustering as a CFB’s hypothesis that accepts that, by the end of the day, what really matters and can break consensus rules if needed is the economic majority.
So yes, the larger chain will be considered as valid by all the nodes and that is a consensus rule. But, if an attacker finds a way to hack whatever technology you run on and hurt those in posession of the majority of the goods, then an exception to that rule will be made. This is something we saw many times and will probably see again.
As I started seeking for data about Economic Clustering I understood that this was no new stuff. I know EC used to be in IOTA roadmap together with sharding and other stuff, but aparently this goes back to Nxt days.
The following thread taken from Nxt Forum starts with CFB saying “Today I committed code related to Economic Clustering (EC).” and dates from May 21, 2014. So guess what, not a new toy precisely.
Putting the pieces together
Because we do not have a lot of documentation on this, lets try to build the concept from what we do know.
Come-From-Beyond has updated his twitter status to reflect that Qubic provides a solution to Smart Contracts and is now working on Scalability. We know from several places that IOTA’s future scalability as standard protocol for IoT depends on this not-yet-documented Economic Clustering + Network Bound PoW.
Let’s imagine for a moment an IoT world with zillions of little devices running 24/7 to relay data or issue micropayments. The amount of transactions involved in this scenario is just too big so as to exist on the Tangle as we know it today.
Even if you manage to have little IoT devices doing PoW to confirm two other pending transactions and you snapshot frequently, think on the volume of txs involved by all the IoT devices of the world and remember that, somehow, all that data must be broadcasted to every single node on the Tangle and you got to deal with the throughput limitation.
Early on this project we learned about CAP Theorem and the hability of IOTA of being partition tolerant, which basically means that you can split the Tangle into subtangles without producing a fork (as you would in blockchain).
As CFB addresses Economic Clustering, he introduces the concept of clusters. The Tangle as we know it now is called Cluster0 but, because IOTA allows to have subtangles or clusters you can extend this sort of main cluster by composing other clusters with their own transactions. This clusters may or may not be directly connected to the main cluster but they will need to dialogue with it at some way.
By the end of EC post, CFB says “this is for IoT-based IOTA” and I think this is the key to understand the reason of that article. IOTA aims to become the standard protocol for IoT and that means to be able to deal with a massive amount of transactions around the globe. Because, as stated above, there is no way for this to happen in the Tangle as we know it today, clusters are needed to handle subtangles working independently of the main tangle (this independent condition is important).
So basically the nodes throughput issue is solved by this Cluster0-unconnected clusters that are formed by geographical proximity in order to avoid latency and will deal with its own txs. This makes sense because there is no reason for a microtransaction made by an IoT device in USA to be broadcasted to nodes in China.
Cluster0land & the peripheria
Let’s illustrate this with an example. Say we are doing a car travel from Madrid to Berlin and we wanna have our car wallet with enough balance to pay for highway tolls, parking and even an eventual traffic ticket. So, we transfer from our main/personal wallet to the car by using the Tangle or Cluster0. This transaction uses resources of the main network but it is going to be the last one of this kind, as we will see.
As I drive accross Spain I start entering other IOTA Clusters in charge of local devices transactions. First two are connected to the Tangle but the following are interconnected as rings in such a way that the third one is no longer connected to the Tangle but it has a connection with the second. One of this turns to be the machine that charges me a toll for using the highway. Now I have a little problem: if I did not send my car wallet balance to this new Clustermy IOTAs are not valid to pay (actually I won’t even see my wallet’s balance).
I guess you see the point: as I move forward with my car I will have to change clusters by sending my car wallet balance to myself from the cluster I was on to the one I am entering. That way, I will be able to use my tokens on the Cluster I am without necessity of placing my transaction on the Tangle (because Clusters will be in charge of all the aspects related to making/confirming transactions)
This is how you can solve scalability in a world that will need to handle thousands of TPS: you divide all this activity amongst clusters created considering proximity.
The two missing links to fully understand how this clusters will work are Economic Clustering and Network Bound Proof of Work. I know IOTA Foundation is already working on the economic and technical aspects of EC and I trust we will soon have more information.