Skip to content

Releases: ethereum/go-ethereum

Marljeh (v1.9.25)

11 Dec 08:11
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.25 is a maintenance release.

Notable changes in this release:

  • Geth has a new subcommand, geth version-check, which displays known security issues (#21859)
  • The geth --ws.origins flag now supports more expressive origin rules (#21481)
  • Recording of trie key preimages can now be disabled using the --cache.preimages flag (#21402)
  • The accounts/abi/bind package now offers replay-protected transaction signing (#21356)
  • The GraphQL API now always returns status code 400 if there is an error processing the query (#21882)
  • The devp2p nodeset filter command can now find snap-enabled nodes (#21950)
  • The eth protocol test suite has been extended with tests for transaction announcements and malicious announce behavior (#21857, #21792)
  • Support for 'retesteth' has been removed from geth since it is no longer used for tests. Its replacement, the evm t8n tool, was released in Geth v1.9.16 (#21861)
  • We now offer signify/minisign signatures for Geth binary downloads as an alternative to PGP. This is experimental, and not yet advertised on the downloads page (#21798)

Bug fixes:

  • A crash in LES server handling of the GetProofsV2 message is resolved. See CVE-2020-26264 advisory for more information (#21896)
  • The LES server no longer locks up during geth shutdown (#21927)
  • Clef now correctly derives accounts for Ledger Live devices (#21757)
  • The faucet now ignores URL query parameters in Facebook post URLs (#21838)
  • Light client peer discovery now uses DNS (#21906)
  • go mod vendor of go-ethereum should now work (#21735)
  • The peer connection acceptor doesn't hot-spin anymore when geth runs out of file descriptors (#21878)
  • Using the reexec option for tracing RPC methods no longer crashes the RPC handler (#21830)
  • common.Hash and common.Address now print as hex when using fmt.Println (#21834)
  • A rare deadlock in Discovery v5 message dispatch is fixed (#21858)
  • Failures in internal CPU metrics collection no longer crash geth (#21864)
  • In Go contract bindings generated by abigen, the Raw field of parsed events is now set correctly (#21807)

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


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

Akantha (v1.9.24)

12 Nov 20:16
cc05b05
Compare
Choose a tag to compare

Geth v1.9.24 is a security release. It is built with Go v1.15.5, fixing CVE-2020-28362, which has a critical impact for Ethereum. This release also contains a fix for a consensus issue related to mining, which would have triggered a chain split on January 1st 2021.

We recommend everyone to upgrade to this release or rebuild with Go 1.15.5.

Although we publish pre-built binaries for many platforms, certain systems may not have Go 1.15.5 available yet. Notably, our official Docker images will most probably not use Go 1.15.5 due to the base image not being updated yet. Please check the end of the release notes on how you can build your custom Docker image with Go 1.15.5.

If you are building geth from source, please ensure you are building with Go v1.15.5 or above. We do recommend using the latest Geth version, but if you are not mining and cannot upgrade to geth v1.9.24, please rebuild your current version with Go v1.15.5.

Other changes in this release:

  • Add YOLOv2 testnet definition (#21509, #21745, #21747, #21749).
  • Include the RETURNDATA field to VM traces (#21715).
  • Add fuzz targets for the new stack trie code (#21799).
  • Small optimizations in transaction root derivation (#21728).
  • Further polishes on the black-box eth protocol tester (#21782).
  • Maintain one more snapshot diff layer in preparation of pruning (#21730).
  • Prevent serving snap sync data while snapshot not fully generated (#21682).
  • Implement TAP output for p2p protocol test suites (#21760).
  • Improve snapshot recovery to allow resuming generation after a crash (#21594, #21775).

Fixed bugs in this release:

  • Fix ethash mining DAG generation for >4GB files (#21793, #21803).
  • Fix a snapshot data corruption if it crashes mid generation (#21804).
  • Fix transaction indexing to better support graceful shutdowns (#21331).
  • Fix a regression that cause the console to terminate on Ctrl+C (#21660).
  • Fix an RPC crash caused by an invalid AccountRange request (#21710).
  • Fix a peer disconnection issue between unsynced LES servers (#21761).
  • Fix an abigen regression that silently discarded an EVM error (#21743).
  • Fix Ledger version parsing to correctly detect data-sign support (#21733).

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


You can use the following Dockerfile to build a custom Geth image with Go 1.15.5 while upstream base images get pushed (they usually take quite a few hours):

# Build Geth in a stock Go builder container
FROM golang:1.15-alpine as builder

RUN apk add --no-cache make gcc musl-dev linux-headers git bash

# Temporarily pull a custom Go bundle
ADD https://golang.org/dl/go1.15.5.src.tar.gz /tmp/go.tar.gz
RUN (cd /tmp && tar -xf go.tar.gz)
RUN (cd /tmp/go/src && ./make.bash)
ENV PATH="/tmp/go/bin:${PATH}"

ADD . /go-ethereum
RUN cd /go-ethereum && make geth

# Pull Geth into a second stage deploy alpine container
FROM alpine:latest

RUN apk add --no-cache ca-certificates
COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/

EXPOSE 8545 8546 30303 30303/udp
ENTRYPOINT ["geth"]

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

Tupari (v1.9.23)

15 Oct 10:31
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.23 is a maintenance release containing security fixes. This update is recommended for all users.

Security issues fixed in this release:

  • Mining no longer stops due to sync after the first successful sync round (#21701)
  • Peer-to-peer client names are now truncated in logs to prevent log spam (#21698)

Other changes in this release:

  • go-ethereum now implements Node Discovery Protocol v5.1 (#21647)
  • The cmd/faucet utility now uses DNS discovery to find LES servers (#21636)
  • Various issues with web3.js console functions are resolved (#21639, #21608, #21629)
  • HTTP/WebSocket upgrade negotiation is more robust (#21646)
  • The 'eth' peer-to-peer protocol test suite now works with more client implementations (#21615)
  • TxPool error handling for invalid transactions is improved (#21683)
  • It is now possible to create BigInt objects from Java using the mobile framework (#21597)
  • The mobile framework build now includes geth-sources.jar, enabling JavaDoc auto-completion (#21596)
  • The Görli testnet bootnode list has been updated (#21659)
  • Clef: the new account_signGnosisSafeTx API method helps with transaction signing using Gnosis Safe (#21593)
  • Clef: account_list requests now work even when when no wallets are present (#21677)

Optimizations:

  • The new StackTrie implementation is now used for the tx and receipt root hash calculation (#21407, #21699, #21643, #21692)
  • The bloom filter implementation in core/types is now faster and more correct (#21624)
  • The bloombits trie generator is also much faster (#21625)
  • Block header hashes are cached more aggressively in the downloader (#21678)

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


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

Noverian Rum (v1.9.22)

28 Sep 08:24
c71a7e2
Compare
Choose a tag to compare

Geth v1.9.22 is our usual maintenance release, fixing a few bugs and adding some minor features:

  • Add gpo.maxprice CLI flag to override the upper limit of the automatic gas price suggester (#21531).
  • Add BlockNumber method to ethclient to support retrieving the head block's number (#21500).
  • Extend the call tracer to include additional contextual fields for SELFDESTRUCT (#21549, #21564).
  • Unexpose port 8547 from docker images as GraphQL was merged with HTTP RPC (#21556).
  • Support retroactively setting Petersburg if it coincides with Constantinople (#21473).
  • Support gas estimation against arbitrary blocks, not just pending (#21545. #21601).
  • Extend database inspection results with item counters too beside size (#21495).
  • Dynamically move fast pivot point even during chain sync phase (#21529).
  • Start implementing network protocol testers (#21598, #21603, #21604).
  • Support flexible range proofs for snap sync (#21484. #21199, #21250).
  • Extract rlpx into it's own package for easier protocol tests (#21464).
  • Minor API polishes in the Java mobile framework (#21580).
  • Add fuzzer suite for ABI encoding and decoding (#21217).

Bugfixes:

  • Print warning if Whisper is present in the config.toml instead of rejecting (#21544).
  • Handle miner suspends/resumption due to sync more gracefully (#21536, #21547).
  • Fix a light client regression that crashed the node after a sync failure (#21537).

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


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

Tavum (v1.9.21)

09 Sep 08:25
0287d54
Compare
Choose a tag to compare

Geth v1.9.21 is a regular maintenance release, the highlights being the removal of whisper, better call tracing and multiple memory stability fixes during fast sync to both stabilize usage as well as to fix a memory leak that lead to crashers before.

  • Remove Whisper as promised a couple months ago (#21487, #21526, #21527)!
  • Minor user experience polishes around legacy Ledger derivation paths (#21517).
  • Implement arbitrary call tracing via debug_traceCall on top of arbitrary blocks (#21338).
  • Expose internal transaction revertals and revert reason in the call_tracer tracer (#21387).
  • Cap the number of in-memory trie nodes during fast sync, fix crasher memory leak (#21491).
  • Prepare the trie syncer for path-based operation to support the upcoming snap sync (#21504).
  • Limit the cached data in the downloader more aggressively to avoid memory fluctuations (#21366).
  • Fix the simulated chain to not allow changing block timestamps if transactions were included (#21334).
  • Fix an ABI parser issue around tuples (#21501).

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


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

Paragade (v1.9.20)

25 Aug 14:23
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.20 is another maintenance release containing bug fixes and security enhancements. This update is recommended for all users.

Please note that reverting to Geth v1.9.19 or prior after upgrading to v1.9.20 is not possible without a resync because the blockchain database layout has changed.

New Features:

  • You can now query the Chain ID using GraphQL (#21451)
  • The evm command can now appends the TX hash to state transition output files (#21406)

Bug Fixes & Optimizations:

  • Blockchain rewinding and chain repair, i.e. using the SetHead operation, now behave
    correctly in all cases. An extensive test suite for chain repair has been added. (#21409, #21409)
  • Discovery DHT bootstrapping now works properly in very small private networks. (#21396)
  • Contract code is now stored separately from state tree data in LevelDB. This change will
    help with future database upgrades. (#21080)
  • Two additional metrics counters for blockchain reorgs have been added. (#21420)
  • Metrics collection is now lock-free, causing less lock contention among peer connections (#21446, #21470)
  • The GetNodeData operation in the eth peer-to-peer protocol now uses the fast-sync bloom filter
    to speed up request processing. (#21445)
  • Importing block data during fast-sync now performs significantly fewer database reads. (#21468)

Build Changes:

  • This release is built with the new and shiny Go 1.15 compiler version (#21466)
  • The Ubuntu PPA now contains builds for Ubuntu 20.10 Groovy Gorilla. Ubuntu 19.04 Disco
    Dingo is no longer supported. (#21461)

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


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

Red Janey (v1.9.19)

11 Aug 11:13
3e06419
Compare
Choose a tag to compare

Geth v1.9.19 is our regular biweekly maintenance release. Apart from the numerous bug-fixes however, it also ships a more deterministic transaction sort order during mining (FIFO). The goal is to reduce front-runner spam which abused miner randomness for transactions at the same price level.

  • Sort same-priced transactions by arrival time during mining to reduce front-running (#21358).
  • Persist the trie read cache on shutdown to speed up warmup time after a reboot (#20391).
  • Swap out the block fetcher of les/x to use the same mechanism as eth/6x (#20692).
  • Support setting custom HTTP headers on RCP clients e.g. for authentication (#21392).
  • Refactor node lifecycle management, merge GraphQL onto HTTP endpoint (#21105).
  • Print enode ID of a node too when doing an ENR dump via devp2p (#21270).
  • Trim the build paths to avoid leaking builder infos into the binaries (#21374).
  • Limit concurrent UPnP requests to avoid crashing certain routers (#21390).

Bugfixes:

  • Fix a potential data corruption by leaking out txpool internals into the miner (#21159).
  • Avoid a light server doing EVM calls during handshake while it's syncing (#21425).
  • Fix the trie clean cache size calculation if snapshots are disabled (#21416).
  • Revert an optimization regression in the JUMPDEST analysis (#21411).
  • Fix EIP 712 structured data signing corner cases (#21306, #21307).
  • Fix round-trip time calculation in the downloader (#21427, #21429).
  • Fix a panic in ethstats on the Görli stats page (#21404, #21434).
  • Fix a hang in the initial fast-sync's state sync phase (#21433).
  • Fix graceful LES server shutdown (#21426).

Note, if you were using GraphQL previously, it was moved to the HTTP RPC endpoint. The old --graphql.host and --graphql.port flags will not work any more. You might need to adjust your TOML config files accordingly too.

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


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

Illium Elite (v1.9.18)

27 Jul 12:00
f538259
Compare
Choose a tag to compare

Geth v1.9.18 is a bugfix release, fixing an occasional fast sync hang in the throttling mechanism (among other improvements):

  • Memory allocation micro-optimizations to improve raw EVM number crunching by 5% (#21336).
  • Fix a regression that made previously persisted --dev chains unable to load back up (#21352).
  • Support configurable developer account (and passphrase) in --dev mode (#21301).
  • Fix downloader throttling that degraded sync and occasionally locked it up (#21263).
  • Fix local gomobile building and fix iOS framework builds (#21361, #21362).
  • Fix stale transaction eviction bug, stabilizing pool churn (#21300).

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


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

Mount Milgrom (v1.9.17)

20 Jul 13:02
748f22c
Compare
Choose a tag to compare

Geth v1.9.17 is a small maintenance release (trying to get back onto the biweekly schedule), though it does pack a few punches as well!

  • Enable historical garbage collection for light clients (#19570).
  • Apply --rpc.txfeecap to a few missed endpoints (#21231).
  • Drastically reduce allocations in the transaction pool (#21328).
  • Drastically reduce allocations on certain EVM opcodes (#21222).
  • Raise the default gas limit in --dev mode to 12 million (#21323).
  • Fix ethstats reconnect issue and fix constant Görli drops (#21347).
  • Fix gas estimation if balance / price overflown uint64 (#21346).

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


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

Ryncol (v1.9.16)

10 Jul 10:41
@fjl fjl
Compare
Choose a tag to compare

Geth v1.9.16 is another maintenance release containing a couple minor new features, bug fixes, and block processing optimizations.

This release adds the --rpc.txfeecap geth option, which limits transaction fees to a set value. This limit applies to transactions sent via eth_sendTransaction. The default limit is 1 ether. (#21212)

The default value for --rpc.gascap is now 25M gas. It previously defaulted to unlimited gas. This applies to eth_call and will reject calls which request more gas than the cap. (#21229)

Minor new features:

  • You can now run the metrics HTTP server on a separate endpoint. (#21290)
  • Protocol message metrics now count the number of messages in addition to bandwidth. (#21256)
  • The geth import command now exits with status 1 if errors have occurred. (#21244)
  • The debug_traceTransaction RPC method now includes read storage entries in structlog output. (#21204)
  • cmd/evm: add state transition tool for testing (#20958)
  • cmd/devp2p: the devp2p tool now contains a test suite for Discovery v4 (#21163)
  • cmd/devp2p: the new devp2p key command family provides node key management tools (#21202)
  • cmd/ethkey: you can now use the --passwordfile option with the ethkey generate command (#21183)

Optimizations:

  • The EVM now uses the 'uint256' library, improving the performance of math-heavy calls. (#20787, #21206)
  • The LES server no longer queries the checkpoint contract for every peer connection, reducing CPU usage. (#21285)
  • The gas price oracle now requires significantly less bandwidth when using the light client. (#20409)
  • The RLP encoder allocates a lot less, especially for big.Int, [N]byte and list-heavy data structures. (#21291, #21274)
  • The github.com/golang/snappy dependency has been updated and includes a couple new new optimizations, including an assembly language implementation for arm64. (#21237, #21304)
  • crypto, core/types: less allocations when hashing and tx handling (#21265)
  • trie: reduce allocations in insertPreimage (#21261)
  • crypto/secp256k1: enable 128-bit int code and endomorphism optimization (#21203)
  • core/state: avoid escape analysis fault when accessing cached state (#21192)

Bug fixes:

  • A long standing bug related to internal fast sync restarts is resolved. (#21260)
  • Account management methods no longer crash when the external signer is enabled. (#21279)
  • eth_call now defaults to the gas cap value instead of MaxInt64. This avoids warnings for calls with unspecified gas. (#21284)
  • Geth now builds and runs on DragonflyBSD (#21275, #21241)
  • Package ethclient and the accounts/* package tree no longer depend on the RPC API implementation package. (#21319)
  • eth/downloader: fixes data race between synchronize and other methods (#21201)
  • utils: fix ineffectual miner config flags (#21271)
  • eth: returned revert reason in traceTx (#21195)
  • core/vm: fix incorrect computation of BLS discount (#21253)
  • eth: don't block if transaction broadcast loop fails (#21255)
  • core/rawdb: fix high memory usage in freezer (#21243)
  • core/rawdb: swap tailId and itemOffset for deleted items in freezer (#21220)
  • cmd, node: dump empty value config (#21296)
  • internal/web3ext: add missing params to debug.accountRange (#21208)
  • accounts/abi: make GetType public again (#21157)

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


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