Ethereum smart contracts: Hello 1970s :)

Apart from providing magic internet money, blockchains are often seen as new database technology that is horrendously expensive and simply does not scale. This is a typical point of view when trying to blockchain-ify some internet-inspired business model or application idea. A core consideration that we look into together with our clients at Validity Labs is to find out which data really needs to be on a blockchain and which data definitely should not be on a public blockchain. Before walking through such a case, we first want to assess here why the public Ethereum blockchain is expensive and what you can realistically do with smart contracts today.

In the early 1970s, acoustic couplers were interfacing the internet at ~1kB/s, which is about as fast as data throughput for smart contracts on the Ethereum blockchain today. (source: Wikipedia)

The basics

The Ethereum blockchain is currently a network of over 20'000 computers. The computers participating in the Ethereum network are called nodes, and most of them verify the security and integrity of every single transaction and store all transactions that have ever taken place. That comes at a cost and will limit the specific use-cases and implementation details considerably. The Ethereum network does not only provide the rails for your new project idea but in parallel also runs a multi-billion-dollar financial system in form of its native currency called Ether. It also enables a new tokenized world economy that is already being used today by hundreds of companies and has reached a total valuation of several billion dollars. To prevent spam and denial-of-service (DoS) attacks on this computer network, powered by economic incentives promising no less than generally the end of many corporate business models, we need to pay transaction fees. These transaction fees are paid to the miners that secure the network with their hardware. Thus we have a network that is protected by participants and incentivized (paid) by its users.

The costs

Transaction fees on Ethereum are charged for both sending data as well as executing computational tasks, therefore sending large amounts of data or doing complex computations is very costly.

Data limits

At present (early 2018) it costs about 1.6 cents¹ to store 32 bytes of data. Storing a message of 1000 characters would cost 1000/32*0.016 = USD 0.50, adding only one image of 1 MB would cost another USD 500 and at the same time spam everyone’s hard-drive on the network. Things start getting really costly when we want to operate the network at scale, so this does not make sense for most applications. Additionally, even if you were willing to pay for these fees and more, the network imposes an upper limit in throughput called block gas limit. If we were to only send data to the Ethereum blockchain and not use it for any computation, we could reach a data throughput of approximately 1kB/s (see footnote ²) — a speed that acoustic couplers had in the early 1970s. Interestingly it seems that this was the threshold of data throughput which enabled chat, email, message boards, games and other first applications that built the foundations of today’s internet. Some of these applications seem fairly similar to the first decentralized applications (dApps) that we see on Ethereum today. There is one important difference though: we are all sharing this one computer and are in constant competition for who gets to use it for what, thus outbidding other users/investors that have to wait until their transaction gets incorporated in a block. Realistically we have current waiting times of a few minutes until a transaction is settled in the Ethereum blockchain when paying only a few cents as a transaction fee. We can decrease this time span if we are willing to pay more.

Computational limits

Computational performance is typically measured in floating point operations per second (FLOPS). Unfortunately the Ethereum virtual machine does not yet support floating point numbers but only integers. Therefore we will consider the next best metric — instructions per second (IPs): if we were to do only simple arithmetic instructions (adding and subtracting) as well as reading and storing data in memory, then we can reach a throughput of 0.19 MIPS (million instructions per second)³. This is somewhere between computational power of the Intel 4004 and 4040 processors, introduced in 1971 and 1974 respectively. Ethereum is the first public blockchain that has allowed general computations (also called Turing complete) to enable applications, such as share (or token) registries, or games (e.g. Crypto Kitties) to go viral. Likewise the Intel 4004 was the first commercially available monolithic CPU and enabled a range of applications, starting with calculators and pinball machines.

The Intel 4004 processor, produced for the first time in 1971, has about as much computational power as smart contracts have on the Ethereum blockchain today. (source: Wikipedia)

The bottom line

Public blockchains today are limited in processing power, expensive, and cumbersome to work with. Yet they might very well provide the transformative technological infrastructure that will spark an innovation cycle over the next 30 years, just as we have seen with the internet over the past 30 years. Right now, we are at the level of the acoustic coupler and Intel 4040; taking us to the next level: dial up modem and C64 for everyone! BTW: You can already see the first blockchain dial-up modems promising faster speed and lower costs being built already today, open-doors 365 days a year (they call it open-source today). Despite its limitations we can already see first developments of incentive models today that are threatening entire industries tomorrow. The future is unknown, but the rewards for early movers are tremendous.


Talk to us if you are interested in exploring blockchain use cases in an educational fashion in your industry.


Footnotes

[1] storing 1 word (32 bytes) costs 20'000 gas; currently transactions with a gas price of 1 GWei take under 2 minutes to confirm, which is ok for our example; the Ether price is around USD 800 and so we have to pay 20'000 gas * 1 GWei/gas * 800 USD/ETH / (1e18 Wei/ETH) = 0.016 USD.

[2] the current block gas limit of 8 million combined with a block time of 14s and the cost of storing 1 word (32 bytes) of 20'000 gas yields a maximal data throughput (assuming no computations at all) of 8e6 / (20'000 gas) / 14s * 32 bytes = 914 kB/s.

[3] ADD, SUB, MLOAD and MSTORE all cost 3 gas, thus at the current block gas limit of 8 million we could reach 8e6 / 3 / 14 = 0.19 MIPS