The voting on ethereum analysis by Dominik Schiener calculated that it would take 40 days to hold the UK general elections on the ethereum blockchain due to the transaction and gas limits.

I redid his math with some more current figures, here is what I calculated:

  • the gas limit is 3,141,592 (pi million)
  • transaction costs 21,000 gas (let's assume nothing else is attached)
  • that's 149.5996 transactions per block
  • with a blocktime of around 17.43 seconds
  • that's 4956.971 blocks per day

The result is the network allows for this use cas only 741560.9 votes (transactions) per day. But what if we require a volume of let's say 10x or 100x the transaction rate? How does the ethereum network scale? How fast can gas limits be adjusted? How many transactions can the network handle?

up vote 16 down vote accepted

Although your calculation is mostly correct, it did not take into consideration the network's capability to slowly increase the block gas limit. If a block becomes full with transactions, miners are allowed to bump the limit of the next block by a certain amount (for details please see Yellow paper, page 6, equations 40-42 + surrounding context).

Based on the above rationale, there is no theoretical limit to the number of transactions that can be squished into a block, just needs a bit of time to adjust. Practically you need to get those transactions to the miners, they have to process it, distribute the results etc, so based on how optimal the implementations are, there's an upper limit. What that is with the current network, nobody can really say. We did extensive spam tests on the Olympic test network where we actually rewarded people to keep pushing junk into the network, and reached a transaction throughput of about 25 tx/sec. Since then a huge amount of work went into the implementations, so they would probably be able to handle even more. However, calculating with this 3/4 year old experimental results, you would get about 2.16M votes per day.

That number is probably higher now, but you get the order of magnitude that the network seems to be able to handle. To push this number further up, there's extensive research being done in scalability and proof of stake, which would enable orders of magnitude larger transaction counts, but that's a long term goal.

  • 1
    This answer gets quite some incoming links but I was unable to find any further information on those 25 tx/sec anywhere else. Would you have details? e.g.: For how many blocks and under what conditions was that rate achieved? – Validity Labs - Sebastian May 7 '16 at 16:57

Ethereum is fundamentally limited by single threaded performance of a CPU. Discussion over GAS costs/etc is misleading because the maximum GAS that an individual node can process is limited and there is relatively little room to optimize execution.

Early test networks reached 25 tx/second. With optimizations they may be able to reach 50 tx/second.

In comparison, Bitcoin is limited to 3 tx/second by an artificial block size which could be increased to 100 tx/second without running into the CPU limit.

Also note that the stress test was based upon a smaller "state" which allowed the performance to be maximized. Other benchmarks of the latest JIT interpreter show that the first 1M blocks, containing less than 20K transactions, could be processed at 288 blocks/second which shows an average of 5.6 TPS with the CPU / Database being the bottleneck.

The stress test likely involved the smallest possible transactions, any serious application will seriously reduce the TPS of the network.

  • 2
    This is interesting, @bytemaster would you have a reference to those benchmarks with details on the 5.6 TPS? – Validity Labs - Sebastian Jul 12 '17 at 18:17

protected by Afri May 22 '17 at 10:11

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.