Similarly to Bitcoin, Ethereum leverages proof-of-work blockchain technology to achieve distributed consensus. By providing a fully fledged Turing-complete programming language instead of Bitcoin’s simple scripting language, Ethereum allows arbitrary applications referred to as smart contracts to be run on its blockchain. For example, a basic Namecoin version for the Ethereum blockchain can be written with a few lines of code. Creating subcurrencies only requires minimal programming effort as well. Another concrete use case of Ethereum is to build decentralized autonomous organisations (DAOs).
Ethereum in fact provides a decentralized platform to build smart applications. The contracts run exactly as programmed, with no possibility of downtime, censorship, fraud, or third-party interference .
In what follows, we discuss the basic operations of Ethereum in greater detail.
Similar to Bitcoin, Ethereum features accounts that reside at specific addresses on the blockchain. At the time of writing, Ethereum provides two types of accounts: (1) externally owned accounts (EOAs), and (2) contract accounts. EOAs are controlled by private keys and akin to Bitcoin accounts. Contract accounts, on the other hand, are autonomous objects. They have associated code and persistent storage. Their code is executed whenever they receive a transaction or message (see Section 9.2.3).
Both account types have a balance field indicating the amount of Ether (Ethereum’s internal currency) that the account currently possesses. Note the difference to Bitcoin where account balances are implicitly given by unspent transaction outputs (UTXOs). Moreover, accounts maintain a nonce field expressing the number of transactions that they have issued so far.
The nonce, the balance, and the hashes of the account's storage and code define the account state.