Geth v1.9.16 is another maintenance release containing a couple minor new features, bug fixes, and block processing optimizations.
This release adds the --rpc.txfeecap
geth option, which limits transaction fees to a set value. This limit applies to transactions sent via eth_sendTransaction
. The default limit is 1 ether. (#21212)
The default value for --rpc.gascap
is now 25M gas. It previously defaulted to unlimited gas. This applies to eth_call
and will reject calls which request more gas than the cap. (#21229)
Minor new features:
- You can now run the metrics HTTP server on a separate endpoint. (#21290)
- Protocol message metrics now count the number of messages in addition to bandwidth. (#21256)
- The
geth import
command now exits with status 1 if errors have occurred. (#21244) - The
debug_traceTransaction
RPC method now includes read storage entries in structlog output. (#21204) - cmd/evm: add state transition tool for testing (#20958)
- cmd/devp2p: the devp2p tool now contains a test suite for Discovery v4 (#21163)
- cmd/devp2p: the new
devp2p key
command family provides node key management tools (#21202) - cmd/ethkey: you can now use the
--passwordfile
option with theethkey generate
command (#21183)
Optimizations:
- The EVM now uses the 'uint256' library, improving the performance of math-heavy calls. (#20787, #21206)
- The LES server no longer queries the checkpoint contract for every peer connection, reducing CPU usage. (#21285)
- The gas price oracle now requires significantly less bandwidth when using the light client. (#20409)
- The RLP encoder allocates a lot less, especially for
big.Int
,[N]byte
and list-heavy data structures. (#21291, #21274) - The github.com/golang/snappy dependency has been updated and includes a couple new new optimizations, including an assembly language implementation for arm64. (#21237, #21304)
- crypto, core/types: less allocations when hashing and tx handling (#21265)
- trie: reduce allocations in insertPreimage (#21261)
- crypto/secp256k1: enable 128-bit int code and endomorphism optimization (#21203)
- core/state: avoid escape analysis fault when accessing cached state (#21192)
Bug fixes:
- A long standing bug related to internal fast sync restarts is resolved. (#21260)
- Account management methods no longer crash when the external signer is enabled. (#21279)
eth_call
now defaults to the gas cap value instead of MaxInt64. This avoids warnings for calls with unspecified gas. (#21284)- Geth now builds and runs on DragonflyBSD (#21275, #21241)
- Package ethclient and the accounts/* package tree no longer depend on the RPC API implementation package. (#21319)
- eth/downloader: fixes data race between synchronize and other methods (#21201)
- utils: fix ineffectual miner config flags (#21271)
- eth: returned revert reason in traceTx (#21195)
- core/vm: fix incorrect computation of BLS discount (#21253)
- eth: don't block if transaction broadcast loop fails (#21255)
- core/rawdb: fix high memory usage in freezer (#21243)
- core/rawdb: swap tailId and itemOffset for deleted items in freezer (#21220)
- cmd, node: dump empty value config (#21296)
- internal/web3ext: add missing params to debug.accountRange (#21208)
- accounts/abi: make GetType public again (#21157)
For a full rundown of the changes please consult the Geth 1.9.16 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.