I've been learning to write smart contracts on the Ethereum platform for a while now (NodeJS, GETH, MIST, Solidity, TESTRPC & Truffle) and spend a lot of time reading about the platform.
The first thing I noticed was how hard the development environment is to work with. It reminds me of the early days of Windows (aka 3.1) when getting a Window up and running was not trivial. A few short years later Microsoft released Visual Basic which made it possible for the 'average' developr (like me) to really do things. I think the next 3-5 years will be similar. There is just so much happening in the space its breathtaking. For example Blockchain as a Service is already in early release on Azure and I am sure AWS will follow soon with multiple platforms appearing all the time now like MultiChain, OpenChain and APLA.
Apart from the 'primitive' toolset, scalability is an acknowledged problem but there are others as well:
Privacy (pseudonymity is not the same as anonymity)
Formal contract verification
Storage constraints
Consensus mechanisms
Lack of governance and standards
The quantum computing threat
Focusing on the scalability issue all public blockchain consensus protocols have a challenging limitation: every fully participating node in the network must (at this time) process every transaction.
This is because blockchains are fundamentally “decentralized” — which means that no central party is responsible for securing the system. Instead, every node on the network is responsible for securing the system by processing every transaction and maintaining a copy of the entire state.
Its the idea of a decentralization consensus mechanism that makes possible the often touted benefits of blockchain like political neutrality, censorship resistance and so on.
But this same decentralisation limits the number of transactions the blockchain can process to the limitations of a single fully participating node in the network. As the size of the blockchain grows, the requirements for storage, bandwidth, and compute power required by fully participating nodes in the network also increase. At some point, it becomes unwieldy enough that it’s only feasible for the few nodes that can afford the resources to process blocks — leading to the risk of centralization - ironically the very thing the technology is trying to overthrow.
An architecture is needed to limit the number of nodes that need to validate each transaction, without losing the network’s trust that each transaction is valid and authentic. It might sound simple in words, but at this point in time it is still a work in progress.
Scaling the blockchain has been an active area of research for a couple of years already. Specifically, if you’ve been following the the Bitcoin community, you may have heard of two Bitcoin-specific scaling solutions known as SegWit and the 2 megabyte (MB) block size increase. It was Segwit2 that lead to the hard fork last August and the creation of Bitcoin Cash.
In the Ethereum world one of the several concepts is that of "off-chain micro-payment state channels". Essentially part of the chain state is locked via a multi-signature and participants update transactions among themselves. At some point the the participants submit the state back to the chain (Ethereum 'MainNet') which can be thought of as a settlement layer. This approach would also lead to lower Gas charges since all those computational transactions will be occurring off-chain.
The Raiden network (
https://raiden.network) is an example of this idea as is TrueBit (
https://truebit.io/) which extends off chain computation beyond token exchanges.
Another strategy is the Directed Acyclic Graph protocol which is a core tenant of IOTA Tangle and also Spectre but thats another story.
The Ethereum product roadmap outlined by Buterin in Taipei last November placed scalability (along with consensus safety - and privacy) as the key drivers. The Casper upgrade will introduce Proof of Stake alongside Proof of Work - partly to reduce energy requirements - but also to address transaction processing times. PoS basically means that you put up your own Ether rather than computational power to guarantee the chain state but that's also another story.
Sharding was also featured at the same event in Taipei. Rather than have transactions run in linear order, sharding allows blocks to happen in parallel. Think of this as the difference between downloading one song from a friend vs using a Torrent to download the same file from thousands of people.
I am sure the BronTech team are across all of this - its a big topic in the Ethereum community eg. the recent CryptoKitties event.
Hope this was useful - 2018 is going to be an interesting year for Ethereum.