One of the most prominent next-generation blockchain platforms, Ethereum has energized a global development community and reimagined how decentralized technology can be applied to new digital challenges.
What is Ethereum?
“The next Internet.”
When viewed similarly, “the blockchain”, or the public, permissionless blockchain protocols, could be seen as a more primitive version of what could become a mature “Internet of Value”. Such a public utility could one day provide a similarly layered architecture to expand the Internet of Information, or the Internet as we know it today, to deliver all manner of financial and non-financial transactional services.
First introduced in 2014, ethereum can be seen as both a realization of this future, and a recognition of the limitations of the bitcoin network, the first widely used public blockchain
In his keynote announcement for the project, creator and inventor Vitalik Buterin described ethereum in such terms, arguing that bitcoin was not designed to serve as the blockchain’s answer to the Transmission Control Protocol (TCP) or Internet Protocol (IP), the code that forms the basic communication language of the Internet.
“Bitcoin was designed to be a [Simple Mail Transfer Protocol] SMTP. It’s a protocol that is very good at one particular task. It is good for transferring money, but it was not designed as a foundational layer for any kind of protocols to be built on top.”
“Ethereum does not have features, it just has a programming language,” he said.
Ethereum’s “business problem”, as articulated by former ethereum CCO Stephan Tual, is that most Internet services are centralized.
“You trust your bank to keep your money safe. The same is true of Facebook when you upload a picture of your kids or you push a document to Dropbox. As a developer you need to submit your application to an app store and risk having it removed.” Tual explains.
As with the Internet, Ethereum similarly isn’t just one thing, but rather a sum of many different parts.
The following section attempts to highlight these specific components and illuminate the functionality each provides to the larger ethereum network.
Linguistics & Scripting
In computer science, a scripting language is a programing language that supports scripts, or programs designed for run-time environments that execute tasks and reduce the need for human operators. Because of this, scripting languages tend to be best utilized for experiments and rapid prototyping.
Bitcoin has an intentionally rudimentary scripting language, and there’s a reason for this. From its inception, bitcoin’s developers have prioritized the ability to “push” transfers of bitcoin via the bitcoin network over all other applications.
While there have been discussions about adding a more powerful scripting language to facilitate easier application development, the view of the bitcoin development community has largely been that it is more important to prioritize censorship resistance and network security over adding functionalities to the code.
Ethereum, by contrast, aims to be “Turing-complete.” This means that, if a system has unlimited resources, memory, computational power and storage, then infinite “loops” can be executed. In other words, the logic and functionality that may be embedded in ethereum transactions is only practically limited by the availability of the protocol’s native currency.
The most notable difference between the two blockchains is that ethereum blocks contain both a transaction list and the most recent “state” of the ledger of these transactions.
This is a necessary feature to manage two types of accounts:
• Externally owned accounts (EOAs). Defined as the basic form of account, EOAs interact with and generate updates on the ethereum blockchain.
• Contracts. Contracts programmatically execute when they receive instructions in the form of a transaction from an EOA. Contracts can push or pull funds, and request these actions from other contracts, calling on the code to perform dynamic actions.
Ethereum notably does not use transaction inputs or outputs, which deviates from the unspent transaction outputs (UTXO) model bitcoin popularized.
In bitcoin’s model, each newly minted bitcoin becomes an unspent transaction output with an owner who retains the right to consume that bitcoin at a later time. During a bitcoin transaction, these UTXOs become the inputs that are “consumed” in the transaction. When these bitcoins are spent, or pushed, to another user, a brand new UTXO is created.
Ethereum, by contrast, uses a more familiar method. It stores the current “state” of its network, including a full list of accounts and their associated balances. Rather than confirming that UTXOs usedin a transaction are valid, ethereum determines whether the sender has a sufficient balance, much like a bank verifying whether a check will clear.
This design feature becomes important when transactions include contracts as recipients. If the transaction recipient is a contract, then that contract’s code will execute, changing both the state of that contract and potentially triggering other contracts to execute code as well.