Skip to content

Releases: ethereum/go-ethereum

Armeni (v1.13.3)

12 Oct 11:38
Compare
Choose a tag to compare

Geth v1.13.3 is a scheduled maintenance release with various small additions and an important Pebble database fix.

  • Update Pebble to fix an occasional IO and CPU runaway, adding some debugging capabilities too (#28224, #28070).
  • Support full syncing to a specific hash without a beacon client via a --synctarget (#28209).
  • Allow configuring websocket message limits via the Go RPC client (#27801).
  • Drop support for eth/66 (Cancun will require eth/68 anyway) (#28239).
  • Lower snap missing eth protocol warning to debug level (#28249).
  • Enforce transaction metadata announcements in eth/68 (#28261).

Features related to the Cancun hardfork:

  • Implement the BLOBFEE opcode for the upcoming Cancun hard fork (#28098).
  • Enable blob transaction propagation and mining in Cancun networks (#28243).
  • Start throttling transaction retrievals to prepare for blobs in Cancun (#28304).

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


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

Phaistos (v1.13.2)

28 Sep 07:24
Compare
Choose a tag to compare

Geth v1.13.2 is a bugfix release for the 1.13 family as well as contains the Holesky testnet relaunch.

Note, if you have previously ran Geth with the old Holesky testnet configs, the new version will probably fail to start with a genesis hash mismatch error. You will need to manually delete your holesky/chaindata folder and restart. Geth did not implement special code for cleaning up the failed launch of the testnet.

  • Fix various pathdb corruption corner-cases during snap sync node restart (#28171, #28163).
  • Reconfigure the Holesky testnet with an updated genesis (#28191, #28192, #28193).
  • Remove the rollback mechanism from snap sync, unneeded post-merge (#28147).
  • Make the block parameter in eth_call optional, defaulting to latest (#28165).
  • Forget transactions previously marked underpriced after 5 minutes (#28097).
  • Fix JSON marshalling issue from ethclient retrieving block receipts (#28087).
  • Fix --bootnodes flag if the list is also configured in the toml file (#28095).

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


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

Zakros (v1.13.1)

17 Sep 14:56
Compare
Choose a tag to compare

Geth v1.13.1 is a hotfix release for v1.13.0.

It fixes the following issues:

  • Fix the active fork detection on the engine API, causing the signer to create invalid blocks (#28135).
  • Fix a db corruption in path scheme caused by a weirdly restarted snap sync (#28124, #28126).
  • Fix geth db inspect command running against old hash scheme databases (#28108).
  • Fix an effective gas price calculation regression on the RPC APIs (#28130).

Apart from the fixes, v1.13.1 introduces support for configuring Geth via environmental variables (#28103, #28119)!

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


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

Therum (v1.13.0)

12 Sep 11:03
Compare
Choose a tag to compare

Geth v1.13.0 is a major milestone in the lifetime of Geth, bits and bobs being in development for around 6 years now. Since a release note cannot do it justice, please see our Geth v1.13.0 release blog post.

Still, just to quickly recap, Geth v1.13.0 finally ships a new database model which supports proper, full pruning of historical states; meaning you will never need to take your node offline again to resync or to manually prune. The new database model is optional for now (you need to enable it via --state.scheme=path) and does require resyncing the state, since we need to store it completely different (you can keep your ancients, no need to resync the chain too).

The path database will become the default eventually, but for safety reasons, we're keeping it opt-in for the moment. The old database model is not going away soon, though long term - unless there's something fundamentally wrong with the path db - it will. As for archive node users, we're working on a new model there too, but it does need a bit more work on top, so that's for another release.

The all important disclaimer: Geth's new path-based storage is considered stable and production ready, but was obviously not battle tested yet outside of the team. Everyone is welcome to use it, but if you have significant risks if your node crashes or goes out of consensus, you might want to wait a bit to see if anyone with a lower risk profile hits any issues.


Apart from the pruning work, the release contains:

  • Built in support for the HoleΕ‘ky (HoleΕ‘ovice) testnet (#28007).
  • Index transactions even if no blocks are received (#27847).
  • Expose Geth version metadata into the metrics (#24877).
  • Optimise eth_estimateGas to do fewer runs (#27710).
  • Add eth_getBlockReceipts RPC API call (#27702).
  • Support unpacking Solidity panic events (#27868).
  • Reject GraphQL block queries where both number and hash is specified (#27876).
  • Increase batch limits for RPC calls on the authenticated endpoint (#27924).
  • Optimise logging library to avoid expensive call stack lookups (#28069).

And bugfixes:

  • Fix forkid computation for genesis-merged non-zero timestamp networks (#27895, #28034).
  • Fix a potential data race in the websocket ping/pong mechanism (#27733).
  • Fix js tracers to return the gas price in base 16, not base 10 (#27903).
  • Fix finalized block number in dev (--dev) mode (#27886).

For a full rundown of the changes please consult the Geth 1.13.0 release milestone, though do note that the state scheme changes and pruner have been gradually merged over the past year so are not explicitly tagged in this milestone.


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

Mawinor (v1.12.2)

12 Aug 09:05
@fjl fjl
Compare
Choose a tag to compare

Hot on the heels of v1.12.1 comes our next release, fixing some regressions reported by the community.

Here are the changes:

  • A crash related to leveldb metrics is resolved (#27904)
  • Metrics names used by the blobpool have been changed to be compatible with Prometheus (#27901)
  • The c-kzg-4844 and blst libraries have been updated, hopefully fixing some build issues (#27890, #27907, #27910)
  • We have also adapted go-ethereum to the latest changes in the 'slices' package provided by the golang.org/x/exp module. The Go authors decided to push an incompatible update, but didn't create a new release of that module, causing build issues when consumers mix-and-match dependency versions. (#27909)

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


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

Antibaar (v1.12.1)

10 Aug 18:32
@fjl fjl
Compare
Choose a tag to compare

Geth v1.12.1 is a maintenance release, albeit a rather large one, since we haven't put out a version since May.
This release is a recommended upgrade for all users and contains security-related fixes.

Here's the list of changes:

Cancun fork

Development for the upcoming Cancun hard fork has been a focus in this release cycle. Do note however, that Geth v1.12.1 is not yet ready for Cancun.

  • For EIP-4844 'Shard Blob Transactions', this release contains basic type definitions and state transition logic (#27356, #27382, #27392, #27393, #27470, #27721, #27736, #27743, #27767, #27789, #27791, #27793, #27796, #27797, #27825, #27874)
  • We have also implemented an entirely new mempool -- the blobpool -- for EIP-4844 transactions. The new pool is backed by an on-disk database and has an overall simpler design than the txpool we use for regular transactions. The blobpool is not yet used by p2p networking and is still being tested in the Cancun devnets. (#26940, #27429, #27463, #27481, #27790, #27822)
  • EIP-6780: 'SELFDESTRUCT only in same transaction' (#27189)
  • EIP-5656: 'MCOPY instruction' (#26181)
  • EIP-1153: 'Transient storage opcodes' was already implemented and is enabled for Cancun (#27663, #27613)

Geth command changes

  • The Rinkeby testnet is no longer supported in Geth (#27406)
  • geth --dev now simulates a PoS-based chain (#27327)
  • evm blocktest can now output structured logs (#27396)
  • Geth will now configure GOMAXPROCS based on CPU quota settings. This should improve efficiency when running in Docker containers with a CPU core limit applied. (#27506, #27814)
  • An IPv6 listening address for can now be configured for HTTP/WS (#27628) (#27635)

RPC/GraphQL API changes

  • JSON transactions now have a yParity fields, as mandated by the RPC API spec (#27744, #27882)
  • Legacy transactions now have a chainID field in RPC responses, like all other transaction types (#27452)
  • Block headers returned by RPC no longer report a non-standard size field (#27347)
  • eth_estimateGas now supports state overrides like eth_call (#27845)
  • eth_estimateGas now handles internal chain reorgs more correctly (#27505)
  • eth_getProof is slight more efficient, and will now return a response in the canonical encoding even for off-spec input parameters (#27309, #27310)
  • eth_getTransactionReceipt now returns null when the transaction is not available. It used return an error in that case. (#27712)
  • debug_storageRangeAt now takes a block hash or number as parameter (#27328)
  • The new debug_getTrieFlushInterval method reports the internal state saving interval (#27303)
  • A crash in the prestate tracer is resolved (#27691)
  • Structured EVM logs returned by tracing now contain the returnData (#27704)
  • GraphQL now supports withdrawals (EIP-4895) (#27072)

Go library changes

  • The RPC server now enforces limits on batch requests and responses. This is a potentially breaking change.
    If you use batch requests with geth, and also use the go-ethereum RPC client library, we strongly recommend updating your go-ethereum library dependency as well. The new client version handles invalid batch responses way better than before. (#26681)
  • The RPC client has multiple new ways to test whether the transport supports real time subscriptions (#25942)
  • fsync is now enabled for pebble database writes (#27615, #27522)
  • Function calls timed by metrics will now run even if metrics are disabled (#27724, #27723)
  • Node.Attach no longer returns an error. This is a breaking Go API change. (#27450)
  • The keystore has improved verification of keys loaded from disk (#27432)
  • Per-level metrics are now available for LevelDB (#27643)

Core

  • All block creation activity is now paused while the node is syncing (#27218)
  • Two minor bugs in the transaction pool are resolved in this release (#27404, #27479)
  • Geth no longer uses a 'clean cache file' to persist internal caches across restarts. While persistent cache added a small performance boost right after startup, it could cause obscure issues in certain restart scenarios. (#27525)
  • A large portion of the new Path-Based State Storage scheme has been implemented. While it isn't active yet, we are planning to make this new storage method available in the next release. (#25963, #27323, #27349, #27428, #27687, #27753, #27815)
  • As part of testing the new storage scheme, some inconsistencies in selfdestruct handling were discovered by fuzz tests and had to be fixed (#27376, #27339)
  • We have also made significant progress on the integration of Verkle Trees, which required changes to internal state-handling APIs (#27000, #27209, #27464, #27476, #27544, #27853)

Networking

  • A serious memory leak related to database writes in snap sync is fixed in this release (#27842)
  • Large transactions (> 4kB) are no longer broadcasted to peers. This resolves a potential network congestion issue (#27618)
  • The p2p networking layer has learned to announce alternate ports returned by UPnP/NAT-PMP (#26359)
  • The p2p server now properly tracks all peer goroutines (#27887)
  • Networking initialization now really disables all discovery when --nodiscover is used (#27518)
  • Obsolete parts of the LES protocol implementation, which is currently non-functional, have been removed (#27737)
  • Discovery bootstrap nodes will now be filtered by the netrestrict setting, like all other nodes (#27701)
  • We now provide additional metrics around p2p dialing, making it poss...
Read more

Krogam DMZ (v1.12.0)

25 May 10:02
e501b3b
Compare
Choose a tag to compare

Geth v1.12.0 is a potentially breaking change, hence it was deemed to deserve version bump, to 1.12.

The v1.12 release family drops support for proof-of-work, and thus can not be used any more on PoW-based private chains, or as an upstream library for projects depending on ethash PoW (#27178, #27147).

In our GraphQL API, a breaking change is that all numeric values are now encoded as hex strings (#26894). The internal GraphQL UI was updated to version 2.0. (#27294).

Regarding our move from leveldb to pebble, Geth now defaults to use Pebble as a backend if no existing database is found (#27136). If a previous LevelDB database exists Geth will keep using that, and if you must have LevelDB for some compatibility reasons, you can force it in Geth with the --db.engine=leveldb flag.

We have made progress on "EIP-4844: Shard Blob Transactions" (#27257, #27256, #27155, #27049), beacon light sync (#27292), and path-based state storage (#27176, #26813) but neither is finished as of yet.

Other improvements:

  • Add block overrides to eth_call (#26414)
  • Make batched state-test execution possible (#27318)

Assorted bugfixes:

  • Do not ignore null address while iterative dump (#27320)
  • Fix flatCallTracer crasher (#27304)
  • Prevent pebble shutdown-panic (#27238)
  • Make websocket use default "HTTP_PROXY" by default (#27264)
  • Make eth_estimateGas use latest block by default (#24363)
  • Add txHash field on txTraceResult (#27183)
  • Fix crash on querying finalized block (#27162)

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


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

Azimir (v1.11.6)

20 Apr 18:17
ea9e62c
Compare
Choose a tag to compare

Geth v1.11.6 is a maintenance release, fixing some minor issues and adding some log management features.

Log management

Log rotation has landed in geth, via (#26843). Log rotation can be activated using the flag --log.rotate. Additional parameters that can be given are:

  • --log.maxsize to set maximum size before files are rotated,
  • --log.maxbackups to set how many files are retailed,
  • --log.maxage to configure max age of rotated files,
  • --log.compress whether to compress rotated files

The location the logfile(s) can be configured as previously, using the --log.logfile parameter.

A new log output format, logfmt was added (#27001, #26970). It can be enabled using --log.format, which currently supports the options json, logfmt or terminal. (Thus, the --log.json option is now deprecated).

And finally, the flag --vmodule was renamed to --log.vmodule (#27071).

Assorted

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


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

Erszbat (v1.11.5)

21 Mar 08:05
a38f410
Compare
Choose a tag to compare

Geth v1.11.5 enables the Shanghai upgrade on Wednesday, April 12, 2023 10:27:35 PM UTC

The Shanghai upgrade contains the following EIPs:

⚠️ In order to be able to follow the chain through the upgrade on Wednesday, April 12, 2023 10:27:35 PM UTC, this upgrade is required. ⚠️

Notable changes:

  • Enable Shanghai at 1681338455 unix time (#26908)
  • Improve error message on bad blocks (#26870)

Minor changes and bugfixes

  • Preparatory changes for path-based storage (#26763)
  • Changes needed use overlay protocols in discv5 (#26699)
  • Add support for encoding uint256.Int in RLP (#26898)
  • Fixed a bug where local transaction would be rejected with -32000, future transaction tries to replace pending when send out of order (#26930)
  • Reject keywords safe or pending over RPC pre merge (#26862
  • Fix file permissions on admin_exportChain (#26912)

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


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

Vana (v1.11.4)

10 Mar 19:03
@fjl fjl
Compare
Choose a tag to compare

This is a security release of Geth, improving resilience of the transaction pool against certain kinds of DoS attacks. These attacks have recently been observed in testnets.

Notable changes:

  • TxPool validation rules have been tightened to defend against certain DoS attacks. The new checks are based on research by @dwn1998, @wangyibo0308, @ZhouYuxuan97, @tristartom, @fs3l. Thank you for your report and cooperation! (#26648)
  • EIP-712 signing in Clef now recognizes all primitive types of Solidity. (#26770)
  • EF bootstrap nodes on MS Azure have been removed because they will be decommissioned soon. (#26828)
  • The core.Message type has been changed from interface to struct and types.Message (in core/types) has been removed. This is a breaking API change in core/types. We believe the removal should not cause additional disruption for downstream projects because types.Messages had no meaningful use outside of package core. (#25977)
  • core.BlockGen has a new Timestamp method. (#26844)

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


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