Skip to content

Mental Focuser (v1.15.6)

Latest
Compare
Choose a tag to compare
@fjl fjl released this 25 Mar 11:25

🚧 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: the movePrecompileTo 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 method EstimateGasAtBlock (#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: