Geth, short for Go Ethereum, is an open-source software client that lets a computer run a node on the Ethereum network. Written in the Go programming language, it is one of the original implementations of the Ethereum protocol and has for most of the network's history been the most widely used. A machine running Geth downloads and checks the blockchain, executes transactions, keeps a copy of the network's current state and passes data to other nodes.
Since Ethereum moved to proof of stake in 2022, Geth acts as an execution client: it handles transactions and smart contracts, while a separate consensus client follows the Beacon Chain and agreement among validators. Geth is developed by a team supported by the Ethereum Foundation and released under open-source licences. It competes with other execution clients written in different languages, and the size of its share has made it the focus of a long-running debate about client diversity.
Geth in plain terms
Ethereum is a shared rulebook that thousands of computers around the world follow at the same time. To join in, a computer needs software that understands those rules. Geth is the most popular of several such programs. Installing it is a little like installing an app that keeps a full, constantly updated copy of the network's records and checks every new entry against the rules.
Because so many computers use the same program, a mistake in Geth would affect a large part of the network at once. That is why Ethereum developers encourage people to use a range of different programs, so that a bug in one cannot bring down the whole system.
History
Ethereum's early developers built several independent clients in parallel so that the protocol, rather than any one codebase, would define the network. Geth in Go, a client in C++ and one in Python were among the first, and Geth was ready for the network's launch in July 2015. It quickly became the default choice for miners, exchanges and developers.
When the network switched from proof of work to proof of stake in the Merge of September 2022, Geth's mining features were retired and it was adapted to pair with consensus clients. It has since been updated for each network upgrade, including changes to fees, data storage for rollups and account features.
What Geth does
- Syncing the chain. Geth downloads blocks from other nodes and verifies them. Its default "snap sync" mode retrieves a recent snapshot of the state and checks it, which is much faster than replaying every transaction since 2015.
- Executing transactions. It runs the Ethereum Virtual Machine, processing each Ethereum transaction and updating balances and contract storage.
- Serving applications. It offers an interface that wallets, block explorers and decentralized applications use to read data and submit transactions.
- Relaying data. It shares new transactions through the mempool and passes blocks to peers.
Operators can run Geth as a full node, which keeps recent state, or as an archive node, which stores every historical state and needs far more disk space. Geth's codebase has also been copied and modified by many other networks that use the Ethereum design, so its influence extends beyond Ethereum itself.
Client diversity
At various times, a large majority of Ethereum validators have used Geth as their execution client. Developers and researchers warn that this is a risk. If a client used by more than two-thirds of validators had a bug that led it to accept an invalid block, the faulty chain could be finalized, and operators on that client could face heavy penalties when trying to recover. If the share is above one-third, a bug could stop the network from finalizing blocks.
The concern is not theoretical. In August 2021, a flaw in older Geth versions caused nodes that had not updated to split briefly from the rest of the network. Campaigns since then have urged staking services, exchanges and node operators to switch to minority clients. Geth's share has fallen at times but remained the largest, so the debate continues. Client share figures change often and are tracked by independent dashboards.
Running Geth
Running a node with Geth requires a reasonably powerful computer, a fast solid-state drive with at least two terabytes of space, a stable internet connection and a consensus client alongside it. Validators also need stake and validator software. People run nodes to check the chain for themselves rather than trusting a third party, to support the network or to power their own applications. Geth is free to download and is distributed through its official site and code repository on GitHub, as an open-source project to which anyone can contribute.