Skip to content

Releases: ethereum/go-ethereum

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:

Eezo-Inlaid Circuitry (v1.17.0)

Choose a tag to compare

@fjl fjl released this 17 Feb 16:15

This is a feature release, with all accumulated development from the last 3 months. See below for the highlights.

Note that this release contains multiple critical security fixes, as well as many bug fixes, and is recommended for all users. However, if you are cautious about upgrades, you can also install v1.16.9 which has just the critical security fixes. Specifically, this release fixes CVE-2026-26313, CVE-2026-26314, CVE-2026-26315.

We recommend recreating your p2p node key after installing this update, which you can do by removing the DATADIR/geth/nodekey file before restarting geth. Note this will cause a change in the p2p node ID, which may break static peering setups.

Highlights

Path-based Archive Node with Proofs

The path-based archive node can now serve proofs (via eth_getProof) for the state of older blocks.

You can configure the block range that supports proving independently from other archive state availability. Specifically, you can use the --history.trienode command-line flag to set the amount of blocks for which tree nodes will be tracked.

This feature is disabled by default. Note that state history cannot easily be recovered once deleted, as it can only be generated by processing blocks. However, you can enable trienode history (and/or state history) at any time to turn a full node into a partial archive node, keeping state from that point in time onwards.

#32727, #32621, #33551, #32981, #33399, #32913, #33303, #33584, #33329, #33681, #33103, #33098, #33515, #32247

EraE History Support

Geth now suports the EraE file format, an archival format for post-merge chain history.

#32157, #33827

OpenTelemetry Tracing

OpenTelemetry tracing is now supported by the RPC server, including support for distributed tracing.
We have also added some tracing spans for block processing via the engine API, i.e. engine_newPayload.

#33599, #33452, #33780, #33521

All Changes

