Even with the current scalability issues facing the Ethereum Network, all is not lost. Several promising projects are currently underway to try and remedy the situation and bring Ethereum's full potential to light. Two of the most promising ideas, Layer-2 Scaling which takes a lot of the transactions off of the blockchain and only interacts with it on an as-needed basis and "Sharding", which aims to take away the need for every single node to possess the entire blockchain ledger.

Layer-2 Scaling:

Perhaps the quickest solution to the scalability problem is adding a “layer-2” to the Ethereum Network. What this would do is remove most of the real-time transactions from the main blockchain, greatly reducing the needed transaction processing power that would be required. Layer-2 refers to a system that essentially built “on top” of an existing layer 1. They would not require a change to the current layer of the network, they exist as smart contracts in the current environment that would communicate with off-chain software and protocols. Off-chain techs such as state channels, Plasma, and Truebit all exist to solve different issues, they all function by performing operations off of the current blockchain, while guaranteeing what is considered a sufficient amount of security and integrity.

Before trying to understand what these mechanisms are, it is important to understand the basic principles that make them possible. The crypto-economic consensus is at the core of most every blockchain that has been built. It aligns incentives to users and nodes and secures them with software and cryptography. When this is done it creates a network of computers that are able to come to an agreement about the state of a system. In Satoshi’s whitepaper, this is the main component that has been applied to numerous different public blockchains.

This group consensus is what gives the blockchain its hard kernel of certainty that on-chain operations such as payments and smart contracts will execute as written. The only real threat to this type of certainty would be something on the order of a “51% attack”. In which 51% or more of the total network processing power was controlled by a group of miners. If this were achieved it would allow 49% of all transactions to be returned as invalid, and only the 51% to be rewarded for the network transactions. This would allow them the ability to control which transactions received confirmations, effectively allowing them to block payments to some or all users of the network. Possibly more devastating, it would allow the people in control of the network to reverse completed transactions, giving them the ability to double spend coins. While these actions would most likely not destroy the network even if they proved highly damaging, it would certainly, greatly reduce public trust in the idea of blockchains and cause another deep market correction.

This kernel of certainty for now though acts as an anchor for the entire layer-2 concept. A fixed, constant point that developers of 2nd-layer developers can attach their mechanisms to, to create greater function of the blockchain by only requiring them to sometimes refer back to it. While these mechanisms would certainly never offer the same security as the original blockchain, they would be able to offer enough security and finality, that some could prove to be incredibly useful in the coming years.

State Channels

Or payment channels, an idea which has been around for a few years and was recently implemented into bitcoins blockchain in the form of their lightning network. This idea first described in detail by Jeff Coleman back in 2015 removes the need to have every single part of a transaction happen on the main network since in most cases, is far more computing power than is actually needed. Instead, it will set a "rules" on the blockchain and allow parts of the transaction to happen by two parties sending signed transactions back and forth over the internet rather than the blockchain. In these transactions, a ledger is kept between the two parties that are updated with each new event. Each would contain a "nonce" which is a method of being able to tell after the fact what happened in each. and the only time the blockchain is involved is when the "rules" need to be referenced. Once the business between the two parties was completed, the ledger can be sent to blockchain and compared against the rules, and a singular blockchain payment/transaction will be created instead of the possibly hundreds that went on between the two parties.

Plasma

In mid-2017 there was a paper published by Vitalik Buterin and Joseph Poon, entitled Plasma: Scalable Autonomous Smart Contracts. Plasma, just like state channels function off-chain, but take the idea is a different direction. Plasma aims to be able to "child chains" off of the original blockchain. These child chains can produce child chains of their own and so on. A set of rules is created on the original blockchain that acts as guiding principles for whatever operations or programs on running on the child chains. What this does is allows thousands of transactions to take place on the child chain without creating blocks on the parent blockchain, greatly increasing their speed. The result is quicker transactions, and lower transaction fees due to the transaction not needing to be replicated across the entire blockchain. Each child chain keeps a ledger of what takes place on them that can always be referenced by the parent chain, ensuring continuity of data. But when someone logs onto or interacts with an application running on the child chain, they are never interacting with the original blockchain, beyond creating data that can be analyzed by it.

Truebit

Truebit differs from the previous two solutions in that it is meant to assist Ethereum in running very "heavy" or complex computation off-chain. It will increase Ethereum's total throughput rather than increase its overall total transactions and allow Ethereum based applications to do many more complex things in a way that is still verifiable on the main-chain. This will allow them to run operations useful to Ethereum applications that are too computationally expensive to do on-chain. For example, validating Simple Payment Verification proofs from other blockchains, which could let Ethereum smart-contracts "check" whether a transaction has happened on another chain. Instead of running this very expensive computation on-chain you pay "someone", normally referred to as a "solver", a small fee to do the computation off-chain.

The solver will first pay a small deposit that will be held in a smart contract, they then receive the computation that needs to be made. Once the computation is finished and returned it is verified with a “verification game”, basically having other parties called “challengers”, check the solver’s work. If the result is found to be correct, the solver receives his deposit back + a small fee. If the result is found to be incorrect the original solver loses their deposit, and the challenger who discovered the incorrect result receives the reward.

Sharding:

Sharding is a different idea completely, Instead of developing a 2nd layer, or applications to run on it, shard aims to reduce the data load on each node but not requiring the full ledger to be stored on each one. The method is currently being pursued by Ethereum creator, Vitalik’s research team and often referred to as a Layer 1 solution. Each node will only store part of the complete ledger and when a piece is needed that isn’t stored locally, a request will be made to a node that does hold it. While this method could offer incredible speed increases and reduced strain on each node, it comes with some noticeable drawbacks. With nodes having to rely on other nodes for the information they need to complete and verify transactions it requires more trust to be put into the companies or individuals running them, essentially removing one of the main features of using the blockchain. Ethereum is trying to combat this issue by offering action rewards, basically paying node operators to act a certain way. They are hoping this will result in node operators in working to make sure their node stays active and only outputs verified information.

Conclusion

Even though as of writing this the issues still persist on the network, there are several very promising projects that are attempting to bring the full function and potential of the network to fruition. Layer-2 scaling with off-chain programs like Plasma, Truebit and State channels that take the biggest part of the computation process off of the main blockchain and only communicate when rule checks are needed. And the idea of sharding, which is being actively pursued by Ethereum's main development team. Which aims to create a system of partial nodes that communicate and sends different held part of the ledger to each other as needed, instead of requiring each to hold the entire ledger. It's not clear as of yet which will finally be chosen as the solution to the biggest problem facing Ethereum. WIth both ideas seemingly offering different benefits to the network I am expecting to be a mix of both. It would be a very ambitious endeavor but if sharding can be achieved, then there is no reason layer-2 applications could not work in conjunction with it, either from individual nodes that held the rules for that program or by requesting information across the blockchain from a node besides the one where its chief set of rules was contained.