Nodes, mining & validator operations

execution client

The execution client is the half of an Ethereum node responsible for the execution layer: actually running transactions on the EVM and maintaining the resulting world state — account balances, contract code, and storage. If the consensus client is the referee deciding the order of play, the execution client is the engine that performs each play: given an ordered list of transactions, it executes them one by one, updates the state trie, computes the new state root, and checks that everything obeys the protocol's rules.

It also holds the parts of the system most application developers actually touch. The execution client maintains the public mempool of pending transactions, gossips transactions across the network, serves the user-facing JSON-RPC API (eth_call, eth_getBalance, eth_sendRawTransaction, and so on), and stores the chain data and state that explorers and dapps query. When you 'connect your wallet to a node,' you are talking to an execution client. Major implementations include Geth, Nethermind, Besu, Erigon, and Reth.

Since the Merge, the execution client no longer decides anything about consensus — it cannot choose the head or finalize blocks. Instead it acts on instructions from the consensus client over the authenticated Engine API: it receives a payload to execute and validate (engine_newPayload), is told which head to adopt (engine_forkchoiceUpdated), and, when its operator's validator is proposing, it assembles a candidate execution payload (the transactions and resulting state) for the consensus client to wrap into a beacon block. Execution and consensus are two cooperating processes, neither complete without the other.

Like consensus clients, execution clients are a consensus-critical diversity surface. A bug that makes one execution implementation compute a different state root than the others can split the chain or, if that client is a supermajority, finalize an invalid state. The 2016 Shanghai DoS attacks and later consensus bugs are reminders that an execution client must reproduce the EVM's behavior exactly, down to gas accounting and edge cases; this is why the community tracks execution-client market share and urges operators to run minority clients.

The execution client is what wallets and dapps actually talk to (mempool + JSON-RPC), but since the Merge it takes its marching orders on ordering and finality from the consensus client via the Engine API.

Also called
EL client執行層用戶端