Geth CLI

  • The geth version-check subcommand has been removed. This command checked the geth website for signed vulnerability notices, and would tell if updates are necessary (#33498)
  • There is now a --miner.maxblobs command-line flag to set a limit on blobs included in built blocks (#33129, #33302)
  • Geth now supports continuous profiling with Grafana Pyroscope (#33623)
  • A rare bug that could halt block production in geth --dev mode was fixed (#33146)
  • A new --rpc.rangelimit flag configures the maximum block range for eth_getLogs (#33163)
  • geth --exitwhensynced will now set the finalized and safe block (#33038)
  • geth --ethstats now reports the newPayload processing time to the stats server (#33395)
  • A lot of minor issues in Geth's command-line flag processing have been fixed (#33379, #33338, #33330, #32999, #33279, #33252)
  • The evm blocktest command can now read filenames from stdin when no path is provided (#32824)

Fork Implementation

Core

  • The crypto/ecies library allowed extraction of the private key used for key derivation via observation of response timing. We recommend rotating the node key after applying this update. (#33669)
  • When a missing block is encountered during tx unindexing, Geth will now skip it and move on instead of entering an infinite loop. (#33573)
  • Geth now optionally collect and export metrics about the total state size (#33254, #33376, #33415)
  • There is a new OnStateUpdate hook, which is called after all state of a block has been committed. This gives access to the changeset of the block. (#33490)
  • Some minor tracing bugs have been fixed (#32919, #33148, #33644, #33214)
  • Various minor issues in the freezer database have also been fixed (#33747, #33025, #33203, #33344)
  • The setHead operation now unsets the finalized block, in cases where the rolled-back block range extends before it. (#33486)
  • The SignatureValues method of types.Signer now reports an error for invalid signature sizes (#33647)
  • Geth prints detailed log messages for 'slow blocks' (#33655, #33525, #33442, #32812, #33659, #33532)
  • Pebble configuration has been tweaked for improved performance (#33697, #33353, #33315)
  • A rare crash in the log indexer related to reorg handling has been fixed (#33810)
  • Internal state diff size accounting has been corrected, so state diffs will now be flushed to the disk store less often (#33505)
  • Since the keccak256 hash function variant used by Ethereum no longer has a fast-path in the standard library, we have vendored the keccak implementation back into our repository (#33323)

Library

  • The RLP library now has a RawList type for dealing with un-decoded lists in a more convenient way (#33755, #33834, #33840, #33841)
  • The low-level RLP iterator and uses of it have been improved (#33245, #33188, #33820)
  • Clef can now sign blob transactions with cell proofs (#32910)
  • Fixed some corner-case bugs in metrics exporting (#33749, #33748)
  • The hardware wallet library now supports the Ledger Nano Gen5 and correctly enables EIP-712 signing for all supported versions. (#33297, #33113)
  • SignTextWithPassphrase now works correctly with all supported hardware wallets (#33138)
  • Some minor bugs were fixed in the keystore implementation (#33606, #33602, #33090)
  • The bitutil.XORBytes function has been deprecated in favor of stdlib package crypto/subtle (#33331)
  • A memory leak in the beacon chain light client was fixed (#33483)

RPC

  • eth_getTransactionByHash now returns the blockTimestamp as part of the transaction object (#33709)
  • Error codes for some conditions in eth_simulateV1, eth_getLogs, eth_getStorageAt have been improved to better comply with the execution RPC spec (#33007, #33320, #33282)
  • eth_simulateV1 now selects the correct set of precompiles for the simulated header (#33363)
  • eth_sendTransaction and eth_fillTransaction now default to EIP-1559 (#33058)
  • The GraphQL implementation has received some bug fixes for cases where a resolved item is not found. (#33184, #33225)
  • In GraphQL, the gasPrice is now retrievable for transaction types 0x3 and 0x4 (#33542)
  • The RPC server now enables plain-text HTTP2 for improved performance (#33812)
  • The RPC client no longer sends spurious RST_STREAM HTTP2 frames (#33122)
  • Some minor JSON encoding bugs have been fixed in ethclient (#33693, #33242, #33464)
  • The gethclient has a new wrapper of the callTracer (#31510)
  • In the callTracer, reported logs now contain an index field which is the index of the log within the transaction (#33629)

P2P Networking

  • The transaction pool heartbeat mechanism had some fixes for potential resource leaks (#33704)
  • The eth and snap protocol implementations nows validates most p2p messages before decoding their content. This improves security and sync performance in some cases. (#33835)
  • The blob transaction pool has seen some bug fixes and now accepts nonce-gapped transactions to a very limited extent (#32717, #33775, #33474, #33352, #33301, #33260)
  • Snap sync status is now tracked better, ensuring a snap sync will not be triggered accidentally by the engine API (#33157)
  • The snap sync scheduler was improved to better protect the trie database against accidential mutations while the node is processing blocks. This resolves some edge cases where the database could be corrupted (#33428)
  • The header sync implementation was fixed to better deal with setHead operations during sync (#33481)
  • Peer connections delivering stale transactions will be penalized less, since delivery of a few stale transactions is a common occurrence. (#32725)
  • Peers announcing transactions of one type, and delivering a different type, are now disconnected as penalty (#33378)
  • Similarly, peers delivering invalid KZG proofs will now be disconnected (5b99d2b)
  • The transaction pool has new metrics for the number of accounts with transactions (#33646, #33654)

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


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

Shield Focusing Module (v1.16.9)

Choose a tag to compare

@fjl fjl released this 17 Feb 16:06

This is a security hot-fix release. Specifically, this release fixes CVE-2026-26314, CVE-2026-26315.

We recommend recreating your p2p node key after installing this update, which you can do by removing the DATADIR/geth/nodekey file before restarting geth. Note this will cause a change in the p2p node ID, which may break static peering setups.


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

Moisture Filters (v1.16.8)

Choose a tag to compare

@fjl fjl released this 13 Jan 16:05

This is a security fix release and is recommended for all users. It resolves two p2p
vulnerabilities reported through the Ethereum Foundation bug bounty program.


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

Ballistic Drift Stabilizer (v1.16.7)

Choose a tag to compare

@fjl fjl released this 04 Nov 12:28

This is a re-roll of v1.16.6, including an important fix in the KZG cryptography library.

This release enables the Fusaka hardfork on Ethereum mainnet.

The Fusaka fork is scheduled to occur at 2025-12-03 21:49:11 UTC.
Please upgrade your node to v1.16.7 in time for the fork.

This release also enables two blob-parameter-only (BPO) upgrades.
These upgrades change protocol parameters to increase the available blob capacity.

  • BPO1 on2025-12-09
  • BPO2 on 2026-01-07

Fusaka

  • Set mainnet timestamps for Osaka (#33063)
  • Enable Fusaka for geth --dev mode (#32917)

RPC

  • Add eth_sendRawTransactionSync which waits until either a timeout or the transaction is mined. This feature is mostly useful on L2s with lower blocktimes. (#32830, #32930, #32929)
  • Add support for eth_simulateV1 in ethclient (#32856)
  • Fix for an issue that might crash debug_traceCall (#33015)
  • Fix for an issuer where local transactions were not persisted to the journal (#32921)

Core

  • Fix for a cryptographic vulnerability in c-kzg-4844. This is only exploitable post-Fusaka. (#33093)
  • Add geth --genesis flag as an alternative to running geth init genesis.json (#32844)
  • Fix for receipt insertion during ERA file import. (#32934)
  • Work on getting the trie node history in order to serve historical eth_getProof request with the new path-based archive node. (#32907, #32914, #32937)
  • Further work on cmd/keeper, our guest program for zkVMs (#32816)
  • Various optimizations (#32971, #32916, #32965, #32946)

Networking

  • New metrics for tracking slow peers (#32964)
  • Fix for an issue where disconnected peers were not removed in txFetcher (#32947)

For a full rundown of the changes please consult the Geth 1.16.6 and 1.16.7 release milestones.

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

Leather Wrapping (v1.16.6)

Choose a tag to compare

@fjl fjl released this 03 Nov 16:54

⚠️ Do not use v1.16.6 for the Fusaka upgrade! Please use v1.16.7, which contains an important security fix. ⚠️

This release enables the Fusaka hardfork on Ethereum mainnet
The fork is scheduled to occur at 2025-12-03 21:49:11 UTC.
This release also enables the BPO1 and BPO2 forks for mainnet at 2025-12-09 and 2026-01-07 respectively.

Fusaka

  • Set mainnet timestamps for Osaka (#33063)
  • Enable Fusaka for geth --dev mode (#32917)

RPC

  • Add eth_sendRawTransactionSync which waits until either a timeout or the transaction is mined. This feature is mostly useful on L2s with lower blocktimes. (#32830, #32930, #32929)
  • Add support for eth_simulateV1 in ethclient (#32856)
  • Fix for an issue that might crash debug_traceCall (#33015)
  • Fix for an issuer where local transactions were not persisted to the journal (#32921)

Core

  • Add geth --genesis flag as an alternative to running geth init genesis.json (#32844)
  • Fix for receipt insertion during ERA file import. (#32934)
  • Work on getting the trie node history in order to serve historical eth_getProof request with the new path-based archive node. (#32907, #32914, #32937)
  • Further work on cmd/keeper, our guest program for zkVMs (#32816)
  • Various optimizations (#32971, #32916, #32965, #32946)

Networking

  • New metrics for tracking slow peers (#32964)
  • Fix for an issue where disconnected peers were not removed in txFetcher (#32947)

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


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

Coolant Cells (v1.16.5)

Choose a tag to compare

@fjl fjl released this 16 Oct 08:01

This is a maintenance release. We are issuing this release mostly to add a conversion path for blob proofs submitted via eth_sendRawTransaction. See https://blog.ethereum.org/2025/10/15/fusaka-blob-update for more information.

RPC

  • eth_sendRawTransaction has an upgrade path for blob proofs after the Fusaka fork. Note this is temporary. We will remove support for blob proof conversion during the v1.17.x release cycle, please update RPC client libraries to support cell-level (v1) proofs. (#32849)
  • eth_subscribe now supports a transactionReceipts subscription. There is also a wrapper in ethclient for this new subscription type. (#32697, #32869)
  • eth_simulateV1 was fixed to return the block timestamp in logs, like eth_getLogs does. (#32831)
  • In the abigen v2 runtime, BoundContract.Transfer will now verify that the contract has a payable fallback or receive method. (#32374)
  • A keccak256preimage tracer has been added. (#32569)

Networking

  • The eth protocol handler will now drop peers sending duplicated transactions. This is to unify behavior with other client implementations. (#32728)
  • A regression in the discovery system could cause high CPU usage under synthetic conditions (i.e. in tests). (#32912)
  • A very rare shutdown hang related to peer discovery is resolved. (#32572)
  • The eth protocol test suite has a new post-merge test chain and saw some bug fixes for flakey tests. (#32834, #32850)

Core

  • Our freezer implementation now supports partial reads, i.e. reading just a slice out of a larger stored value. This functionality is used for the archive node state history. (#32132)
  • The trie database now implements a storage layer for 'trie history', a precursor to serving historical state proofs for the path-based archive node. (#32596)
  • The txpool/valid.meter metric has been corrected. (#32845)
  • The engine API saw some fixes related to fork compatibility checks. (#32800, #32731)

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


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