Releases: ethereum/go-ethereum
Voyager Cluster (v1.10.4)
Geth v1.10.4 is a feature release and adds compatibility with the upcoming London hard fork. For more information about the content and scheduling of the fork, please check the [London specification document].
After a long R&D process, and extensive testing, we are pleased to announce that Geth v1.10.4 enables [snap sync] by default. At the time of this release, geth is able to fully synchronize the Ethereum mainnet in approximately 7 hours (using AWS i3.2xlarge with NVMe SSD).
London Fork EIPs
- [EIP-1559]: Fee market change for ETH 1.0 chain (#22837, #22888, #22970)
- [EIP-3198]: BASEFEE opcode (included in EIP-1559 changes)
- [EIP-3529]: Reduction in refunds (#22733)
- [EIP-3541]: Reject new contracts starting with the 0xEF byte (#22809)
- [EIP-3554]: Difficulty Bomb Delay to December 1st 2021 (#22840, #22870)
Additional notes about the London changes
-
This release contains testnet activation block numbers for the London hard fork. The numbers are: Ropsten - 10499401, Goerli - 5062605, Rinkeby - 8897988. (#23041)
-
This release does not contain automatic activation of the fork on mainnet. A release containing the mainnet activation block will be provided later, following the ACD decision.
-
As with all previous fork-related releases, we have added an override flag which can be used to set the activation block. This flag is temporary and will be removed some time after the fork has successfully activated on mainnet. (#22822, #22972)
-
The Geth transaction pool has been redesigned in order to handle the new fee market created by EIP-1559. Our new pool design attempts to cater to the demands of users—timely inclusion of transactions—as well as allowing efficient ordering of transactions by their effective mining reward. You can read more about how the new pool functions in the [transaction pool design document]. (#22898)
-
For miners: The transaction selection algorithm provided by geth specifically picks transactions with the highest effective reward. If a minimum price is configured using the
--miner.gasprice
command-line flag, transactions providing less fees will not be included in blocks. (#22896, #22995)EIP-1559 also changes the gas limit voting system. After the London fork, the block gas amount available for transactions is adjusted based on demand. The block capacity is called the gas target, and EIP-1559 defines this target as half the gas limit.
To ensure that the gas available for transactions is the same as before the fork, the gas limit is doubled at the fork block. If you are using the
--miner.gaslimit
flag to participate in voting, you need to double the value of this flag to keep voting for the same value as before.Example: You are using
--miner.gaslimit
to vote for a limit of 20M, and the actual block gas limit is 20M. When London activates, the block gas limit will adjust to 40M, but you will still be voting it down towards to 20M if you keep using the same--miner.gaslimit
setting. So at some point after the fork, you need to double your--miner.gaslimit
value to ensure the gas limit stays at 40M gas. -
Note for JSON-RPC users:
eth_sendTransaction
andeth_fillTransaction
will create EIP-1559 transactions by default after the fork has activated. -
Note for users of Go/Java/ObjC contract bindings:
accounts/abi/bind
will create EIP-1559 transactions automatically after the fork. To take advantage of EIP-1559 in Go applications, please remember to update the go-ethereum module dependency to v1.10.4 in your application'sgo.mod
file. (#23038) -
Note for users of ethclient: If you send transactions using the ethclient package and want to take advantage of the new fee model provided by EIP-1559, you must adapt your code to create transactions using
types.NewTx(&types.DynamicFeeTx{...})
. In order to know whether the fork has activated and the new transaction type can be used yet, simply check whether theBaseFee
field of the latest block header is non-nil.
Command changes
- For private networks and future public testnets, the initial EIP-1559 basefee can also be set in genesis.json using the
baseFeePerGas
key. (#23013, #23039) - The Clef tool also supports signing EIP-1559 transactions. (#22966)
geth --dev
no longer allocates excessive amounts of memory on startup. (#22949)- The geth
--ethstats
option now supports special characters such as@
in the node name portion of the URL, specifically so you can put your Twitter handle in there. (#21640) geth db inspect
now properly counts internal config data stored in leveldb instead of warning about it being 'unaccounted'. (#22978)- There is a new
geth snapshot dump
command for debugging purposes. (#22795) - Geth can no longer read databases created before April 2019. (#22852)
- The
--jspath
flag can now expand~
to the home directory. (#22900) - Puppeth can no longer deploy the wallet web page for you. (#22940)
- The evm tool now exits in error if JSON data provided on stdin is invalid. (#22871)
RPC/GraphQL changes
- JSON-RPC and GraphQL APIs have been extended for EIP-1559, following the [official OpenRPC specification]. (#22964, #23010, #23028, #23027, #23050)
- You can now configure the lower bound of gas prices returned by
eth_gasPrice
using the new--gpo.ignoreprice
command-line flag of geth. (#22752) - JS tracing via
debug_traceTransaction
anddebug_traceBlockByNumber
will no longer crash geth if the tracer function result object exceeds duktape's JSON object limits. (#22857) - The internal argument object representations of
eth_call
,eth_sendTransaction
,eth_estimateGas
have been unified because their fields are very similar. This change should not lead to any differences in behavior, but do let us know via GitHub issues if you find any new argument handling bugs in those methods. (#22718, #22942) - The 'catalyst' API handler now properly reverts the effects of failed transactions when creating a block. (#22989)
Networking
- Snap sync is enabled by default! (#22973)
- Snap sync now tracks peer latency/capacity and adjusts request sizes accordingly.
(#22876, #22943) - The RLPx wire protocol implementation has been optimized, reducing memory allocations and system call load. (#22899)
- The eth protocol cross-client test suite has been further extended and is more reliable. (#22843, #22535, #22957)
- Spurious warning logs about failure to 'unregister' eth peers are gone now. (#22908)
- DNS discovery no longer crashes when geth is started and immediately shut down again. (#22906)
- A long-standing issue in the validation of eth/64 fork IDs is resolved. (#22879)
Go library changes
- Package rlp now supports optional struct fields. This feature was added to simplify the EIP-1559 implementation, but is also generally useful in other contexts. (#22832, #22842)
- RLP encoding/decoding has been optimized for reduced memory allocations and better performance under high concurrency. (#22858, #22902, #22924, #22927, #22841)
- On shutdown, the database now waits for background ancient store writes to finish, f...
Maroon Sea (v1.10.3)
Geth v1.10.3 is a maintenance release, containing bug fixes and performance improvements.
The performance of the snapshot system has been a big focus in this release cycle.
Generating a snapshot after a snap sync is approximately 10 times faster.
Geth command changes
- Several race conditions in database access are resolved, reducing the potential of database corruption (#22739, #22728)
- Large numbers in log messages now have thousands separators (#22665, #22679)
- Geth no longer warns about database upgrades when starting with an empty database (#22803)
- The new
geth db freezer-index
debugging command prints the contents of a freezer table (#22633) geth --dev --datadir ...
works again (#22738)- Geth now includes the experimental
--catalyst
mode for eth2 merge testing (#22641, #22697, #22770) - Puppeth now supports using ssh-agent for authentication (#22634)
Go library changes
- State snapshot generator performance is much improved in this release (#22667, #22470, #22504)
- It is no longer possible to upgrade snapshot databases generated by pre-Berlin geth (#22663)
- The RPC client now returns non-2xx HTTP responses as
rpc.HTTPError
(#22677) - The ethash engine now performs less database lookups when verifying uncle headers (#21467)
trie.StackTrie
has been refactored to improve API semantics. StackTrie methods previously took ownership of key/value byte slices passed to it, which was unintuitive for calling code (#22673, #22686, #22685)
RPC/GraphQL API changes
- The gas price oracle deals much better with blocks containing transactions of very low price. Such transactions are typically generated by miners using MEV techniques (#22722)
eth_hashrate
works again (#22765)debug_traceCall
now supports state overrides likeeth_call
(#22245)- EVM Tracing now reports correct gas costs for EIP-2929 state access (#22702)
- Clef and the external signer account backend now support signing of EIP-2930 access list transactions (#22585)
Networking
- Support for eth/64 has been removed. The minimum protocol version is now eth/65 (#22636)
- The core of snap sync has been re-architected to allow for dynamic request sizes (#22668, #22777)
- Several other correctness issues in the snap sync client are resolved (#22678, #22789, #22760, #22762, #22761)
- DNS discovery for the snap protocol now uses the eth protocol node list. The snap-specific node list will be retired later. This is possible because more than 75% of all eth nodes support serving snap (#22808)
- For eth and snap, the protocol handlers now report additional metrics about response latency (#22608, #22751, #22753). A Grafana dashboard incorporating the new metrics is available here.
- Several new tests have been added in the cross-client eth protocol test suite. The tests are now more reliable and run as part of pull request CI on Travis (#22698, #22630, #22757, #22749, #22754, #22801)
- The discv5 message handler now reflects IPv4-in-IPv6 addresses correctly when handling PING (#22703)
- The DNS node list tools in cmd/devp2p now support setting a size limit for node lists. This was added because the list of mainnet snap protocol nodes overflowed our AWS Route53 account (#22694, #22695)
Build
- The Windows build environment has been cleaned up and updated to use GCC 10 (#22811, #22788, #22804, #22821)
- The crypto/bn256 and crypto/bls12381 packages are now fuzz-tested against gnark-crypto (#22755)
- go-ethereum now builds correctly on OpenBSD/arm64 (#22693)
For a full rundown of the changes please consult the Geth 1.10.3 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.
Kepler Verge (v1.10.2)
Geth v1.10.2 is a maintenance release, containing bug fixes and a few minor new features.
Geth command changes
- Mining work package notifications can now be changed to contain the complete pending block header instead of a work package array. To enable this functionality, use the
--miner.notify.full
flag (#22558) - Geth will now open chain databases in read-only mode when performing commands that should not modify the database. This fixes several cases where indexing operations and snapshot generation would run as part of commands like
geth inspect
(#22498) - Geth now supports JSON log output using the
--log.json
flag (#22341) - The
geth copydb
command has been removed because it had been broken for quite a while (#22501) - The new
geth db dumptrie
command shows the state tree entries of an account (#22563) - When exporting a chain segment using
geth export
, the end block is now validated against the chain head to prevent fatal error at the end of export (#22387) geth snapshot
commands now support setting the freezer directory using the--datadir.ancient
flag (#22486)geth snapsnot prune-state
now considers pruning successful before performing a long-running leveldb compaction. This avoids issues when the compaction process is interrupted by an abnormal exit (#22579)geth dumpgenesis
and thegeth db
commands now support the--datadir
flag and the network selection flags (--rinkeby
, etc.) (#22406, #22407)
RPC/GraphQL API changes
- The new
eth_createAccessList
RPC method allows auto-creating access lists for EIP-2718 transactions (#22604) - RPC methods
ethash_submitHashrate
andminer_hashrate
have been renamed from their previous incorrect spelling*hashRate
(#22604) - The GraphQL API now supports EIP-2718 access list transactions (#22491)
eth_chainId
now supports chain IDs larger than 64 bits (#22243)- The
admin_startRPC
andadmin_stopRPC
methods have been renamed to(start|stop)HTTP
(#22461) - In LES server RPC APIs, the node ID can now be supplied as an
enode://
URL or 32-byte hex ID (#22423) - Several bugs related to interactions between chain tracing and the snapshot system are resolved (#22473, #22333, #22629)
- Tracing now reports correct gas amounts for EIP-2718 transactions (#22480)
Go library changes
- TransactOpts of accounts/abi/bind now support the NoSend option, which prevents sending the transaction. This can be used with Go contract bindings to 'dry-run' the binding (#22446)
- The Ledger USB wallet backend now supports EIP-712 'typed data signing' (#22378)
- Several critical issues related to state snapshot handling are fixed in this release (#22540, #22582, #22551)
- Background transaction indexing no longer fails for EIP-2718 transactions (#22457)
- The InfluxDB metrics reporter no longer reports spurious zero values when a histogram has not been updated since the last report (#22590)
- LES metrics have been renamed to avoid issues in the Prometheus reporter (#22459)
- The ethstats client no longer crashes when Geth exits immediately after starting (#22587)
- A rare crash in RPC client subscription handling has been fixed (#22597)
Networking
- Several bugs in the implementation of snap sync are fixed in this release, but it is still considered experimental and not yet enabled by default (#22596, #22513, #22553, #22591)
- When metrics are enabled, the 'eth' protocol handler now measures the latency of message handling (#22581, #22586)
- The DNS discovery client was fixed to avoid hot-spinning when a DNS node trees contains many invalid/incompatible ENRs (#22566)
- The DNS discovery deployer tool has been updated to resolve some long-standing bugs. Publishing of large trees is now much more efficient because needless updates are avoided, and better batching means the deployer waits less for the server. The tool now uses the latest AWS and CloudFlare SDK versions. (#22572, #22538, #22537, #22588, #22360)
- The branch factor of DNS discovery trees has been reduced to ensure that all TXT records fit into the 512-byte limit of DNS/UDP packets (#22533)
devp2p nodeset filter -les-server
was fixed to deal with the new format of the "les" ENR entry (#22565)- The cross-client test suite of the 'eth' protocol has been improved a bit, and now skips eth/66 tests when the node under test does not support protocol version 66 (#22460, #22508, #22482, #22474)
- LES connection pre-negotiation via UDP now works correctly (#22451)
For a full rundown of the changes please consult the Geth 1.10.2 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.
Gemini Sigma (v1.10.1)
Geth v1.10.1 is a minor release with the sole purpose of enabling the Berlin hard-fork! This hard-fork takes a step towards making opcodes fairer and lays the groundwork to new types of transactions, with lots of interesting features to be built on top.
The Ethereum Foundation will have a dedicated blog post for Berlin. The essential parts from Geth's perspective is that v1.10.1 is required for Berlin on all testnets and the mainnet too. Below you can find the fork blocks for the different networks and their expected schedules. Please ensure you are upgraded well in advance of the forks to ensure a smooth transition.
- Ropsten 9,812,189 (10 Mar 2021)
- Goerli 4,460,644 (17 Mar 2021)
- Rinkeby 8,290,928 (24 Mar 2021)
- Mainnet 12,244,000 (14 Apr 2021)
For a full rundown of the changes please consult the Geth 1.10.1 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.
Pangaea Expanse (v1.10.0)
After three months of development, we are proud to announce the Geth 1.10.0 release, which is the first release in the 1.10 series.
There are a lot of new features in this release. While we review the highlights and list individual changes in this overview, we also invite you to read the Geth 1.10 release blog post, which explains the changes in more detail.
State snapshot system
In this release, the new snapshot mechanism is enabled by default. Snapshots provide O(1) access to state during EVM execution and also serve as the backbone of the snap sync and state pruning features. Note: should you run into any issues with snapshots, they can still be disabled using the --snapshot=false
command-line flag. (#22280, #22177, #22288)
Snap sync
This is a new sync mode, which is a replacement for 'fast sync'. In snap sync, the node downloads Ethereum state data much more efficiently than fast sync ever could. With snap sync, we can also finally provide a progress indicator for the state download. Since this is a new feature, and few peers will support snap sync initially, snap sync is not yet enabled by default. We will make it the default in a couple of weeks. (#21482, #22171, #22235, #22272, #22334)
Berlin fork support
As of Geth 1.10.0, all EIPs scheduled for the Berlin hard fork are supported in Geth. However, due to ongoing debates about the content and timing of the fork, this release does not activate Berlin at any block number.
The following Berlin EIPs were already implemented in Geth 1.9.x:
- EIP-2929: gas cost increases for state access opcodes
- EIP-2315: simple subroutines for the EVM
In Geth 1.10.0, support for the following EIPs has been added:
- EIP-2565: modexp precompile gas cost changes (#22213)
- EIP-2718: typed transaction envelope (#21502)
- EIP-2930: access list transactions (#21502)
We have also updated to the latest consensus tests. (#22009, #22290)
Offline state pruning
We have finally added a way to remove old state from the database. Using the geth snapshot prune-state
command, you can instruct geth to rebuild the database from the stored snapshot while discarding any data that isn't part of the snapshot window of 128 blocks. Note that this feature is experimental. The pruning process takes a lot of time and geth cannot be used while it is running. We hope to improve this in future releases. (#21724, #22386, #22291, #22294)
Database changes
Geth 1.10.0 contains some changes which remove unnecessary data in the blockchain database. In particular, Geth no longer keeps transaction inclusion info for all transactions, and instead limits the storage of inclusion records to one year. For application developers, this change means that very old transactions can no longer be accessed by hash. Note: if you would like to
disable this behavior and keep inclusion information for all historical transactions, you can re-enable indexing using the --txlookuplimit=0
command-line flag. (#22293, #22419)
Storing trie key preimages is now disabled by default. This data is mostly used for contract debugging, e.g. in remix. You can re-enable storing preimages using the --cache.preimages
flag. (#22350)
eth/66 protocol
Geth now supports eth protocol version 66, which adds request IDs. While the new protocol version is supported on the server side, Geth does not use request IDs yet. (#22241)
We have also added a cross-client test suite for the new protocol version in the devp2p
tool. (#22363)
les/4 protocol
Geth 1.10.0 updates the light client protocol to version 4. The new protocol version uses the eth2 Discovery v5 DHT, has better support for servers which can't serve old transactions, and adds support for EIP-2364 ForkID in the handshake. (#21909, #22321, #22357, #22343, #22125, #22347, #21940, #22349, #21930)
Geth command changes
- We have fully removed many deprecated command-line flags. (#22263)
- Geth will now terminate gracefully when the disk is almost full, to avoid database corruption. (#22103)
- Geth now tracks unclean shutdowns and warns you about them when starting back up. (#21893)
- Whisper-related flags have been removed. (#22421)
- USB hardware wallet support is now off by default in geth. It can be enabled using the
--usb
flag. (#21984, #22130) - Using the new
--log.json
flag, you can instruct geth to output machine-readable logs. (#22207) - Geth now provides some low-level leveldb commands for debugging. (#22014)
- Geth now has a
--mainnet
flag, which is useful for scripting. (#21932) - Geth has a new flag
--light.nosyncserve
to enable serving light clients before sync completes. This is meant to be used for testing. (#22250)
RPC changes
- Non-EIP155 transactions (i.e. transactions which are not replay-protected) are now rejected by the RPC API. Note: you can disable this restriction using the
--rpc.allow-unprotected-txs
command-line flag. (#22339) - More transaction details are logged when submitting through RPC. (#22170)
- It is now possible to configure the JSON-RPC server on a custom path prefix. (#22184)
eth_chainID
now returns an error when the chain has not activated EIP-155 yet. (#21686)- The WebSocket transport now limits RPC messages to 15MB. They were previously limited to 5MB. (#22385)
- The 'bad blocks' tracker now persists some recently seen bad blocks, so they can still
be accessed after a restart. (#21827)
GraphQL changes
We have made several backwards-incompatible changes to GraphQL APIs to better match the specification. In cases where the specification was vague, we have coordinated with the Besu development team to match their implementation.
- Receipt
status
is now returned as an integer instead of a hex string. (#22187) estimateGas
andcumulativeGas
queries now return an integer instead of a hex string. (#22126)- The
gasLimit
andgasUsed
fields in responses are now integers instead of hex strings. (#21883) - Retrieving blocks by number now works correctly. (#22153)
Go API changes
- We have added new constructor functions for transactions in package core/types:
types.NewTx
andtypes.SignNewTx
. These functions allow creating EIP-2930 access list transactions from Go code. (#21502) - The
eth.Config
type has moved to a new package eth/ethconfig. (#22205) ethconfig.Config
has a new fieldSyncFromCheckpoint
, which instructs geth to start syncing at an arbitrary checkpoint (#22123)- The event package provides a new helper,
event.ResubscribeErr
for improved logging of subscription errors. (#22191) - The
consensus.Engine
interface no longer provides theVerifySeal
method. (#22274) - The
rpc.Client.ShhSubscribe
method is now deprecated. (#22239) - Package accounts/keystore now uses github....
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.