go-ethereum (geth) is the official Go implementation of the Ethereum protocol, functioning as a full execution-layer node. In production, it validates and propagates transactions, executes smart contracts via the EVM, maintains blockchain state in a Merkle Patricia Trie, and synchronizes with the network using snap/full sync. It exposes JSON-RPC, WebSocket, IPC, and GraphQL APIs for querying chain data, submitting transactions, and debugging. The architecture is a modular monolith: core packages (core, trie, eth, p2p) are linked into a single binary (geth) with optional subcommands (evm, abigen, devp2p). Key entry points include cmd/geth/main.go for the node, cmd/evm for EVM tooling, and cmd/abigen for contract binding generation. Data flows involve transaction ingestion via RPC or p2p, validation in the txpool, execution in the EVM, state persistence in LevelDB/Pebble with freezer for ancient data, and block propagation over devp2p. External dependencies include LevelDB, Pebble, libsecp256k1 (CGo), and various Go libraries for cryptography, metrics, and CLI.