As a newbie, I found it surprising that, this link calls out the various clients and choosing between them, without formally defining
what is an Ethereum client. As I see it, an Ethereum client should do the following:
- Node discovery and communication
- An EVM container
- Generate and store confirmed blocks
- Expose end-points for external communication
What else would you like to add?
Comments
Additionally the Ethereum protocol is an extensible set of protocols which clients can implement and currently include:
- eth: The main blockchain protocol.
- shh: The Whisper live messaging protocol
- bzz: The Swarm storage layer protocol
Neither shh or bzz are in production on the live chain.The P2P protocol used by clients is called DEVP2P, which is based upon the Kademlia P2P protocol.
The message/data encoding protocol is called RLP (Recursive Length Prefix).
Client local DB's typically use LevelDB (Geth) and RocksDB (Parity)