How does Ethereum deal with blockchain scalability?

The Bitcoin community are currently trying to solve the problems of blockchain scalability. Some are advocating an increase in block size, others are talking about things like Segregated Witness. Lots of arguments have ensued.

Firstly, what is the (maximum) size of Ethereum's blocks, and how many transactions can they hold? Are they bigger than Bitcoin's blocks, or are the technologies different enough that a direct comparison can't be made?

Following on from this, how does Ethereum deal with the problem of scalability, if at all?

Ethereum blocks are limited by the block gas limit (currently around 4.7 million gas). Each transaction specifies how much gas it's willing to spend. A block can only fit as much as the block gas limit, so if someone specifies a transaction of 4.7 million gas, a miner cannot fit any more transactions in that block.

So you can see some differences against Bitcoin. Another important one, is dynamic behavior that every time a block is mined, the miner of that block can nudge the block gas limit (BGL) either higher or lower (from the previous block gas limit), by a factor of 1/1024. For example if the current BGL is 1024, the miner of the next block can set the BGL to be as low as 1023, as high as 1025, or somewhere in between.

Other scalability challenges:

Above is about on-chain scalability. A complimentary approach to scalability is to do things off-the-blockchain while being able to still use the blockchain when necessary. Examples:

For more current discussions, see the live research and EIP channels. And keep an eye on the Ethereum Improvement Proposals.

Just to put up to date this question

I did the math to show the approx tx/s:

• The block gas limit is 7,999,992

• Transaction costs 21,000 gas (let's assume nothing else is attached)

• That's 380,952 transactions per block

• With a blocktime of around 15.03 seconds. As https://ethstats.net/ shows.

This gives us aproximately: 25.346 tx/s.

At the end of your question, you have mentioned some possible ways to bring this number up.

• The more miners on the network, the more network difficulty, making reducing the time from the 15 s/block quite hard.
• More nodes will increase the block time even more because more delay between them will appear and then, more time will be needed for them to sync with one another.

There exists an inversely proportional relationship between the consensus volume and the tx/s rate. The more time the nodes need to accomplish the sync and achieve consensus, the less tx/s you will have.

To improve all of the features you mention, there's now a few ways on which Ethereum is entering:

• Sharding (Borns, while you realize that the whole blockchain can't process more transactions than a single node, can): "Solution" -> We split the state and history up into K = O(n / c) partitions that we call “shards”. For example, a sharding scheme on Ethereum might put all addresses starting with 0x00 into one shard, all addresses starting with 0x01 into another shard, etc. In the simplest form of sharding, each shard also has its own transaction history, and the effect of transactions in some shard k are limited to the state of shard k. One simple example would be a multi-asset blockchain, where there are K shards and each shard stores the balances and processes the transactions associated with one particular asset. In more advanced forms of sharding, some form of cross-shard communication capability, where transactions on one shard can trigger events on other shards, is also included.

Ethereum Foundation is donating lots of \$ in order to incentivate the research on sharding and plasma.

Here I leave some really good GitHub's info about sharding.

Another important improvement is the next:

• CasperFFG (As said before, PoW consensus algorithm is not scalable, because of that, new Proof of Concepts of consensus algorithms are being researched. Now Ethereum plans to move to PoS by implementing CasperFFG to start the transaction period on which 1/100 tx's will be done by PoS. Essentially it's a mixed PoW, PoS algorithm which it's purpose is to arrive one day to a PoS full implementation.) Solution -> By using PoS consensus algorithms, you eliminate the mining concept (as doing non-profitable calculations to find a hash in a certain range). Then, the block time can decrease till arriving at even 5 - 7s (Said by Vitalik Buterin).

Here I leave the CasperFFG paper's link.

There are more ideas to improve the speed of the network without losing it's the main objective: consensus. But I have posted the most important ones.

Hope it helps!

• Please fix your commas versus dots. I understand that 7,999,992 = 8 million, 21,000 = 21 thousands, but 380,952 = 381? Commented Feb 12, 2021 at 16:31