π§ Note: we are investigating an issue with this release that affects archive nodes (--gcmode=archive).
If you are running Geth in this mode, please hold off upgrading. π§
This is a feature release, with two exciting upgrades:
-
Log filtering in Geth receives a huge performance upgrade with the introduction of our new 'filtermaps' index. Unlike the previous 'bloombits' index, query performance no longer suffers as the density of logs in a block increases. The new index design is also a step towards a future where filtering results can be proven by the server. See the PR and associated design documents for more information.
In practical terms, the new index is a bit larger than the old one. As before, you can choose the amount of historical blocks to be indexed using the
--history.logs
command-line flag. We have adjusted the default value of this flag to cover one year of history, and the resulting index has a size of ~10GB for Ethereum mainnnet. Indexing of the entire chain with--history.logs=0
will take up ~61GB.Once the index is built, searches will be fast, but note that querying outside of the indexed block range will fall back to a very slow unindexed search. We will continue optimizing log searches in future releases, and welcome your feedback and bug reports in this area. (#31065, #31079, #31080, #31081, #31419, #31429, #31450, #31463, #31455)
-
abigen v2 is finally here. abigen is a tool for creating Go bindings for Solidity contracts. In v1, the generated bindings presented an API for sending transactions, filtering logs, and performing read-only calls as Go methods on the contract object. In the new version, we have updated the interface of the generated code to focus purely on encoding and decoding ABI payloads. Generic helper functions are provided in a library package to enable the same interactions as before, but you can also use your own custom method of signing & sending transactions. Generated bindings are also significantly smaller. (#31379)
Other changes in this release:
RPC
- A regression in
eth_sendRawTransaction
- where transactions with too-low nonce would be accepted by the API - has been fixed. (#31473) eth_call
/estimateGas
RPC methods will now always return error code 3 for reverts. It previously only returned this code when the EVM produced revert data. (#31456)eth_simulateV1
now returns a correct logs bloom value in the simulated block (#31411)eth_simulateV1
supports block overrides for the beacon root and withdrawals (#31304)debug_traceCall
: themovePrecompileTo
override feature should now work correctly (#31348)debug_traceCall
and other related RPC methods now hex-encode the EVM return value. This is a breaking change. (#31216, #31445)ethclient
has a new methodEstimateGasAtBlock
(#27508)
Geth
- Support for the Hoodi testnet has been added. (#31406)
- The beacon chain light client has been updated to support the Electra fork. (#31243, #31470)
geth import
now properly handles Ctrl-C interrupts (#31360)geth --dev
mode will now pre-fund all precompile accounts supported by the Pectra upgrade (#31342)geth --dev
now respects the--miner.pending.feeRecipient
flag (#31316)
Core library
- The performance of transaction signature validation has improved significantly (#31242, #31258, #31434)
- The transaction pool has seen some correctness and performance improvements. (#31430, #31307, #31332)
- We have added a lot of preliminary changes for History Expiry (EIP-4444). There shouldn't be any user-facing consequences of these just yet, just reporting it here since this area was a big focus this cycle. (#31424, #31355, #31362, #31383, #31365, #31117, #31356, #31384, #31393)
For a full rundown of the changes please consult the Geth 1.15.6 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.