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 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.9.25 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)