Ethereum’s Components
In Ethereum, the components of a blockchain system described in Components of a Blockchain are, more specifically:
P2P network
Ethereum runs on the Ethereum main network, which is addressable on TCP port 30303, and runs a protocol called ÐΞVp2p.
Consensus rules
Ethereum’s consensus rules are defined in the reference specification, the Yellow Paper (see Further Reading).
Transactions
Ethereum transactions are network messages that include (among other things) a sender, recipient, value, and data payload.
State machine
Ethereum state transitions are processed by the Ethereum Virtual Machine (EVM), a stack-based virtual machine that executes bytecode (machine-language instructions). EVM programs, called “smart contracts,” are written in high-level languages (e.g., Solidity) and compiled to bytecode for execution on the EVM.
Data structures
Ethereum’s state is stored locally on each node as a database (usually Google’s LevelDB), which contains the transactions and system state in a serialized hashed data structure called a Merkle Patricia Tree.
Consensus algorithm
Ethereum uses Bitcoin’s consensus model, Nakamoto Consensus, which uses sequential single-signature blocks, weighted in importance by PoW to determine the longest chain and therefore the current state. However, there are plans to move to a PoS weighted voting system, codenamed Casper, in the near future.
Economic security
Ethereum currently uses a PoW algorithm called Ethash, but this will eventually be dropped with the move to PoS at some point in the future.
Clients
Ethereum has several interoperable implementations of the client software, the most prominent of which are Go-Ethereum (Geth) and Parity.
Further Reading
The following references provide additional information on the technologies mentioned here:
The Ethereum Yellow Paper: https://ethereum.github.io/yellowpaper/paper.pdf
The Beige Paper, a rewrite of the Yellow Paper for a broader audience in less formal language: https://github.com/chronaeon/beigepaper
ÐΞVp2p network protocol: http://bit.ly/2quAlTE
Ethereum Virtual Machine list of resources: http://bit.ly/2PmtjiS
LevelDB database (used most often to store the local copy of the blockchain): https://github.com/google/leveldb
Merkle Patricia trees: https://github.com/ethereum/wiki/wiki/Patricia-Tree
Ethash PoW algorithm: https://github.com/ethereum/wiki/wiki/Ethash
Casper PoS v1 Implementation Guide: http://bit.ly/2DyPr3l
Go-Ethereum (Geth) client: https://geth.ethereum.org/
Parity Ethereum client: https://parity.io/