The Ultimate Guide to Why Ethereum Is Not The Right Choice
This article will aim to not be overly opinionated but rather focus on facts and realities related to why Ethereum should not be considered for business, government, enterprise, or general app development.
I hope to answer these questions that you might have:
- What are the downsides of Ethereum?
- Is Ethereum free?
- Does Ethereum have security risks?
- Is Ethereum scalable?
- Is Ethereum the right fit for my business?
Ethereum rose to fame due to its ability to let developers build meaningful applications on top of a blockchain for the first time.
Prior to Ethereum we really only had Bitcoin, and Bitcoin is simply a currency.
You could build wallets and other payment-related applications related to Bitcoin itself, but not much more. This made Ethereum widely popular in that developers could launch their own coins and build their own decentralized applications.
Ethereum Features
I will quickly list and explain the core features of Ethereum for those of you who aren’t aware of them.
- Decentralized network
- Immutable ledger
- Autonomous smart contracts
Decentralized Network
Ethereum is a decentralized network. At the end of the day this means that no one person or entity controls the servers, data, or infrastructure. The network is governed by thousands of participants who host nodes. This is a core component to blockchain technology and almost all other blockchain platforms share this same feature.
Immutable Ledger
Another core component of blockchain technology is a ledger whose history cannot be manipulated. This aspect is also shared among all blockchain technologies.
Autonomous smart contracts
Smart contracts is where Ethereum has its unique positioning and featureset. Some blockchains have smart contracts and some do not. And if you are wondering, “Wait, can blockchains work without smart contracts?”, the answer is absolutely yes.
Autonomous means self-managing, so an autonomous smart contract means that a developer writes code, deploys it, and then the code manages itself. Everyone who uses the code follows the same contract rules.
For further clarity, think of an escrow service needed to buy a house. The buyer gives the funds to a third party. The seller provides the deed to the third party. When all the agreements are signed and covenants fulfilled, the third party gives the deed to the buyer and the funds to the seller.
With Ethereum, a smart contract is that third party, except it is not a human or a business, it is a contract managed by rules written in code. Free from human intervention.
Ethereum and the Ethereum community are very passionate about this particular feature.
What are the Downsides of Ethereum?
I’m going to cover the major downsides to Ethereum in relation to considerations a business, government, developer, or technical leader must make on behalf of their organization.
The specific downsides:
- The cost of building on Ethereum
- Security vulnerabilities on Ethereum
- Ethereum scalability issues
Ethereum is Expensive
Ethereum is very expensive.
I will explain the costs of Ethereum through an use case.
CoolWater company sells bottles of water. The company wants to encourage its customers to recycle used empty plastic bottles and will give credits to customers that can be used to redeem free water. Here is the flow they have designed for this program:
- Customer purchases water bottle
- Customer downloads CoolWater app and scans barcode. This creates a smart contract on the blockchain
- If the bottle makes it to the recycling company, they scan the barcode, the smart contract is marked as complete and the user gets some free credits
The recycling program is a success. 1,000,000 water bottles are recycled per month.
Now, let’s take a look at some of the costs incurred by using Ethereum.
Recently the cost to deploy an Ethereum smart contract was $1.25 (these prices are variable).
Recently, the average price for a transaction on Ethereum was $0.28 (these prices are variable).
I’m not going to dig into the “whys” and edge cases and “here is how you get around that”. Remember, we are looking at this through the eyes of a decision maker for an organization.
The CoolWater recycle program will require:
- 1 smart contract per bottle
- A transaction to mark the bottle as purchased
- A transaction to mark the bottle as recycled (and to send funds)
Using very simple math we can calculate costs.
1,000,000 bottles recycled / mo = 1,000,000 smart contracts deployed @ $1.25 each = $1,250,000
2,000,000 transactions / mo @ $0.28 / transaction = $560,000
In this scenario it might cost CoolWater company $1,810,000 / mo for its recycling program code.
Now, an Ethereum expert might argue that you should not deploy a smart contract for every bottle and instead have one smart contract that processes the million bottles. So in this scenario you might be able to reduce the costs to $560,001.25 / mo
One issue with NOT deploying a smart contract for every bottle is that we are processing millions of transaction through a single potential point of failure. Any experienced programmer would deploy a new contract for each, “contract”. So as a side note, with Ethereum, you often have to write code that doesn’t make the best sense in order to reduce costs. Which is another red flag in my book.
Let’s compare this same scenario using the Stellar blockchain.
A smart contract on Stellar that solves our problem would require 2–3 transactions. Let’s say 3 transactions. There is no cost to deploy a contract on Stellar. Transactions on stellar are less than $0.01. Let’s round to one cent.
3 tx @ $0.01 x 1,000,000 = $30,000 / mo
$30,000 is much cheaper than $560,000. Also, the costs would likely be lower than depicted here. As I said before, Stellar transactions are typically lower than one cent.
I’m not comparing all the blockchains here, but I want you to understand that you have other options that solve similar problems.
Security Vulnerabilities on Ethereum
Ethereum’s greatest strength is also its greatest weakness: autonomous smart contracts.
Now, I must remind you that this article is written for those looking to make important decisions, not written for Ethereum maximalists that are ready to argue against all of my points. There are reasons why Ethereum is built the way that it is, and they are all good reasons.
The reality is businesses and organizations care about more than just decentralization, they have to be able to produce results and profits and keep stakeholders satisfied.
Caring more about the whys than the practical applications of Ethereum is like the DMV explaining the importance of driving tests, exams, forms, documents, and licensing to a prospective driver. All of those points may be true, but at the end of the day that person just wants to get on the road and drive. And if a new competitor DMV opened up in town, removed all forms and wait time and got you on the road in 5 minutes, you can be sure everyone would use the new DMV instead of the old, even if the new DMV was cutting corners.
So going back to security — Ethereum has a major security vulnerability in smart contracts.
The vulnerability is also a feature, all smart contracts are publicly viewable AND callable by anyone in the world.
Are any of these questions crossing your mind?
Q: If we publish code for our ICO can people try and hack our functions?
A: Yes
Q: We want a smart contract that can hold millions of dollars. Can everyone see it?
A: Yes
Q: Can I stop people from looking at our code?
A: No
Q: Can any programmer try and attack our smart contracts?
A: Yes
Q: Has anyone ever successfully stolen money from a smart contract?
A: Yes. Many times.
History of Theft
Here are some events that occurred where money was stolen from Ethereum smart contracts:
- SpankChain loses 40K in hack from smart contract bug
- 3.6 million Ether stolen in DAO hack
- $300 million USD stolen/frozen in Parity Ethereum hack
- $240,000 worth of EOS tokens stolen in smart contract hack
These are just a few of many other smart contract hacks.
Is Ethereum Secure?
The answer is no, Ethereum is not secure. I speak on this subject at blockchain conferences. After my presentation I get a short line of people who want to argue with me.
This is what they typically say:
“Ethereum is absolutely secure. It is the developers that are writing bad code”
Then I agree with them. The problem is humans. Since the dawn of code, developers have written buggy code. Even some of the biggest banks like Wells Fargo or JP Morgan Chase have bugs in their code.
So what is the difference between let’s say Wells Fargo’s (private) code and Ethereum (public) smart contract code?
- Private code cannot be viewed by the public
- Private code cannot typically even be accessed/called by the public (due to authentication)
These two points alone make all of the difference. If you don’t know which functions to call as a hacker, you can’t call them.
Also I might add that financial institutions such as Wells Fargo have spent millions of dollars in hiring security experts to ensure their code is robust. With Ethereum developers in such short supply, you get low-level Javascript developers who will quickly write smart contracts for anyone willing to pay them.
Basically if you write an Ethereum smart contract you are writing a financial application that may process millions of dollars. And you just hired a guy in India for $10 an hour to build it for you (so you could save money).
Can I have secure smart contract code? In my opinion, not really. I mean you can do what some people do and hire security firms like Zeppelin who will charge you an insane amount of money to audit your smart contracts.
Or you could use other blockchain platforms where you can still have smart contracts or transactional code, but the contracts aren’t publicly callable.
If you were going to build out the contracts needed for the CoolWater example, you could easily spend $300,000 on an Ethereum developer and then an additional $250,000 for security audits — all for a few lines of code that could have been done off-chain or in a more private contract environment for a few thousands bucks.
Is Ethereum Scalable
No, Ethereum is not really scalable.
Many blockchains suffer from scalability issues. Ethereum has it worse than others. The first scalability issue that most blockchains suffer is block times.
Let’s say that a blockchain has an average block time of 60 seconds. Think of those TV contests where you put as many things in the shopping cart within 60 seconds. Whatever you have in the cart when the timer runs out is what you get. That is kind of how block times work. You could process 10,000,000 transactions in a single block, but if they all go in within the first second, you will still have to wait 59 seconds before they are written to the blockchain.
This is very slow. Some blockchains handle this uniquely and very well, other’s like Ethereum do not.
One example where scalability was an issue on Ethereum was the case of CryptoKitties. CryptoKitties was a card game of sorts and acquired up to 1.5 million users. During the height of its popularity this one app used up to 25% of the entire Ethereum network traffic.
Think of it like this. You and your buddy want to go to HomeTown buffet one day. Its one of those weird cravings where you want to go eat at a nasty place because you know they put some type of addictive chemical in the food.
As you walk in the front door to the register to buy your food ticket, you notice there are 15 people in front of you. What is worse is they all belong to the same party. Perhaps one person is even paying for them all. If you had arrived there 1 minute before you would have been in within seconds. Now you must wait 20 minutes for one party to get through.
That was CryptoKitties on Ethereum. This also caused transaction fees to increase for everyone.
If you are building a product that will have high volume of users or transactions, never, ever, ever use Ethereum.
If you want to process a few transactions here and there, and are okay with the security risks, Ethereum could be okay.
Conclusion
This is not a scientific guide and I’m not going to take the time to pull in references and footnotes. All this information is publicly available on the Internet, or you can actually write the code like we do over at Blockstart and test these scenarios out first hand.
I’m a CTO and developer. Products, teams, developers, and product owners rely on me to help them make wise and affordable decisions on blockchain. In my professional opinion, Ethereum is a playground and should not be used for production grade applications.
Because I know you’ll ask, some blockchains I think that are production ready are:
Final Note: High costs and performance issues as depicted above have driven non-blockchain technologists to publicly preach “Blockchain is like a slow database” and “Blockchain is useless”. Ethereum’s performance issues and costs help drive those opinions, which are completely inaccurate. Blockchain can be affordable and fast, just not with Ethereum.