Skip to content

Releases: ethereum/go-ethereum

Exodus Cluster (v1.10.5)

14 Jul 08:06
33ca98e
Compare
Choose a tag to compare

Geth v1.10.5 enables the London hard fork for the Ethereum mainnet at block #12965000, estimated for the 4th of August, 2021. Reiterating the London hardfork summary from our previous release (note, extended):

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 mainnet activation block number for the London hard fork. (#23176)

  • 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 miner tips 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. You can use the miner_setGasLimit RPC API to update the target without downtime, but be aware that this does not survive a restart. The previous --miner.gastarget flag is deprecated post London and its value will be ignored.

    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.

  • For wallet providers: The default transaction price calculation algorithm for EIP-1559 (eth_maxPriorityFeePerGas) follows the old mechanism, setting the max priority fee to the effective price paid on the network minus the current base fee; and setting the max fee to the priority fee + 2x base fee. This ensures that the total price paid per gas remains the same after the London transition if no explicit user involvement has been made.

    Alternatively, Geth exposes a new eth_feeHistory(blocks, head, percentiles) API endpoint which allows the user to query recent statistical infos about the amount of tips paid to miners and fees burned by transactions. Wallets are recommended to use this endpoint to give users multiple fee options to choose from (#23033).

  • Note for JSON-RPC users: eth_sendTransaction and eth_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 or newer in your application's go.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 the BaseFee field of the latest block header is non-nil.

Other changes in this release:

  • Expose contextual infos (block/tx hash, tx index) into the transaction tracer (#23104, #23108).
  • Implement fee history API for better 1559 transaction price suggestions (#23033, #23178).
  • Implement clique_getSinger API for deriving the miner on Clique neworks (#22987).
  • Implement txpool_contentFrom API for retrieving txs of a single account (#22992).
  • Implement miner_setGasPrice API modify the mining gas limit on the fly (#23134).
  • Create new gethclient package for accessing Geth specific RPC APIs. (#22977).
  • Increase the downloader's scratch space to better saturate fast links (#23074).
  • Introduce a mechanism to deprecate config file fields without errors (#23118).
  • Remove the notions of a block hash from the state db (#23126).
  • Improve opcode tracing speed by around 80% (#23016).
  • Sanity check the length of the baseFee field (#23171).
  • Shorter shutdown time for the trie syncer (#23020).
  • Avoid some memory allocations in Clique (#23149).
  • Better build constraints for the fuzzers (#23089, #23137).
  • Alternate builders for docker images (#23069, #23078, #23082, #23083).
  • Remove make as a Dockerfile dependency (#23167).
  • Remove the deprecated LogforStorage type (#23173).

And of course, the various fixes:

  • Fix a panic in the access list creation RPC API (#23133).
  • Fix transaction queries in GraphQL when backed by a light client (#23052).
  • Fix the tracer to correctly decide if a contract is a precompile or not (#23097).
  • Fix transaction submission for the personal namespace post 1559 (#23179).
  • Fix an ethstats regression that caused transaction counts to not report (#23159).
  • Fix a compatibility issue between old Geth nodes and new abigen code (#23102).
  • Fix a light client hang if the chain is reverted to before the trusted CHT (#23162).
  • Fix incorrect file permissions for the transaction pool local journal (#23090).
  • Fix a context error when calling certain APIs with invalid params (#23062).
  • Fix puppeth dashboard caused by an updated base image (#23168).
  • Fix a shutdown hang in light client mode (#23139).

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


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

Read more

Voyager Cluster (v1.10.4)

17 Jun 10:37
@fjl fjl
Compare
Choose a tag to compare

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 and eth_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's go.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 the BaseFee 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 and debug_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...
Read more

Maroon Sea (v1.10.3)

05 May 11:22
@fjl fjl
Compare
Choose a tag to compare

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 like eth_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:

Kepler Verge (v1.10.2)

08 Apr 11:05
@fjl fjl
Compare
Choose a tag to compare

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 the geth 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 and miner_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 and admin_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:

Gemini Sigma (v1.10.1)

08 Mar 09:35
c2d2f4e
Compare
Choose a tag to compare

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:

Pangaea Expanse (v1.10.0)

03 Mar 16:59
@fjl fjl
Compare
Choose a tag to compare

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 and cumulativeGas queries now return an integer instead of a hex string. (#22126)
  • The gasLimit and gasUsed 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 and types.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 field SyncFromCheckpoint, 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 the VerifySeal method. (#22274)
  • The rpc.Client.ShhSubscribe method is now deprecated. (#22239)
  • Package accounts/keystore now uses github....
Read more

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: