ethereum/go-ethereum
Go implementation of the Ethereum protocol
How go-ethereum is put together
go-ethereum (geth) is the official Go implementation of the Ethereum execution layer. It is a large modular Go monorepo: the `core` package implements blockchain state, block processing, genesis, and transaction indexing; `eth` wires the protocol handlers and exposes JSON-RPC APIs (admin, debug, eth, miner); `cmd` contains executables such as geth, evm, rlpdump, abigen, devp2p, and a ZK-VM 'keeper' tool with its own go.mod. Data flows from P2P peers or RPC into the transaction pool and block importer, through consensus-driven state transition into a key-value chain database (LevelDB/Pebble), with RPC backends reading from that store. The build is Makefile-driven with Docker images and CI scripts under build/.
Languages
Frameworks
Datastores
Infrastructure
Major components
core
Implements the blockchain core: block/header validation, state transitions, genesis handling, tx indexing/pruning, and the rawdb storage layer.
eth
Full-node service wiring: Ethereum backend, P2P protocol handlers (eth/snap), peer management, sync, and the admin/debug/miner/eth JSON-RPC API implementations.
consensus
Consensus engines (ethash PoW fakers in tests, beacon wrapper) plus EIP-specific misc logic (eip1559, eip4844) used during block validation.
accounts
Account management: keystore-backed accounts, HD derivation, account manager and URL abstraction.
crypto
Cryptographic primitives: keccak256 hashing, secp256k1 signing (CGO and no-CGO variants), including a Ziren ZK-VM variant.
rpc / graphql / ethclient
JSON-RPC server/client transports (HTTP, WebSocket, IPC), GraphQL endpoint, and the typed Go client for talking to nodes.
ethdb + core/rawdb
Database abstraction over LevelDB/Pebble/memory backends and the raw key-value schema for blocks, receipts, indexes, and preimages.
console / cmd utilities
Interactive JS console via goja bridge and developer CLIs (geth, evm, rlpdump, abigen, devp2p, keeper).
A busy week of fixes and polish, including a sync deadlock fix, blob fetcher improvements, and faster state response processing.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A busy week of fixes and polish, including a sync deadlock fix, blob fetcher improvements, and faster state response processing.
Week of 2026-08-17
A quieter week centered on blob reconstruction capabilities and small stability fixes.
Week of 2026-08-10
Seventeen changes landed, mostly refining precompile caching, sync behavior, and catalyst (engine API) edge cases.
Week of 2026-08-03
The biggest week of the period: parallel block execution with block access lists took major steps forward, alongside BAL downloading in the syncer.
Week of 2026-07-27
A release week: v1.17.5 shipped and the v1.17.6 cycle began, alongside the initial landing of precompile result caching and parallel execution groundwork.
Over the past month, go-ethereum development focused heavily on performance and reliability: a new parallel block execution system built on block access lists (BAL) landed alongside BAL downloading in the sync engine, plus a series of precompile caching improvements. The team also shipped a v1.17.5 release and started the v1.17.6 cycle, while fixing numerous deadlocks, data races, and edge cases across syncing, transaction pools, and RPC handling.
Week by week
2026-08-24A busy week of fixes and polish, including a sync deadlock fix, blob fetcher improvements, and faster state response processing.latest6 changes
Fix
Fixed receipt re-request deadlock
Resolved a situation where the Ethereum protocol could freeze when asking peers again for incomplete transaction receipts.
Refactor
Improved the blob fetcher
Made the component that retrieves large data 'blobs' from the network work more efficiently.
Refactor
Parallelized snap-sync state processing
State responses during fast synchronization are now handled on multiple threads instead of one at a time.
Fix
Fixed head truncation below diverged tail group
Corrected a database issue where trimming the chain's tip could misbehave when history had forked.
Feature
Added metered LRU cache variant
Introduced a cache that tracks its memory usage, now used to keep the precompile cache within budget including entry overhead.
Fix
RPC rejects null for required arguments
The remote procedure call interface now properly refuses requests where required parameters are sent as null.
2026-08-17A quieter week centered on blob reconstruction capabilities and small stability fixes.5 changes
Feature
Fast-path cell recovery for blobs
Added a quicker method to rebuild missing pieces of blob data using redundancy already present in the encoding.
Feature
Zero-KZG blob reconstruction
Enabled rebuilding complete blobs from data cells without needing cryptographic proofs first.
Fix
Replaced panic with error in debug tool
The execution witness debugging command now reports problems gracefully instead of crashing the node.
Chore
Stabilized peer discovery test
Adjusted an end-to-end discovery test to make it less flaky by using a fallback UDP setup.
Chore
Updated code for glam8
Adapted core components to a newer version of an internal library used for beacon chain types.
2026-08-10Seventeen changes landed, mostly refining precompile caching, sync behavior, and catalyst (engine API) edge cases.6 changes
Refactor
Precompile cache keyed on input directly
The cache of precomputed contract results now uses the raw input as its key rather than a hash of it, simplifying lookups.
Refactor
Cache budget counts key bytes
The memory budget for the precompile cache now accounts for the size of stored keys, not just values.
Fix
Sync markers only with explicit target
Finalized and safe checkpoint markers are no longer fabricated unless the node has a clear synchronization goal.
Fix
Head block can reorg to finalized
The engine API now allows moving the head back to the finalized block in certain situations, matching spec expectations.
Chore
Deprecated state sizer
Retired an old utility for estimating database state size across multiple packages.
Feature
GraphQL schema additions
The GraphQL interface can now expose each block's slot number and block access list hash.
2026-08-03The biggest week of the period: parallel block execution with block access lists took major steps forward, alongside BAL downloading in the syncer.6 changes
Feature
Parallel block execution with BAL
Blocks can now be processed using multiple threads guided by block access lists, which list exactly what data each transaction touches.
Feature
BAL downloading implemented
The sync engine can now fetch block access lists from peers, needed for the new parallel execution mode.
Fix
Fail fast on transaction errors
Parallel block execution now stops immediately when a transaction fails, instead of continuing wastefully.
Fix
Preimage recording fixed in parallel execution
Corrected how original input data is saved when blocks run in parallel, ensuring it isn't lost or duplicated.
Refactor
Renamed regular gas to execution gas
Standardized terminology across the codebase, renaming gas cost constants to reflect their role in execution.
Fix
Fixed BLOCKHASH cache data race
Eliminated a threading conflict where parallel workers could corrupt the cache of recent block hashes.
2026-07-27A release week: v1.17.5 shipped and the v1.17.6 cycle began, alongside the initial landing of precompile result caching and parallel execution groundwork.6 changes
Chore
Released v1.17.5
Published a new stable version of the software for users to upgrade to.
Feature
Precompile result caching
Introduced caching of results from built-in contracts so repeated identical calls run faster.
Feature
Parallel block execution groundwork
Landed the foundational implementation for running transactions in a block concurrently using block access lists.
Fix
Blob pool fallback for GetCells
When the blob-mode cache lacks data, the node now falls back to querying the main pool instead of failing.
Fix
Miner skips sealing after database errors
The block builder no longer creates new blocks if the underlying database reported a problem.
Chore
Updated snappy dependency
Refreshed a compression library used for data storage to a newer version.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required