Skip to content

Releases: ethereum/go-ethereum

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:

Spekilas (v1.11.3)

07 Mar 17:18
Compare
Choose a tag to compare

This is a minor release, fixing a couple of issues and enabling the Shanghai upgrade on Goerli at block timestamp 1678832736 (#26795).

⚠️ If you are running Goerli, this is a required update.

Minimum Go version

In accordance with our policy to only support the newest two versions of Go, we have changed the minimum required compiler version to Go 1.19 (#26803).

Pebble

In v1.11.0 we released Pebble support (guarded by the --db.engine=pebble flag). Thanks to everyone testing it! We found and fixed a few issues:

  • You can now set more than 4 GB in --cache when using Pebble. (#26776)
  • Range compaction now works correctly for Pebble. (#26771)
  • Pebble support is disabled on OpenBSD to resolve a compilation error. (#26801)

RPC changes

  • Add support for Parity-style flat traces with the new built-in flatCallTracer. (#26377)
  • The callTracer now reports a null address for failed contract creation operations. (#26779)
  • head and difficulty have been removed in admin_peerInfo responses. (#26804)

Other fixes

  • types.Receipt now contains the EffectiveGasPrice of the transaction, so you can get the true gas price using the TransactionReceipt method of ethclient. (#26713)
  • ethclient no longer panics when requesting missing blocks. This fixes a regression introduced in v1.11.2. (#26817)
  • ethclient now returns block withdrawals, if present. (#26778)
  • During building of new blocks, failed transactions no longer count towards used block gas, improving block space utilization. (#26799)
  • Faster crawling time for the DNS crawler (#26685)
  • Use the last announced finalized block instead of LES CHT for the ancient limit (#26685)
  • CPU usage metrics (geth.system/cpu/*) are more accurate (#26793)

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


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

Kite's Nest (v1.11.2)

22 Feb 12:26
Compare
Choose a tag to compare

Geth 1.11.2 (Kite's Nest) is a patch-release, fixing a couple of issues with the 1.11 release family.

  • Fix a few small engine API discordances with the spec post-Shanghai (#26696, #26722).
  • Fix unmarshalling JSON null values as a proper result instead of nil (#26723).
  • Fix dumpgenesis which failed due to a bad database key write (#26747).
  • Fix pending tx filter to return hashes, not full txs by default (#26757).
  • Fix eth_feeHistory to accept decimal blocks again (#26758).
  • Fix Ubuntu PPA builds after the Go 1.20 fallout.

Feature wise there's one change in this release: the downloader's chain sync messages are aggregated into periodic (8s) outputs instead of a log line for every batch of data imported (#26676).

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


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

Saradril (v1.11.1)

16 Feb 19:54
7696106
Compare
Choose a tag to compare

This is a patch-release, fixing a couple of issues with the major release yesterday:

  • Make our MacOS-builds work again (26653),
  • Fix some flaws related to withdrawals (Shanghai), which were detected on zhejiang testnet (#26704 [#26707],(#26707)).
  • Fix an issue where geth refused to start following a partial datadir wipe 26703

This version is ready for the Shanghai upgrade on Sepolia.


If have not already upgraded to v1.11.0, then you should also read the release notes for that version.

If you have already upgraded to v1.11.0, there is no urgency in upgrading to v1.11.1, unless you are directly affected by the issues; e.g. want to use of Sepolia.

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


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

Annos Basin (v1.11.0)

15 Feb 18:16
18b641b
Compare
Choose a tag to compare

This is a major release, containing over 300 PRs. Our original intention was to release 1.11 with path-based storage, but eventually we decided it was time to make the release without waiting for PBSS to be merged, so we can get back to a steady release schedule.

We hope to soon follow up the 1.11 release with 1.12, including PBSS.

Shanghai Upgrade Support

Most of the code for the Shanghai fork is merged into 1.11, but activation of the fork is not configured. The Shanghai protocol upgrade will contain the ability to make withdrawals from the consensus-layer (beacon chain). Withdrawals are specified in EIP-4895: Beacon chain push withdrawals as operations.

Other features included are EIP-3855: PUSH0 instruction, EIP-3860: Limit and meter initcode and EIP-3651: Warm COINBASE.

A New Database Backend

Pebble was added as a database backend to replace good old LevelDB.

LevelDB has served us very well over the years, alas, it is a one-person project where the maintainer has signaled that the project is not a priority. We have been forced to consider three options:

  1. Stick with goleveldb as long as we can, don't worry about it,
  2. Fork goleveldb (or some other database), and maintain it ourselves.
  3. Pick a different database, actively maintained by a dedicated team.

Since option one is not really a long-term solution, the choice was between two and three. Maintaining a database is a huge effort, and is not a burden we want to carry. Hence, we have been aiming for option 3, and eventually settled on Pebble.

Pebble is actively maintained by a dedicated team, and is used by other projects. We hope that this is a good long-term bet. It has performed well in our benchmark tests, we are very interested in getting feedback from actual production systems. In order to use pebble,

  • You need to be on a 64-bit system,
  • You also need to resync from scratch (with or without ancients) -- there is no migration functionality,
  • And you need to specify --db.engine=pebble initially. For subsequent runs, geth should discover pebble automatically.

Removed Features

We have removed support for the ropsten and kiln test networks. We have also removed libraries for mobile development and the puppeth tool.

The personal RPC namespace is now deprecated. In order to interact with personal APIs, you need to specifically allow it via the --rpc.enabledeprecatedpersonal command-line flag.

Support for certain legacy files configuration files was dropped. geth now will ignore these datadir files:

  • static-nodes.json
  • trusted-nodes.json

If any these are found, an error will be printed to the log. Setups using such files should use to the TOML configuration-file instead.

Backwards-Incompatible Changes

When using geth for mining or as a clique sealer, the --miner.etherbase flag now has to be be set explicitly. Previously, Geth would use the 'first' local account as etherbase automatically, but this possibility has been removed in Geth 1.11.

This change does not affect proof-of-stake networks because the fee recipient address is provided by the consenus-layer and not configured in Geth anymore.

Geth's JSON-RPC server has become more strict; the JSON-RPC spec requires the version field to be exactly "jsonrpc": "2.0". This is now verified by the server -- a change which is not backwards-compatible with non-conforming client implementations.

If you are building from source, go-ethereum now requires Go version 1.18 or later (#26160).

The callTracer includes intentional breaking changes. Please refer to the Tracing section of the release notes.

New Features

#26149 added an option to direct log output to a file. This feature has been requested a lot. It's sometimes useful to have this available when running geth in an environment that doesn't easily allow redirecting the output.

We have added a method debug_setTrieFlushInterval to make it possible to set the trie flush interval via RPC (#24785). Essentially, this makes it possible to configure the node to be more or less "archive:ish", and without restarting the node while reconfiguring it.

Geth can now set custom HTTP headers, in particular for two scenarios:

  • geth attach
  • geth commands which can use --remotedb, e.g geth db inspect

The ability to use custom headers is typically useful for connecting to cloud-apis, e.g. providing an infura- or alchemy key, or for that matter access-keys for environments behind cloudflare.

Tracing

callTracer fields gasUsed and value have changed in the following cases:

  • gasUsed of the top call frame now accounts for intrinsic gas and refunds. (#26048)
  • In case of a DELEGATECALL frame, the value which was previously null is set to the parent call's value. This is done to match EVM semantics. (#26632)

For tracing, it is sometimes desirable to capture logs triggered by a trace, when using the callTracer. For example: call USDT.transfer will trigger a Transfer(from, to, value) event. By specifying {"withLog": true}, these events will be collected. Some bugs related to tracing and gasUsed was fixed.

For prestateTracer, the result will from now on omit empty fields instead of including a zero value (e.g. no more balance: '0x'). The prestateTracer now takes an option diffMode: bool. In this mode the tracer will output the pre state and post data for the modified parts of state.

#26241 should make it easier to sign EIP-712 typed data via the accounts.Wallet API, by using the mimetype for typed data.

It is now possible to get the result for multiple tracers in one go via the muxTracer.

Filter System

Via the filter subscriptions to newPendingTransactions, one can now subscribe to the full pending transactions, as opposed to just being notified about hashes.

The keywords safe and finalized can now also be used as block range specifiers when requesting logs.

All Changes

Larger changes

Minor changes and features

Read more

Paravin (v1.10.26)

03 Nov 11:06
@fjl fjl
Compare
Choose a tag to compare

Geth v1.10.26 contains backports of bug-fixes from the main branch.

  • The JSON-RPC client no longer hangs when invalid batch results are returned by the server. (#26064)
  • A corner-case issue in the filter system is resolved. (#26054)
  • Various improvements to snap sync are included in this release. (#25831, #25694, #25666, #25651)

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

Nemata (v1.10.25)

15 Sep 16:08
69568c5
Compare
Choose a tag to compare

Geth v1.10.25 is a tiny update to flip the mainnet chain configuration to be post-merge. This disables legacy sync and will prevent Geth from even starting sync until a consensus client is attached and sends forkchoice updates. The update prevents bad PoW actors from trying to get the node to - temporarily, but annoyingly - download bad state data.

This release is optional and only affects initial sync. The release was made mostly for completeness' sake rather than out of necessity.

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


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