Skip to content

Releases: ethereum/go-ethereum

Soil Reducer (v1.17.10)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 23 Oct 12:07
1df30b1

This is a quick release that postpones the Amsterdam fork on the Hoodi testnet, previously scheduled for Oct 26, 2026, 17:42:48 UTC. Hoodi node operators running v1.17.9 must upgrade before then. A new date will be set in a future release; other networks are unaffected.

Snap sync now switches to snap/2 automatically once Amsterdam is active. Use --snap.v2=false or --snap.v2=true to force a protocol.

Changes

  • Cancel the Amsterdam activation on Hoodi (#36001)
  • Use snap/2 automatically once Amsterdam is active (#35989)
  • Optimize DUP/SWAP dispatch in the interpreter (#35959)

For a full rundown of the changes please consult the Geth 1.17.10 release milestone.


As with all our previous releases, you can find the:

Universal Semiconductor (v1.17.9)

Choose a tag to compare

@healthykim healthykim released this 21 Oct 15:08
9dffe6e

This release enables the Amsterdam fork 🦩 on the Hoodi testnet at block timestamp 1793036568 (Mon, 26 Oct 2026 17:42:48 UTC).

It also contains changes to the EVM to improve the performance significantly.

This release is recommended for all users running their nodes on the Hoodi testnet.

Geth

  • Blsync now supports the Gloas beacon chain fork and had some bug fixes (#35956, #35385, #35957)
  • When running an archive node, you can now configure the transaction index history using --history.transactions flag. (#35907)

Core

  • Amsterdam fork is set to activate at block timestamp 1793036568. (#35974)
  • EVM interpreter opcode dispatching became 16% faster due to a new inlined switch implementation. (#35638)
  • Several fixes for database corruption on power failure (#35939, #35936)
  • Bug fix in trie database related to concurrent state reading (#35978)
  • RPC call concurrent with block processing could result in BAL corruption. (#35905)
  • State history committing is moved to the background, making newPayload 2% faster. (#35949)
  • Key-value database settings changed for improved write performance (#35691)
  • Fixed log index under history pruning beyond the checkpoint (#35875)

Networking

  • Fixed snap/2 restart issue by checking for pivot block reorg in the header chain (#35930, #35982)
  • Added metrics to discovery listeners (#35673)
  • Fixed mempool corruption with tip below base fee (#35988)

RPC

  • eth_simulateV1 spec compliance fixes (#35841, #35842, #35953)
  • eth_call and similar methods will reject fields which are not aligned with forks
  • eth_fillTransaction always chooses AccessList transaction when accessList is provided by user. (#35969)
  • eth_newFilter now accepts earliest in toBlock. (#35933)
  • eth_sendTransaction rejects invalid yParity value in 7702 transactions. (#35761)
  • In debug_traceTransaction, debug_traceCall, omit storage on halted SLOAD/SSTORE steps. (#35961)
  • Pending block access was fixed on the Amsterdam fork transition block. (#35968)
  • Historical RPC calls will reject transaction features which have not yet activated. (#35914, #35928)

For a full rundown of the changes please consult the Geth 1.17.9 release milestone.

As with all our previous releases, you can find the:

Protein Sludge Pack (v1.17.8)

Choose a tag to compare

@fjl fjl released this 08 Oct 16:35

This is a security-focused release, fixing several DoS risk issues ❤️‍🩹 . Note most of the the fixes related to bugs which only become possible after the activation of the Amsterdam fork. There are also some general correctness improvements.

This release is recommended for all users.

All Changes

Security

  • In the eth and snap p2p protocol handler, DoS resistance has been improved for multiple packet handlers (#35862, #35883, #35859, #35857, #35904, #35856)
  • JUMPDEST analysis caching has been hardened for attack cases after Amsterdam fork (#35881)
  • The IP address predictor now requires IP verification before accepting statements (#35861)
  • A post-Amsterdam DoS vector related to BAL accounts is resolved (#35865)
  • A rogue STUN server could crash the node with an invalid response (#35863)

RPC

  • eth_createAccessList now works when the sender account has no balance (#35397)
  • eth_simulateV1 has been fixed to correctly report ETH transfer logs post-Amsterdam (#35617)
  • eth_simulateV1 virtual blocks are now aligned with the Amsterdam spec (#35668)
  • eth_capabilities reports the availability of receipts bounded by the transaction hash index (#35878)
  • For eth_call and related operations, the transaction gas limit is no longer applied (after Amsterdam fork) (#35845)
  • A post-Amsterdam crash in journaled live tracers core/tracing: handle creator nonce change without an open frame (#35896)
  • An edge case in processing beacon chain head updates after unclean shutdown is resolved (#35804)
  • abigen will now use sequential nonces when deploying library dependencies of a contract (#35888)

Core Library

  • The hard-coded Hoodi testnet beacon chain genesis time was incorrect (#35876)
  • blsync could get stuck if the server was unresponsive or overloaded (#35872)

P2P

  • A correctness issue in the EIP-8070 Sparse Blobpool (Amsterdam fork) implementation is fixed (#35860)
  • The dial scheduler now handles IPv4 <> IPv6 transitions for DNS-resolved static nodes (#35880)

Build

  • The PPA now publishes for Ubuntu 26.04 "Resolute Raccoon" (#35854)

For a full rundown of the changes please consult the Geth 1.17.8 release milestone.

As with all our previous releases, you can find the:

Intact Neuro-Coil (v1.17.7)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 30 Sep 11:48
3d858f8

This is a quick release, cut mainly because publishing v1.17.6 to the Ubuntu PPA failed. It also carries a few fixes merged since then. Both v1.17.6 and v1.17.7 are ready for the Amsterdam fork on Sepolia (Oct 6, 2026), so Sepolia validators can run either version.

Users can now also choose their own history pruning point with --history.chain <block number>:<block hash>. It works both for pruning an existing node with geth prune-history and for snap sync, which then skips downloading the chain history before that block.

Changes

  • Add postosaka and custom <block number>:<block hash> history pruning points (#35792)
  • Account for both the execution and state gas (EIP-8037) when selecting transactions in the miner (#35773)
  • Fix a memory leak by waiting for the block prefetcher when stopping the chain (#35821)
  • Release the pathdb clean caches when the database is disabled (#35789)
  • Encode and hash the block-level access list once, in a dedicated pipeline (#35772)
  • Keep the snap sync v2 pivot moving by applying block-level access lists after the state sync (#35749)
  • Only fetch block-level access lists close to the chain head (#35780)
  • Skip peers whose announced block range doesn't cover the request (#35723)
  • Restore the txpool empty-state fallback during snap sync, fixing the regression introduced in v1.17.3 (#35582)
  • Allow restarting an interrupted snap sync when a history cutoff is configured (#35837, #35844)
  • Update execution-spec-tests fixtures to v21 (#35835)
  • Add five new multi-cloud bootnodes operated by NodeOps alongside the existing bootnodes (#35682)

For a full rundown of the changes please consult the Geth 1.17.7 release milestone.


As with all our previous releases, you can find the:

Inorganic Lubricant (v1.17.6)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 23 Sep 02:21
3d84c6b

This is a maintenance release with a number of performance improvements to block processing and initial sync, and is recommended for all users.

A few things worth highlighting:

  • The Amsterdam hardfork is scheduled on the Sepolia testnet at timestamp 1791294816 (Oct 6, 2026, 13:53:36 UTC). Sepolia node operators must upgrade before that time.
  • The Holesky testnet has been removed, as the network reached end-of-life.
  • Go 1.24 is no longer supported. Release binaries and Docker images are now built with Go 1.27.

Fork Implementation

  • Schedule the Amsterdam fork on Sepolia (#35734)
  • Remove the EIP-7610 implementation (#35581)
  • Update EIP-2780 and EIP-8038 gas parameters (#35454, #35497)
  • Update EIP-7997 deterministic factory contract (#35458)
  • Update EIP-8037, repaying the outstanding gas debt first after absorbing a child frame (#35633)
  • Implement parallel block execution driven by the block-level access list (#35264, #35441, #35443, #35459, #35461, #35465, #35575, #35693)
  • Rename "regular gas" to "execution gas" to match EIP-8037 (#35457, #35486)

Core

  • Remove the Holesky testnet (#35591)
  • Optimize JSON decoding of large requests such as engine_newPayload (#35518)
  • Process the receipts for bloom construction and root calculation alongside execution (#35738)
  • Introduce a precompile result cache shared between prefetcher, block processing and miner (#35388, #35473, #35526, #35578, #35753)
  • Parallelize chain data and state writes in the post-execution commit (#35595)
  • Do not seal a block if a database error occurred (#35427)
  • Fix a panic in the log indexer when a reorg shortens the chain onto the rendered block (#35619)
  • Honor ExecuteConfig.EnableTracer for the EVM-level tracing hooks (#35512)
  • Add a metered LRU cache variant (#33719)
  • Retain block-level access lists alongside bad blocks (#35423)
  • Unset the block-level access list at the end of each transaction (#35498)
  • Fix the blob cache initialization (#35509)
  • Fix head truncation below a diverged tail group (#35551)
  • Improve the blob fetcher with a few defensive operations (#35572)
  • Fix deadlock when re-requesting partial receipts in eth/70 (#35537)
  • Reject empty partial receipt responses in eth/70 (#35593)
  • Cap the total size of blocked blob transactions in the sparse blobpool (#35367)
  • Fix the Cells/GetCells RLP encoding in eth/72 (#35428)
  • Cache recovered blobs in the blobpool to speed up serving pre-eth/72 peers (#35543)
  • Add fork validation for transaction types in the state transition (#35588)
  • Avoid announcing sparse blob txs to legacy peers (#35589)
  • Add eth/71 (EIP-8159) tests (#35389)
  • Fix gas tracer hooks and gas measurement (#35646)
  • The eth/72 blob buffer is capped at 128 MiB total and 16 MiB per peer (#35766)

Sync

  • Optimize the state sync by parallelizing response processing (#35533)
  • Implement best-effort downloading of block-level access lists (#35386, #35493)
  • Rework the scheduling of body and receipt retrievals during sync (#35680)
  • Add metrics for chain segment downloading and snap sync progress (#35678, #35689)
  • Various snap v2 fixes and improvements (#35299, #35316, #35463, #35477, #35705, #35722)

Networking

  • Validate the announced blob transaction size against the announcer's protocol version (#35524)
  • Add more discv5 hive coverage to devp2p (#34770)
  • Add eth/72 tests and Amsterdam testdata to devp2p (#35368, #35637, #35647, #35648, #35687)
  • Add devp2p discovery listen to serve discv4 and discv5 on a single UDP socket (#35254)

Cryptography

  • Reconstruct blobs directly from data cells without KZG recovery (#35528)
  • Recover the full cell set of a blob with a fast path for complete data cells (#35529)
  • Fix G2.Neg in the bn256 library by syncing with upstream (#35686)

Engine API

  • Add support for optional TargetGasLimit and enforce the system contract code check (#35514)
  • Allow reorging headBlock down to finalized (#35519)
  • Fix the fork gate on engine_forkchoiceUpdatedWithWitnessV3/V4 (#35719)
  • Pass targetGasLimit through in testing_buildBlockV1 (#35501)
  • Fix hive failures (#35580, #35664)
  • Fix engine_getBlobsV4 returning null cells for blob-mode cache entries (#35439)

RPC

  • Reject null for required arguments (#35576)
  • Unescape JSON object keys when parsing a message (#35587)
  • Reject eth_getLogs ranges with toBlock before fromBlock (#35070)
  • Skip unconfigured forks when computing the next fork in eth_config (#35553)
  • Return null for pending and unresolvable tags in eth_getHeaderByNumber (#35627)
  • Treat a post-merge difficulty override as no-op in eth_simulateV1 (#35672)
  • Reject blob and setcode call arguments without to (#35695)
  • Remove per-authorization gas guard in the eth_createAccessList (#35698)
  • Return the actual used gas for plain transfer estimates after Amsterdam (#35592)
  • Make the block parameter of debug_traceCall optional (#35583)
  • Add slotNumber to the GraphQL block schema (#35469)
  • Return NotFound when the block transaction count is nil in ethclient (#35605)
  • Verify the withdrawal list against the header root in ethclient (#35610)

Geth & Tooling

  • Deprecate the state sizer tool (#35520)
  • Use original Solidity names for custom errors in abigen v2 bindings (#35332)
  • Filter out unexpected logs from the event subscription stream instead of terminating it (#35701)
  • Respect the configured log limit in the struct logger OnEnter/OnExit hooks (#35360)
  • Add a t8n test for a missing London base fee config (#35636)

Build

  • Drop support for Go 1.24 and add support for Go 1.27 (#35573)
  • Upgrade the -dlgo bootstrap Go version to 1.27.1 (#35656)
  • Build RPM packages for Fedora COPR (#35557)
  • Add a retry mechanism for package uploading (#35510)

For a full rundown of the changes please consult the Geth 1.17.6 release milestone.


As with all our previous releases, you can find the:

Grav-Torque Pad (v1.17.5)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 27 Jul 08:17
9621c6a

This is a maintenance release with accumulated bug fixes and improvements, and is recommended for all users. It continues the implementation work for the upcoming Amsterdam hardfork.

A few things worth highlighting:

  • The default GOGC has changed from 20 to 50, trading a higher memory peak for less GC overhead. Set --gogc=20 to keep the old behavior.
  • Pebble v2 is now supported as a key-value store backend. Pebble v2 is used when Geth is bootstrapped from scratch, and falls back to Pebble v1 for a pre-existing database. Run geth db pebble-upgrade to explicitly upgrade a legacy Pebble v1 database to v2.

Fork Implementation

  • Several Amsterdam EIPs have been implemented or updated:
  • Improve Amsterdam fork test coverage (#35364)
  • Introduce the --override.amsterdam flag (#35213)
  • Remove named hardforks from the BPO schedule (#35029)
  • Introduce the Bogota fork in the chain configuration (#34057)

Core

  • Introduce a sparse blobpool to reduce blob transaction pool memory usage (#34047)
  • Migrate legacy blobpool limbo entries to the new cell-based sidecar format on startup (#35209)
  • Drop support for v0 blob sidecars in blobpool (#35191)
  • Inline gas deduction to fix a performance regression (#35203)
  • Fix eth/71 block-access-list empty marker decoding which wrongly disconnected peers (#35286)
  • Disable snap sync mode once the pivot block is committed (#35402, #35405)
  • Speed up debug_setHead and reject unrecoverable targets (#35252)
  • Fix snap sync failing to backfill blocks with missing canonical-hash mappings (#35190)
  • Reuse the chain's JUMPDEST cache in payload building (#35378)
  • Support Pebble v2 as the database backend (#34009)
  • Support .ere files in the era store (#34978)
  • Introduce the trie.UpdateBatch API (#32448)
  • Fix freezer truncation error on newly-added empty tables after unclean shutdown (#35258)
  • Improve state recoverability reporting by considering sync status (#35400)
  • Fix account prefetching for absent accounts (#35256)
  • Various snap v2 fixes (#35321, #35323)
  • Optimize block validation (#35403)
  • Various allocation improvements (#35234, #35237, #35232)
  • Continue binary trie development (#34772)
  • Fix tx size calculation (#35406)

Networking

  • Protect high-value peers from random dropping based on transaction-inclusion statistics (#34702)
  • Keep invalid and unreachable nodes out of DNS discovery trees (#35312)
  • Support a dual-stack discovery listener in devp2p, with several related fixes (#35220, #35298, #35243, #35206)

RPC

  • Introduce the --rpc.http-body-limit flag to configure the maximum HTTP request body size (#35224)
  • Reject gasPrice when combined with an authorizationList (#35320)
  • Reject a block parameter with neither a number nor a hash (#35271)
  • Match the authorization scheme case-insensitively (#35022)

Tracing

  • Respect the configured log limit in the struct logger (#35349)
  • Emit tracing frames in the EIP-2780 manner (#35396)
  • Include the log index in ERC-7562 tracer output (#35200)
  • Stop incorrectly capturing callcode transfers in the log tracer (#35248)

Engine API

  • Pass TargetGasLimit via the engine API (#35372)
  • Make the maximum reorg depth configurable (#35335, #35373, #35391)
  • Return block access lists from engine_getPayloadBodiesV2 (#35347)
  • Cap miner-configured MaxBlobsPerBlock to the protocol limit (#35295)

Geth & Tooling

  • Introduce a --gogc flag and bump the default GOGC to 50 (#35363, #34851)
  • Write block-level access lists in geth export (#35369)
  • Preserve metrics tag values containing = (#35168)
  • Update eels tests to v20.0.0 (#35283)

Accounts & ABI

  • Forward the blob fee cap to external signers (#35167)
  • Introduce a GetABI() method on abigen v2 generated contract bindings (#35221)
  • Fix abigen v1 bindings to handle deployment of library dependencies (#32164)

Build

  • Update the ckzg dependency (#35336)
  • Upgrade the -dlgo bootstrap Go version to 1.25.12 (#35317)

For a full rundown of the changes please consult the Geth 1.17.5 release milestone.


As with all our previous releases, you can find the:

Flexible Polymer Casing (v1.17.4)

Choose a tag to compare

@fjl fjl released this 22 Jun 07:47

This is a maintenance release with accumulated bug fixes and improvements, and is recommended for all users. It also continues the implementation work for the upcoming Amsterdam hardfork.

One thing worth highlighting:

Fork Implementation (Amsterdam)

  • EIP-7928: Block-Level Access Lists: the block access list is now constructed and verified during block execution, with the serving side of the eth/71 BAL messages implemented (#34652, #34803, #34879, #34957, #34967, #34972, #34977, #35110)
  • EIP-8189: snap/2, a new state-sync protocol based on block-level access lists, has been added (#34626, #34807, #35098, #35155, #35158, #35163, #35178, #35180, #35181)
  • EIP-8037: state-creation gas cost increase, has been implemented (#33601)
    • The tracing system provides a new OnGasChangeV2 hook for multi-dimensional gas (#34946)
  • engine_newPayloadWithWitnessV5 has been added and the witness format now uses the canonical spec field ordering (#35009)
  • The evm t8n tooling has been updated for Amsterdam, adding BAL and slot-number support and binary-trie leaf export (#34843, #35025)
  • For EIP-7843, the slot number is now set for the pending block post-Amsterdam (#34792, #35036)

Geth

  • Caches are now sized against the cgroup memory cap (e.g. Docker --memory) when one is set (#34947)
  • A number of small command-line flag and logging issues have been fixed (#33880, #34732, #34943, #34948, #35011, #35104, #35116, #35136)
  • A number of long-deprecated command-line flags have been removed (#35021)

RPC

  • eth_baseFee has been added, returning the base fee of the next block (#34904, #35023)

  • eth_capabilities has been added, letting clients discover which historical data a node can serve (#33886)

  • debug_clearTxpool has been added to clear the transaction pool (#33347, #35130)

  • State-reading methods (eth_getBalance, eth_getCode, eth_getStorageAt, etc.) now default the block parameter to latest when omitted (#35100)

  • Fixes for eth_simulateV1: an incorrect "base fee too low" error code and a pre-Shanghai withdrawal regression (#34951, #34939)

  • debug_setHead now propagates rewind errors instead of silently ignoring them (#35001)

  • EIP-7702 transactions with a nil To address are now rejected (#35094)

  • HTTP RPC responses now always set Content-Length, and a WebSocket handshake status-code bug was fixed (#35072, #35111)

  • The client can now configure trace-context propagation via the traceparent header, and response writes are now traced (#35132, #35049)

GraphQL

  • GraphQL request bodies are now limited to 5 MiB (#35034)
  • Log-range queries with begin > 0 and end == 0 are now rejected (#35032)
  • The Block.raw resolver now returns empty bytes when the block body is missing (#35027)

Core

  • A global cache for JUMPDEST bitmaps speeds up EVM execution (#34850)
  • EVM stack operations are now computed in place, avoiding per-operand copies (#35156)
  • New code-cache hit/miss meters have been added (#34821)
  • A shutdown race in snapshot generation has been fixed (#33540)

Engine API & Blobs

  • Engine API JSON encoding for large blob payloads has been optimized, and gzip is disabled on the engine API (#33969, #35057)
  • engine_hasBlobs has been added, and engine_getBlobs now counts only actually-available blobs (#34859, #35028)
  • A cache for GetBlobs requests reduces engine API latency, and otel tracing has been added to the GetBlobs endpoints (#35124, #35026)
  • Reorged v0 blob sidecar transactions are now dropped rather than converted (#35099)
  • testing_commitBlockV1 has been added as the write companion to testing_buildBlockV1 (#34995)
  • New payloads are now imported at genesis regardless of sync status (#32673)

Networking

  • NAT STUN discovery no longer fails on IPv6 servers (#35084)
  • Several snap-sync robustness fixes: uncovered state is removed before resuming, a catch-up stall was fixed, sync restarts when the required BAL is unavailable, and the pivot is frozen once state download completes (#35159)

For a full rundown of the changes please consult the Geth 1.17.4 release milestone.


As with all our previous releases, you can find the:

Enzymatic Injector (v1.17.3)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 11 May 15:23
117e067

This is a maintenance release with continued progress on the Amsterdam fork implementation. It also introduces ETH/70, which is now live on the network.

Breaking change for tracing APIs (debug_trace*), specifically the structLog (opcode) tracer. The following response fields now follow the newly established client-wide spec (ethereum/execution-apis#762) and reexec has been removed from the tracing config:

  • memory: words are 0x-prefixed and padded to 32 bytes
  • storage: keys and values are 0x-prefixed
  • error: omitted when empty (previously serialized as "")

Geth

  • Add retry mechanism for checkpoint init in blsync (#33966)
  • Add subcommand for offline binary tree conversion (#33740)
  • Add code exporter for db export (#34696)

Core

  • Amsterdam fork updates:
  • Implement stack arena (#33960)
  • Implement EIP-7975: eth/70 partial block receipt lists (#33153)
  • Prerequisites of snap/2 protocol (#34083, #34649, #34654, #34874)
  • Implement history index pruner for path-mode archive nodes (#33999)
  • Add Prague chain segment pruning point for Hoodi (#34714)
  • Allow reorging head to parent within 32 blocks under ePBS (#34767)
  • Stop serving chain segment requests when data is unavailable (#34787)
  • Drop peers sending invalid bodies or receipts (#34745, #34870)
  • Add kzg4844 cell-related functions (#34766)
  • State database refactoring (#33102, #34700, #34763, #34724)
  • Binary trie improvements (#34055, #34110, #34670, #34676, #34680, #34690, #34754, #34758, #34777, #34794)
  • Merge EIP-4762 access events for all system calls (#34637)
  • Reject duplicate layers in the path database (#34642)
  • Omit empty slotNumber and fix block value collection in pre-Amsterdam engine API payloads (#34704)
  • Include the operand in EIP-8024 error messages (#34635)
  • Fix vmodule downgrades and propagate verbosity changes to derived loggers (#33111)
  • Fix incorrect fsync ordering for index file truncation (#34728)
  • Fix file descriptor leak in freezer error paths (#34735)
  • Fix size calculation in path database (#34828)
  • Fix gapped queue size cap in blobpool (#34831)
  • Improve txpool pending concurrency by using read-only locking (#32924)
  • Replace deprecated TypeMux with Feed (#32585)
  • Continue blob retrieval when individual cell proof extraction fails (#34891)
  • Use uint256 in core Message for faster gas calculations (#34934)

Networking

  • Fix early exit of timeout loop when removing expired matchers (#34743, #34878)
  • Prevent data races by copying discover buffers before unhandled read errors (#34888)
  • Fix discover waitForNodes deadlock by decoupling nodeFeed from table mutex (#34898)

Cryptography

  • Validate hash length in nocgo signature verification (#33839)

RPC

  • Fix structLog JSON output format and drop reexec from tracing config (#34093)
  • Apply block overrides (gasLimit, blobBaseFee) in eth_estimateGas (#34081)
  • Apply block overrides to header in eth_call (#34842)
  • Add MaxUsedGas to eth_simulate call results (#34820)
  • Integrate trienode history indexing progress into eth_syncing (#34633)
  • Return -32602 from log RPCs (eth_getLogs, eth_getFilterLogs, …) when the block range limit is exceeded (#34647)

Others

  • Fix prestate tracer to distinguish cleared code from unchanged in EIP-7702 (#34675)
  • Emit logs for EIP-7708 ETH burns in tracer (#34623)
  • Forward V2 state hooks through mux tracer (#34869)
  • Send WebSocket close frame on client disconnect (#33909)
  • Omit empty address/topics fields in RPC filter requests (#33884)
  • Add package-level error for event signature mismatch (#34076, #34868)
  • Add gRPC transport for OTLP trace export (#33941)
  • Add system call tracing in t8n command (#34862)
  • Stream t8n alloc output to reduce memory use (#34785)
  • Enable fsnotify watcher on linux/arm64 (#34834)
  • Fix FreeBSD build (#34784)
  • Fix disconnect decoding in RLPx ping (#34781)
  • Fix hive test for discv5 findnode results (#34043)
  • Fix truncation of opening parenthesis in clef (#33702)

For a full rundown of the changes please consult the Geth 1.17.3 release milestone.


As with all our previous releases, you can find the:

EMF Suppressor (v1.17.2)

Choose a tag to compare

@rjl493456442 rjl493456442 released this 30 Mar 11:24
be4dc0c

This is a maintenance release with several important bug fixes. Notably, a critical issue in debug_executionWitness could previously corrupt node data, users relying on this RPC endpoint are strongly advised to upgrade.

Geth now also supports syncing with chains where pre-Prague history has been pruned, and allows explicitly removing it via geth prune-history --history.chain postprague.

Geth

  • Set default cache size to 4GB across all networks (#33836, #33975)
  • Added support for pruning chain history prior to the Prague fork (#33657, #34036)
  • Added fetchpayload command to build execution witnesses for specific blocks (#33919)
  • Optimized Era history import with batched insertion (#33894)
  • Added womir target for keeper (#34079)
  • Added support for iterating a single storage trie in geth snapshot traverse-state and geth snapshot traverse-rawstate (#34051)

Core

  • Amsterdam fork updates:
    • EIP-8024: Switch to branchless normalization and extend EXCHANGE (#33869)
    • EIP-7778: Block gas accounting without refunds (#33593)
    • EIP-7954: Increase maximum contract size (#33832)
    • EIP-7708: ETH transfers now emit logs (#33645)
    • Reworked gas measurement order (prerequisite for EIP-7928) (#33648)
  • Improved payload building by prewarming trie nodes for state hash computation (#33945)
  • Various binary trie improvements (#33951, #33961, #33989, #34021, #34032, #34022, #34056)
  • Upgraded go-eth-kzg to v1.5.0, significantly reducing allocations in VerifyCellProofBatch (#33963)
  • Refactored state database in preparation for binary trie integration (#33816)
  • Enabled trie node history retention on existing nodes (#33934)
  • Optimized historical state indexer with batch processing (#33640)
  • Fixed potential deadlock in txlookup (#34039)
  • Added new RLP APIs (#34052, #34048)
  • Fix dir.Sync() failure in freezer on Windows (#34115)

Networking

  • Avoid duplicate connections by skipping simultaneous inbound/outbound dials (#33198)
  • Fixed session key mismatch by using consistent remote address handling in discv5 tests (#34031)
  • Added DNS hostname resolution for bootstrap nodes (#34101)

RPC

  • Fixed state corruption issue in debug_executionWitness; deprecated debug_executionWitnessByHash (#33931)
  • Added MaxUsedGas field to eth_simulateV1 response (#32789)
  • Fixed gas cap handling in eth_simulateV1 (#33952)
  • Fixed nonce revert edge case during contract creation in tracer (#33978)
  • Fixed eth_createAccessList to return an empty list instead of null for storage keys (#33976)
  • eth_getFilterLogs now returns an error if the requested chain segment has been pruned (#33823)
  • Fixed slot number encoding in RPC responses (#34005)
  • Enforce RPC call limits for eth_simulateV1 (#34616)
  • Enforce storage slot limits for proofs in eth_getProof (#34617)

Observability

  • Various OpenTelemetry fixes (#33927, #33955)
  • Added OpenTelemetry support for payload building (#33773)

Build

  • Fixed build issues on FreeBSD (#34008)

For a full rundown of the changes please consult the Geth 1.17.2 release milestone.


As with all our previous releases, you can find the:

Eezo Shunt (v1.17.1)

Choose a tag to compare

@fjl fjl released this 03 Mar 12:47

This is a bug fix release and is recommended for all users. It resolves a regression in snap sync, as well as several security issues.

Geth

  • The engine API no longer enables plain-text HTTP2, due to some reports of incompatibilities with the teku CL (#33922)
  • The new --metrics.influxdb.interval flag allows changing the metrics reporting interval. (#33767)
  • Geth has a new inspect-trie subcommand that prints information about node counts at all state trie depths (#28892)

Core

  • Some Amsterdam fork-related changes:
  • Payload building had a fix that could prevent the CL from receiving the latest built payloads (#33908)

Networking

  • Geth no longer supports p2p protocol version eth/68 (#33511)
  • A rare crash in p2p request tracking is resolved (#33940)
  • The transaction pool, and specifically the blobpool, saw some fixes that reduce relaying transactions that likely won't make it into the chain, or have already been included on chain recently. This should reduce txpool traffic (#33607, #33887, #33923, #33893)
  • In v1.17.0, a regression in snap-sync was introduced that would cause sync to fail when using --history.chain=postmerge (#33865)
  • Snap-sync had a bug where peer connections would stop being used after a timeout or similar event. This wasn't too noticeable for mainnet sync because of peer churn (#33790)
  • Unexpected state delivered by peers is now reported during snap-sync (#33898)
  • P2P listener metrics now record handshake timeouts correctly (#33539)

RPC

  • eth_estimateGas now honors the user-supplied access list (#33849)
  • New RPC method: eth_getStorageValues (#32591)
  • New RPC method: testing_buildBlockV1 (#33656)

Build

  • This release is built with Go 1.25.7 (#33874)
  • Our official Docker images are experimentally built with Go 1.26 (#33899)

For a full rundown of the changes please consult the Geth 1.17.1 release milestone.


As with all our previous releases, you can find the: