Geth v1.13.0 is a major milestone in the lifetime of Geth, bits and bobs being in development for around 6 years now. Since a release note cannot do it justice, please see our Geth v1.13.0 release blog post.
Still, just to quickly recap, Geth v1.13.0 finally ships a new database model which supports proper, full pruning of historical states; meaning you will never need to take your node offline again to resync or to manually prune. The new database model is optional for now (you need to enable it via --state.scheme=path
) and does require resyncing the state, since we need to store it completely different (you can keep your ancients, no need to resync the chain too).
The path database will become the default eventually, but for safety reasons, we're keeping it opt-in for the moment. The old database model is not going away soon, though long term - unless there's something fundamentally wrong with the path db - it will. As for archive node users, we're working on a new model there too, but it does need a bit more work on top, so that's for another release.
The all important disclaimer: Geth's new path-based storage is considered stable and production ready, but was obviously not battle tested yet outside of the team. Everyone is welcome to use it, but if you have significant risks if your node crashes or goes out of consensus, you might want to wait a bit to see if anyone with a lower risk profile hits any issues.
Apart from the pruning work, the release contains:
- Built in support for the Holešky (Holešovice) testnet (#28007).
- Index transactions even if no blocks are received (#27847).
- Expose Geth version metadata into the metrics (#24877).
- Optimise
eth_estimateGas
to do fewer runs (#27710). - Add
eth_getBlockReceipts
RPC API call (#27702). - Support unpacking Solidity panic events (#27868).
- Reject GraphQL block queries where both number and hash is specified (#27876).
- Increase batch limits for RPC calls on the authenticated endpoint (#27924).
- Optimise logging library to avoid expensive call stack lookups (#28069).
And bugfixes:
- Fix forkid computation for genesis-merged non-zero timestamp networks (#27895, #28034).
- Fix a potential data race in the websocket ping/pong mechanism (#27733).
- Fix js tracers to return the gas price in base 16, not base 10 (#27903).
- Fix finalized block number in dev (
--dev
) mode (#27886).
For a full rundown of the changes please consult the Geth 1.13.0 release milestone, though do note that the state scheme changes and pruner have been gradually merged over the past year so are not explicitly tagged in this 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.