Solidity - How I loathe thee

Disgust: this is the best word I could find to describe how I feel about working with Solidity. 

That's right - it's a rant post.

A while ago I was doing a blog series about building a game on Hyperledger Fabric. I promised myself, and my readers, that I was going to keep posting and that I wouldn't let my work distract me. Well, the good news is that my primary work (the work that puts food on the table) is not what has kept me from making progress on my personal project. It's a stealth project I've been developing a complex Solidity contract for.

There is a network effect behind EVM that cannot be denied. Most blockchains that are fighting for a prominent spot in the L1 market are EVM-compatible in order to draw everyone in. For this and other reasons, I believe that EVM is the best blockchain technology for this stealth project to target. Unfortunately, this means I don't get to use my extensive HLF knowledge; instead I had to learn Solidity and write a massive contract in it.

As with learning anything, there are pains and groans to be expected. This case is different though. When working in Solidity I feel very much like I went back in time to the era of programming via punch card. When doing software development, there's always an amount of "slowness" you feel. Sometimes the slowness is all those little details you didn't see from the 10,000 foot view. Sometimes the slowness is the tool set itself.

Solidity will force you to bend over backwards to implement your logic in it's limited and archaic ways - maps vs. arrays, anyone? If those limitations aren't enough, it will deal the death blow when you have to calculate the gas fees for executing your contract on a public blockchain. To me, all of this means that Solidity (EVM) is holding us hostage in the very space we are meant to be set free: web3. 

The truth is that EVM was a nice idea ~10 years ago, but it has aged very poorly. Much better solutions to the decentralized contract execution problem have already been created - like HLF's solution; yet everyone is stuck using EVM because they want to make sure they can reach the largest possible audience. Written another way: Solidity is the lowest common denominator of smart contract languages.

It's no fun building when the very language and environment you use to build are hindering your progress. It should be a huge red flag when the original EVM implementation (Ethereum), and biggest L1 for smart contracts, admits that it cannot scale to be a globally useful technology, and even encourages people to use disparate layer 2 technologies to meet their needs. That should be alarm bells sounding. What is the point of a universal, Turing Complete, language if it is too difficult to develop in, and too expensive to deploy a contract that actually contains all the logic to run your application? We will never achieve web3 if our execution layer (smart contracts) cannot handle all the logic and data necessary to fully execute what we are trying to do.

I cannot wait for the day when EVM dies, and a more modern blockchain technology is seated on the throne of L1s.

Comments