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?