What is Ethereum and the EVM?
The blockchain revolution started with Bitcoin but Vitalik Buterin saw the potential for blockchain technology to not just create a decentralized currency but also decentralized applications. This was the start of Ethereum.
Blockchain before Ethereum
The blockchain revolution started with the publication of the Bitcoin whitepaper and the launch of the Bitcoin network in 2009. Bitcoin showed that it is possible to create a decentralized currency that has strong security guarantees without the need to rely on a trusted third party. The Bitcoin network has limited functionality: it allows individuals to send and receive bitcoins, or to earn new bitcoins via mining. Vitalik Buterin saw the potential for blockchain technology to not just create a decentralized currency but also decentralized applications. To be able to create a blockchain that can host decentralized applications, a few things are required: a virtual machine that can host applications called smart contracts, a programming language for developers to write smart contracts and a blockchain that can scale as the number of applications and users grow. This vision came together in the Ethereum whitepaper and some of the high-level details are discussed below.
What is the EVM?
The Ethereum Virtual Machine (EVM) is a virtual machine that is native to the Ethereum network. A virtual machine (VM) is a software-based emulation of a physical computer and has its own operating system, memory and storage. The EVM allows for any dApp (decentralized application) developer to deploy their application to Ethereum and for users to interact with those applications in a permissionless manner. The virtual machine abstraction allows for the permissionless deployment of applications and separates the application layer of a blockchain from the security and consensus layer. Because Ethereum is permissionless and allows for anyone to deploy and access applications, it has been analogized to a “world computer,” a public good that is not controlled by any one entity. Applications in the EVM are typically written in Solidity, a programming language created specifically for Ethereum.
What is Solidity and Deterministic Programming?
Solidity is a high-level programming language for writing smart contracts. Solidity, unlike traditional programming languages, is a deterministic language. In the context of smart contract development, that means that the same inputs will always produce the same outputs, allowing for predictable and reliable execution of code. Nearly 44 million smart contracts have been deployed to Ethereum since inception, facilitating over a billion transactions.
Solidity is not without its criticisms. It has a steep learning curve for new developers and is notoriously difficult for writing secure smart contracts. Automated solutions for Solidity smart contracts security can miss critical violations, produce false positives and fail to achieve sufficient code coverage on realistic contracts. That said, Solidity has gained significant mindshare over the last 5-7 years, and there now exists excellent developer tooling to facilitate smart-contract development, such as Remix, Truffle and Ganache. Popular online Solidity courses, such as the one taught by Bina Ramamurthy, attracts over thousands of new students every year.
How do Autonomous Smart Contracts work?
The EVM and Solidity enable developers to write smart contracts. Smart contracts, a term first proposed by Nick Szabo, refers to a “set of promises specified in digital form, including protocols within which the parties perform on these promises.” Another way of thinking about smart contracts is that it is a program that runs on a blockchain and executes certain logic. The smart contract is “autonomous” in the sense that it executes without the need for human intervention. This can help to ensure that the terms of the agreement are carried out in a transparent and secure manner.
A hypothetical example is that a smart contract can be used to facilitate the exchange of money, property or other assets between two parties. The contract can specify the terms of the agreement, such as the price of the property, the date of the transaction and any other relevant details. Once the necessary conditions are met, the contract can automatically execute the terms of the agreement and transfer ownership of the property to the buyer.
The most well-known smart contracts on Ethereum are used to facilitate financial transactions. For example, Aave allows users to deposit and borrow different crypto tokens with autonomous mechanisms for dealing with bad debt. Uniswap enables Ethereum users to trade crypto tokens with each other without the need for manually matching trades with a counterparty. OpenSea enables Ethereum users to trade NFTs - non-fungible tokens - and has facilitated over billions of dollars of transactions since inception.
Where will Ethereum Go From Here?
As Ethereum has become more and more popular over the last few years, the network has run into scaling issues. Ethereum currently processes anywhere from 10-15 transactions per second. When demand for transactions exceeds the limited supply, the price to transact on the network can skyrocket. At certain points in 2021, it could cost an Ethereum user hundreds of dollars to execute transactions on the applications mentioned above, or thousands of dollars for more complex transactions. As a result, the Ethereum community is developing novel technology to increase the throughput of the network. These novel technologies include anything from zk-SNARKS, Optimistic Roll-ups, side-chains, Sharding and much more. These novel technologies can help scale Ethereum while still preserving the decentralization of the network.