Release notes
This release brings important stability fixes and performance improvements, including:
- Background pruning: Reduces node latency spikes when processing blocks, leading to better attestation performance on Validator nodes
- Health check: Users will now be notified about low disk space
- Memory and performance: Performance boost and memory consumption reduction due to upgrade runtime and database engine
JSON-RPC
-
Improved JsonRPC batch calls. Batch results will now be streamed. This reduces memory usage during batched calls. [#5134]
New flags are introduced to be able to limit batched calls on node:--JsonRpc.MaxBatchSize
- Limits batch size for batched JSON-RPC call. The default value is 1000.--JsonRpc.MaxBatchResponseBodySize
- Limits max response body size when using batch requests. Subsequent requests are trimmed
with an error response. The default value is 30MB.
⚠️ IMPORTANT
We noticed that this limit is enough for most of the CL clients but there are still some unexpected behaviors with Prysm client.
Working together with Prysm Developers to fix this since issue needs to be fixed on both sides, but there is simple workaround for this problem.
If you will notice in Your Prysm logs warning like:
Unable to cache headers for execution client votes" error="json: cannot unmarshal object into Go value of type []rpc.jsonrpcMessage
restart Nethermind node using--JsonRpc.MaxBatchSize
with value set to 10000.
-
New
engine_getPayloadBodiesByRange
Engine API endpoint as a part of Shanghai hardfork. Consensus clients can use this endpoint for better performance instead ofeth_getBlockByNumber
[#4939] -
Fixed logs ordering of
eth_getLogs
when blooms are disabled [#5033] -
Fixed the
trace_transaction
not to contain precompile sub-traces [#4410]
Sync & Networking
- Improved state sync performance with better parallelism. This results in performance improvement -- observed state sync executes a few times faster than before. [#4921]
- Fixed issue causing a snap sync stage on Sepolia to hang on 0% for a long time [#5059]
- Fixed edge case when sync is stuck and unable to proceed further until the node was restarted [#5055]
Pruning
- In previous versions, pruning blocks block processing which can lead to increased latency from time to time on the block. In this version, pruning is moved to a background thread. This change should reduce block processing latency spikes leading to better attestation performance on Validator nodes. [#4626]
Gnosis
- Renamed xDai to Gnosis. This includes existing chain specs and configuration files. For new nodes recommended option is now
-c gnosis
. Old-c xdai
is still supported. [#5057]
⚠️
If you want to use an existing node with a new name, you need to move the database from the old directory to the one used in thegnosis.cfg
. For example,<datadir>/nethermind_db/xdai
should be moved to<datadir>/nethermind_db/gnosis
.
Same procedure applies for archive nodes, usinggnosis_archive.cfg
config.
Runtime and database
- Updated to .NET 7 [#4889]
- Updated to RocksDB v7.7. Solves issues with syncing on specific ARM CPUs. [#5065]
Health check
Added free disk space checks for the drives configured as DB locations to prevent data corruption due to disks being full. Two configurable thresholds added [#4837]:
HealthChecks.LowStorageSpaceWarningThreshold
: The percentage of free disk space below which a warning is added to the console as well as to the health checks. The default value is 5 (5% of free space).HealthChecks.LowStorageSpaceShutdownThreshold
: The percentage of free disk space below which the client shuts down. The default value is 1 (1% of free space)
Other changes
- Added logging CPU type at startup [#5016]
- Disabled color output for CLI [#4785]
- Added Exosama network support [#5008]
- Dropped support of obsolete configurations [#5064]
- Various performance improvements (thank you @benaadams) [#5027] [#5009] [#5030] [#5079]
We'd love to hear from you, so if you encounter an issue or have any feedback, please open an issue or contact us on Discord.