Scalable Blockchains & Asynchronous Programming - Vitalik Buterin - (DEVCON 1)

Vitalik gives a presentation of Ethereum 2.0 that turns blockchain technology into a scalable one. The idea (as we thought outselves) is that most transactions are local and do not need to process the whole blockchain. In a nutshell, the global state of the blockchain is split into shards, each can be considered as an independent blockchain. As long as each account can only send transactions to other accounts in the same shards, and call only accounts within a shard, all the shards can be processed in parallel. The whole system maintains also a global state of all shards put together. Now, the riddle is how to resolve transactions across shards? These must be a special case which is not very common. Such transactions will need to be processed asynchronously in order to allow the parallelization of shard processing. In other words to complete a block within a shard will not wait for possible inter-shard transactions that might change its inner state. Inter-shard transactions will be processed via special exceptions (like Out Of Gas exceptions) that will invoke special handlers to take care of them. The implementation is quite involved and complicated but it will allow scaling and replacing global consensus which is rarely required with local ones (within shards) that are much more computationaly cheaper. The scaling will happen simply by adding more shards to the blockchain when needed. Also light clients will be able to download only the relevant part of the whole blockchain.