This is a read note of Mastering Ethereum Ch03: Ethereum Clients. Ethereum Yellow Pape is a formal specification that defines various Ethereum Improvement Proposals and standard behavior of an Ethereum client. The Yello Paper is updated regularly.

1 Ethereum Networks

There exist a variety of Ethereum-based networks that largely conform to the formal specification defined in the Ethereum Yellow Paper, but which may or may not interoperate with each other. Among these Ethereum-based networks are Ethereum, Ethereum Classic, Ella, Expanse, Ubiq, Musicoin, and many others. There are mainnet, testnet and local simulation net. Ganache is one of the most popular local blockchain simulations that you can interact with, without any other participants.

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.

You also have the option of running a remote client, which does not store a local copy of the blockchain or validate blocks and transactions. These clients offer the functionality of a wallet and can create and broadcast transactions. Remote clients can switch between all of the different networks and node options.

The terms “remote client” and “wallet” are used interchangeably, though there are some differences. Usually, a remote client offers an API (such as the web3.js API) in addition to the transaction functionality of a wallet. Unlike Bitcoin light client, Ethereum remote clients do not validate block headers or transactions. They entirely trust a full client to give them access to the blockchain, and hence lose significant security and anonymity guarantees.

2 Running an Ethereum Client

If you are syncing with full validation, your client will slow down and may take several days, or perhaps even longer, to validate the blocks affected by the DoS attacks at the end of 2016. Fortunately, most Ethereum clients by default now perform a “fast” synchronization that skips the full validation of transactions until it has synced to the tip of the blockchain, then resumes full validation.

Ethereum clients offer an application programming interface and a set of Remote Procedure Call (RPC) commands, which are encoded as JavaScript Object Notation (JSON). This is referred to as the JSON-RPC API that allows us to write programs that use an Ethereum client as a gateway to an Ethereum network and blockchain.

3 Remote Ethereum Clients

Remote clients offer a subset of the functionality of a full client. They do not store the full Ethereum blockchain, so they are faster to set up and require far less data storage. Their functions are:

  • Manage private keys and Ethereum addresses in a wallet.
  • Create, sign, and broadcast transactions.
  • Interact with smart contracts, using the data payload.
  • Browse and interact with DApps.
  • Offer links to external services such as block explorers.
  • Convert ether units and retrieve exchange rates from external sources.
  • Inject a web3 instance into the web browser as a JavaScript object.
  • Use a web3 instance provided/injected into the browser by another client.
  • Access RPC services on a local or remote Ethereum node.

Mobile (smartphone) wallets are remote clients but offer only basic wallet functionality.