What exactly is an Ethereum client? Is it a full network node that can post transactions to the blockchain (if that is the correct lingo?) or could it also be a light JS client that connects from a browser to a full node?
Could someone please shed some light on what clients there currently are and what roles they fulfill?
Best Answer
An 'Ethereum client' is just a term. It refers to any node able to parse and verify the blockchain, its smart contracts and everything related. It also allows you/provides interfaces to create transactions and mine blocks which is the key for any blockchain interaction.
Official reference implementations (CLI)
There are currently three reference implementations available, as you already highlighted:
Aleth
- C++ client: https://github.com/ethereum/aleth. (It was formerly known ascpp-ethereum
: https://github.com/ethereum/webthree-umbrella)Geth
- Golang client of thego-ethereum
project: https://github.com/ethereum/go-ethereumTrinity
- Python client: https://github.com/ethereum/trinityAll clients should work the same, from the user's perspective. They provide the same interfaces and so on. For example, if you launch a DApp or the Ethereum Wallet or a DApp browser instance, it should not note any difference in communicating with the client.
Third party implementations (CLI)
Non-official clients implementing the yellow paper specification are:
Besu
- (ex-Pantheon
) Java client by PegaSys: https://github.com/hyperledger/besuEthereumJ
- Java client by the ether.camp team: https://github.com/ethereum/ethereumjEthereumJS VM
- Javascript Ethereum Virtual Machine: https://github.com/ethereumjs/ethereumjs-vmMana
- Elixir by POA Network - https://github.com/mana-ethereum/manaMinimal
- Go client by umbracle - https://github.com/umbracle/minimalNethermind
- C# / .NET by NethermindParity Ethereum
- Rust client by Parity Technologies : https://www.parity.io/ethereum/Third party implementations (GUI)
Non-official clients with a graphical user interface are:
Etherwall
, a Qt client like the good ol' bitcoin clients: https://github.com/almindor/etherwallDeprecated or abandoned projects:
Official reference implementations (CLI):
Pyethapp
- (pyethapp has been deprecated
) Python client of thepyethereum
project: https://github.com/ethereum/pyethappGraphical clients:
AlethZero
(Alethzero has been deprecated
): https://github.com/ethereum/alethzeroMist Browser
(Mist and Ethereum Wallet have been deprecated
): https://github.com/ethereum/mistThird Party clients:
ethereumH
- Haskell client from consensys, but it's not developed anymore: https://github.com/jamshidh/ethereum-client-haskell (project has not been updated in a long time)node-blockchain-server
- simple Javascript server: https://github.com/ethereumjs/node-blockchain-server (project has not been updated in a long time)ruby-ethereum
- Ruby client: https://github.com/janx/ruby-ethereum (project has not been updated in a long time)NOTE: all clients are listed in alphabetical order.