Releases: ethereum/go-ethereum
Marljeh (v1.9.25)
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
andcommon.Address
now print as hex when usingfmt.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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Akantha (v1.9.24)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Tupari (v1.9.23)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Noverian Rum (v1.9.22)
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 toethclient
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Tavum (v1.9.21)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Paragade (v1.9.20)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Red Janey (v1.9.19)
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 aseth/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 viadevp2p
(#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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Illium Elite (v1.9.18)
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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Mount Milgrom (v1.9.17)
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
overflownuint64
(#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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.
Ryncol (v1.9.16)
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 theethkey 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:
- Pre-built binaries for all platforms on our downloads page.
- Docker images published under
ethereum/client-go
. - Ubuntu packages in our Launchpad PPA repository.
- OSX packages in our Homebrew Tap repository.