github.com/ethereum/go-ethereum ↗
Go implementation of the Ethereum protocol
Open this visualization on its own page →
Contributors
619
Lines of Code
53,063
From
2013-12-26
To
2021-02-20
About ethereum/go-ethereum
Go Ethereum is the official Go implementation of the Ethereum execution layer protocol. It serves as a full client for the Ethereum network, written in Go and capable of running as a full node with complete state history, a light node that fetches data on demand, or an archive node that retains all historical data. The project provides geth, the primary command-line interface for interacting with Ethereum, whether on the main network, test networks like Holesky, or private networks.
Beyond the main geth client, the project includes several developer-focused utilities. Abigen converts Ethereum contract ABIs and Solidity source files into type-safe Go packages for programmatic interaction. The evm utility allows developers to test and debug individual Ethereum Virtual Machine bytecode snippets in isolation. Devp2p and rlpdump provide lower-level networking and data encoding tools. Geth exposes its functionality through JSON-RPC APIs accessible via HTTP, WebSocket, and IPC protocols, enabling integration with other applications and services.
The project targets users across a spectrum from everyday blockchain participants managing accounts and interacting with smart contracts to developers building decentralized applications. It requires Go 1.23 or later and a C compiler to build, and has substantial hardware requirements for full network participation, recommending at minimum 4-core CPUs, 8GB of RAM, and 1TB of storage. The codebase is licensed under LGPL v3.0 for the library portions and GPL v3.0 for the command-line binaries.