DEV Community

Cover image for Smart Contracts & Their Limitations
Deepak Gupta
Deepak Gupta

Posted on • Originally published at Medium

Smart Contracts & Their Limitations

In recent years, the use of blockchain technology has exploded. An innovation that drove the large-scale adoption of blockchain is Smart contracts and the Ethereum virtual machine. Let’s dive into what smart contracts are in general.

A smart contract is code distributed and stored across a peer-to-peer network that can be called to execute logic and store information. The term smart contracts was coined because of their nature; they are public, immutable, self-enforceable, self-verifying, and any actors interacting with the contracts are agreeing to the outcomes.

Although the concept of smart contracts is quite old, it wasn’t until Ethereum’s virtual machine that smart contracts as they are known today sprung to fruition.

The introduction of smart contracts has revolutionized what is possible beyond a simple ledger on the blockchain: derivatives, automated market makers, NFTs, identity security, GameFi, and more.

Improved forks of the EVM (Ethereum Virtual Machine) have been developed over time, but the core functionality of smart contracts has relatively stayed the same. This is great for composability across various chains and networks, but the limitations of smart contracts are also apparent throughout the web 3 space.

Smart Contract Limitations

Deprecated Logic

It is possible to use existing logic on the chain via delegation and libraries, meaning existing logic does not have to be redeployed on the chain. This is an amazing feature of the EVM and reduces development costs. However, breaking version changes, changing standard implementations, and gas-efficiency improvements frequently render old libraries obsolete. Since different chains don’t generally share the same state, logic must be deployed on each chain that an actor wants to interact with. More than 60% of smart contracts never see any real use.

Gas and Size Restrictions

Ideally more and more complex logic can be added to the chain over time, building a diverse support network; yet progress has been disappointingly slow. Some logic is also not viable to store on chain due to the sheer file size of the solution.

This is a problem both for the actor that deploys or uploads the contract, as they must effectively pay for the nodes to store the code forever; and whenever the contract is interacted with, as more complex code requires more opcodes which also accrues gas costs. Gas prices and the cost of the chain’s underlying denomination make deploying logic to the blockchain expensive and reliance on low-level calls can be greatly impacted by chain congestion.

Automation

Another big limitation of smart contracts is their lack of autonomy: all events on the blockchain are triggered by an externally owned account (EOA). Contracts can interact with other contracts but typically need explicit integration logic in their code and can only do so when instructed to by an EOA.

Data

Lastly, Data is another limitation of smart contracts. Any information on the network (if public) is reliable and inexpensive, but all other data can only be introduced by an EOA which introduces a host of security issues.

Stay tuned for the next article where we will learn how various protocols are tackling these problems and working to provide solutions.

Top comments (0)