Dorokhov.codes

03. Ethereum Clients

Full-node clients

There are many implementations of the Ethereum protocol, written in different languages:

Name * Language Comment
Geth Setting up Go Most popular client, actively maintained.
Nethermind C# High-performance client, actively maintained.
Parity Ethereum Setting up Rust Deprecated, no longer maintained.
cpp-ethereum C++ Deprecated, no longer developed.
pyethereum Python Mainly used for testing and research purposes.
Mantis Scala Developed for Ethereum Classic, mostly inactive now.
Harmony Java Deprecated, did not gain wide adoption.

We can install them manually or using package managers, Docker-containers.

Requirements

Disk space. These links provide up-to-date estimates of the blockchain size:

Remote clients

Remote clients can be used to connect to existing networks, such as your own full node, a public blockchain, a public or permissioned (proof-of-authority) testnet, or a private local blockchain. In practice, you will likely use a remote client as a convenient way to switch between all of the different node options.

Examples of remote clients:

  • MetaMask.
  • Emerald Wallet.
  • MyEtherWallet.
  • MyCrypto.

A full node running on a live mainnet network is not necessary for Ethereum development. You can do almost everything you need to do with a testnet node (which connects you to one of the smaller public test blockchains), with a local private blockchain like Ganache, or with a cloud-based Ethereum client offered by a service provider like Infura.