Attican Beta (v1.10.9)
Geth v1.10.9 is a maintenance release containing mostly bug fixes.
Chain tracing has received quite a bit of attention during this release cycle. JS-based tracing now supports additional callbacks for entry and exit of contract calls, improving performance if processing individual opcodes is not needed.
Geth command changes
- The 'evm' command has a new subcommand for testing tx decoding. (#23494)
- 'evm t8n' now calculates and returns block difficulty. (#23353, #23507)
- Legacy flags
--rpc
,--rpcaddr
,--rpcport
, etc. are no longer supported. (#23358) - Legacy debugging flags
--pprofport
,--pprofaddr
, etc. are also no longer supported. (#23368) - When initializing Clique-based private networks, zero-length extradata in genesis.json now prints an error message instead of crashing. (#23538)
Go library changes
- Contract bindings created by accounts/abi/bind now validate log event signatures. This prevents accidentally decoding events with the wrong signature. (#23230)
- A crash in accounts/abi when decoding struct-typed Solidity return values is resolved. (#23573)
- Writes to the ancient database are now batched internally for improved performance. (#23462)
- Multiple data races in transaction pool code are fixed. (#23474)
- Comprehensive benchmarks for RLP encoding/decoding of consensus types have been added. (#23190)
- RLP encoding of slices and arrays is slightly faster. (#23467)
rpc.BlockNumber
now implements encoding.TextMarshaler. (#23324)- The
Account
type has been moved from package core/state to core/types. (#23567) - For crypto/cloudflare/bn256 EC curve, in-place addition and unmarshalling now works correctly. (#23419)
- A very rare crash in the background 'bloombits' indexer is resolved. (#23437)
RPC/GraphQL changes
- JS tracing of EVM execution now provides additional callbacks for call entry/exit. Using these callbacks instead of 'step' can yield a 10-100x tracing speedup if you don't need to process every VM opcode. (#23087)
- The '4byte' built-in tracer now uses enter/exit. (#23622)
- A state database corruption bug caused by tracer re-execution of old blocks is resolved. (#23632)
- The new
debug_intermediateRoots
method computes per-transaction state roots of a block. (#23594) - EVM memory and return data are no longer captured by default when tracing. (#23558)
- EVM execution is now aborted on the server side when tracing is interrupted. (#23580)
- Broken WebSocket connections are now detected better and their subscriptions report an error instead of hanging indefinitely. (#23556)
personal_sendTransaction
now supports both "input" and "data" arguments, just likeeth_sendTransaction
. (#23476)- Log filtering performance is improved. (#23147)
- Transaction access lists returned by GraphQL are now correct. (#23650)
- The
debug_stacks
method now supports an optional filter expression. (#23605) - For clique blocks returned by RPC, the "miner" field once again contains the actual block coinbase field instead of the derived block signer. This fixes a regression where clients would no longer be able to verify the block seal signature. (#23466)
Networking
- The eth/65 peer-to-peer protocol is no longer supported. Geth only supports eth/66 as of this release. (#23456)
- The cross-client eth protocol tests suite better distinguishes eth/65 and eth/66. (#23568)
- ENR sequence numbers are now initialized as a timestamp. This prevents issues when the p2p nodes database is dropped/re-created while keeping the nodekey the same. (#19903)
- Several data races are resolved in packages p2p and p2p/enode. (#23434)
- Note: to simplify the ongoing rewrite of eth/downloader, the package has been duplicated temporarily. The additional copy will be removed later. (#23561)
Build
- This release is built with Go 1.17. (#23464, #23465, #23468)
- 32 bit builds of Geth should be fully functional again. (#23543, #23542)
- We no longer publish .deb packages for Ubuntu 20.10 Gorilla because this version is not supported by Launchpad anymore. (#23470)
- The 'node' package no longer depends on wallet backends. Specifically, this removes the dependencies on libusb for contract bindings and other uses of the go-ethereum library. If you are using package node, you must now register required account manager backends individually. (#23019)
- The 'metrics' package, and many packages that depend on it can now be compiled for WebAssembly. (#23449)
- EVM performance tests no longer run on CI. (#23304)
For a full rundown of the changes please consult the Geth 1.10.9 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.