Upgrading a Speeding Car While Its Still In Motion

Sometime — soon — we need to agree that the Internet we have built has been created incorrectly and is mostly centralised (and not robust)…

Upgrading a Speeding Car While Its Still In Motion

Sometime — soon — we need to agree that the Internet we have built has been created incorrectly and is mostly centralised (and not robust) and almost completely untrusted. We need to agree too that we are just patching things in terms of its robust. The only way is Blockchain, and two new updates will move this into overdrive … sharding and Casper. I’ll also cover another of the weaknesses of blockchain: anonymity. For this I’ll outline how some currencies are using things like ring signatures to preserve anonymity.

Upgrading a car while it’s still moving

You build a car, and then you drive it, and a new model comes along which is faster, so you sell your old car, and buy a new one. In the Blockchain world your car is off and running, and you’ll have to jump on it if you want to change it. But how do you change the car engine, while its owner is still driving it, and not effect the car’s performance, or disrupt all the services that the car requires? Well Ethereum is going through this phase, and its car is travelling at its top speed, and it needs to upgrade the car engine to run at least ten times faster.

It is well known that the success of Ethereum has outgrown its original model, especially its scaling issues, and its usage of proof of work as a identification of trust. And so in the next few months we see the release of two major updates — Casper and sharding — and which will truly build a new model of the Internet. It will be one which is not centralised around servers as our existing Internet is — but be distributed.

It is be resilient … trusted … and scaleable. The more we depend on the Internet, the more we need to trust it and for it to be resilient.

Our dreams of the Internet was of an infrastructure which distributed processing and services around the world, but we have ended-up with a centralised approach, and where data is concentrated within centralised servers. In an Ethereum viewpoint of the world data is distributed around the world, and stored in many places, and where there is no central control of the current state of the Internet. In a perfect Internet, we contain local versions of the blockchain, and communicate with that, and where we know that this is the same state that someone else on the other side of the planet is using.

And soon we will see sharding being rolled-out into the Ethereum infrastructure, and which will significantly increase the number of transactions that can be processed at any given time. With sharding the Ethereum nodes will only need to store a part of the distributed registry, and relay this information to others in the network.

Sharding

So let’s look in detail how sharding will work.

The major problem that we are fixing is that, in order to create a consensus, each of the nodes must do all of the calculations and certify every transaction. This slows down the network down when there is an increase in the number of transactions, and Etherum has thus hit a bottle neck.

Now let’s consider that we have a definitive state of the Ethereum network for all of its transactions — a Global State. Everyone should be able to check this state and see all of the transactions. But now we can split the states with a Merkle Tree, and where the root defines the global state and where we break up the states into shard nodes. In the following we have three shards which make up the global root, and where each shard is gathers the transactions that they are responsible for:

We thus split overall state of the infrastructure into shards, and where each unique account is in one shard, and where these accounts can only transact with other accounts within this shard. Vitalik Buterin defines this by imagining that the blockchain was split into thousands of islands, and where each island can do its own thing. On each island the people on that island trade with each other, and perform transactions, and do not require those from other islands to be involved. As long as we have a trusted agent on the island recording the transactions, this can feed into a global transaction ledger. If those on the island contact other island, we can put in-place a mechanism to support this, and link the transactions, such as sending a receipt of a transaction from one island person to another, and for us to get a receipt back from the other island.

The sharding system works by creating a transaction group which has a transaction group header and a transaction group body (and which stores all of the transactions related to that shard). In the example below we have a Shard ID of 22, and in the transaction group header we have:

  • Shard ID: This is identified of the shard that the transaction relates to.
  • Pre-state root: This defines the state shard 22 root before the new transactions.
  • Post state root: This defines the state shard 22 root after the new transactions.
  • Receipt root: This is the receipt of share 22 will all of the transactions.

We also see signatures within the transaction group header. These are nodes which have been selected to validate the transaction in the shard, and are chosen at random. Each shard thus identifies itself with an ID, and then maintains its state with its own transactions, where it maps back to a previous state. This is similar to having an independent blockchain running for a shard, and where the transactions within the shard to not interact with others outside the shard.

But what happens when the accounts in one shard want to transact with another shard? Within this we record a transaction and send a proof of receipt to Shard B. This shard then sends back a consumption of the receipt:

There are major challenges with sharding, and then main one is whether we can make sure that sharing works on trusted nodes, and where shards have trust between each other.

Casper

With Casper FFG [here] we will move away from proof-of-work and start to overlay proof-of-stake (PoS). This was required as many have questioned whether it was possible to keep paying miners their work. The current proposal is to release Casper as a shard (or sidechain) alongside sharding, and will move Etherum into a hybrid consensus model for crypto mining The long-term goal, though, is to move to proof of stake. In order to move away from Proof-of-Work (PoW), the reward for miners will drop from 3 ETH to 0.6 ETH. The estimates for securing the network is that it will drop from 1,500 ETH to just 32 ETH, and support a wider consensus model, where it would be less expensive to provide consensus nodes. Casper is intended to be separately developed away from the main chain, and not effect the existing infrastructure.

Ring Signatures

The major problem with the Bitcoin network, is that the amount of a transaction and the sender and receive of the funds are not private, and someone who knows someones address can trace their transactions. This is the case because the blockchain needs to check that the sender has enough funds to pay the recipient.Thus many cryptocurrencies are looking for ways of anonymising the transaction. Ethereum, for example, uses zk-Snarks to hide identities.

One method of preserving identity was proposed by Rivest et al and uses RSA encryption. Unfortunately it is not efficient for modern systems, thus Greg Maxwell’s defined an elliptic curve methods as a new way of creating the ring signature: the Borromean ring signature [paper].

The cryptocurrency Monero then adopted the method for anonymising transactions, but have since migrated to a new method: Multi-layered Linkable Spontaneous Anonymous Group signature. This method hides the transaction amount and the identity of the payer and recipient [paper]. It is now known as RingCT (Ring Confidential Transactions), and was rolled-out in January 2017 and mandatory for all transactions from September 2017.

I have created a demonstration of the original method here, and here is an outline presentation of the method:

Conclusions

There you go. A new Internet is being created, and it’s a better one.

I hope I have answered the question about how you upgrade a speeding car to run ten times faster. If not, read again. If you still don’t get the new world that is being created, go back to your client-server books from the 1970s, and brush up on your theory. Hopefully we will see you on the other side.