Geth v1.12.1 is a maintenance release, albeit a rather large one, since we haven't put out a version since May. This release is a recommended upgrade for all users and contains security-related fixes.
Here's the list of changes:
Cancun fork
Development for the upcoming Cancun hard fork has been a focus in this release cycle. Do note however, that Geth v1.12.1 is not yet ready for Cancun.
We have also implemented an entirely new mempool -- the blobpool -- for EIP-4844 transactions. The new pool is backed by an on-disk database and has an overall simpler design than the txpool we use for regular transactions. The blobpool is not yet used by p2p networking and is still being tested in the Cancun devnets. (#26940, #27429, #27463, #27481, #27790, #27822)
EIP-6780: 'SELFDESTRUCT only in same transaction' (#27189)
EIP-1153: 'Transient storage opcodes' was already implemented and is enabled for Cancun (#27663, #27613)
Geth command changes
The Rinkeby testnet is no longer supported in Geth (#27406)
geth --dev now simulates a PoS-based chain (#27327)
evm blocktest can now output structured logs (#27396)
Geth will now configure GOMAXPROCS based on CPU quota settings. This should improve efficiency when running in Docker containers with a CPU core limit applied. (#27506, #27814)
An IPv6 listening address for can now be configured for HTTP/WS (#27628) (#27635)
RPC/GraphQL API changes
JSON transactions now have a yParity fields, as mandated by the RPC API spec (#27744, #27882)
Legacy transactions now have a chainID field in RPC responses, like all other transaction types (#27452)
Block headers returned by RPC no longer report a non-standard size field (#27347)
eth_estimateGas now supports state overrides like eth_call (#27845)
eth_estimateGas now handles internal chain reorgs more correctly (#27505)
eth_getProof is slight more efficient, and will now return a response in the canonical encoding even for off-spec input parameters (#27309, #27310)
eth_getTransactionReceipt now returns null when the transaction is not available. It used return an error in that case. (#27712)
debug_storageRangeAt now takes a block hash or number as parameter (#27328)
The new debug_getTrieFlushInterval method reports the internal state saving interval (#27303)
A crash in the prestate tracer is resolved (#27691)
Structured EVM logs returned by tracing now contain the returnData (#27704)
GraphQL now supports withdrawals (EIP-4895) (#27072)
Go library changes
The RPC server now enforces limits on batch requests and responses. This is a potentially breaking change. If you use batch requests with geth, and also use the go-ethereum RPC client library, we strongly recommend updating your go-ethereum library dependency as well. The new client version handles invalid batch responses way better than before. (#26681)
The RPC client has multiple new ways to test whether the transport supports real time subscriptions (#25942)
fsync is now enabled for pebble database writes (#27615, #27522)
Function calls timed by metrics will now run even if metrics are disabled (#27724, #27723)
Node.Attach no longer returns an error. This is a breaking Go API change. (#27450)
The keystore has improved verification of keys loaded from disk (#27432)
Per-level metrics are now available for LevelDB (#27643)
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/ethereum/go-ethereum&package-manager=go_modules&previous-version=1.11.6&new-version=1.12.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) 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-automerge-start) [//]: # (dependabot-automerge-end) --- 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 show ignore conditions` will show all of the ignore conditions of the specified dependency - `@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) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/hyperledger-labs/weaver-dlt-interoperability/network/alerts). </details> </td> </tr> </table>