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 tracing now supports additional callbacks for entry and exit of contract calls, improving performance if tracing 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 private Clique-based networks, zero-length extradata 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', just like eth_sendTransaction. (#23476)
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)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/ethereum/go-ethereum from 1.10.8 to 1.10.9.
Release notes
Sourced from github.com/ethereum/go-ethereum's releases.
... (truncated)
Commits
eae3b19
params: release go-ethereum v1.10.9 stable3a6fe69
eth/protocols/snap, trie: better error-handling (#23657)42bc194
graphql: add storage slots to access list (#23650)a541fbe
eth/protocols/eth: simplify peer known block/txs caches (#23649)3531ca2
eth/tracers: avoid unsyncronized mutations on trie database (#23632)92c5d10
accounts/abi/bind: check event signature before parsing (#23230)783e97e
core/rawdb: avoid unnecessary receipt processing for log filtering (#23147)ab2caae
eth/tracers: implement debug.intermediateRoots (#23594)443afc9
core/state: move state account to core/types + abstracted "write account to t...ac7baea
eth/tracers: re-write of 4byte tracer using enter/exit (#23622)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)